Software Engineering (SE) Course Descriptions

SE 500 - Mathematics for Software Engineering
Prerequisites:Admission to the program
Corequisites:None
Credits:3cr
Course Description:This course introduces students to the formal mathematical tools and methods necessary for software engineering. Topics include equational logic, propositional calculus and its applications, techniques of proof, formal logic, quantification and predicate calculus, application of predicate calculus to programming, and mathematical induction.

SE 501 - Introduction to Software Development
Prerequisites:Admission to the program
Corequisites:None
Credits:3cr
Course Description:This course serves as an introduction to the discipline of Software Engineering, involving both a study of theory and practice. Significant ideas and developments are emphasized along with an examination of terminologies, classifications, paradigms, and methodologies. The course also provides an opportunity to review essential computer science material (data structures, programming languages and environments, systems, and architectures) as appropriate within this context.

SE 504 - Formal Methods and Models
Prerequisites:SE 500
Corequisites:None
Credits:3cr
Course Description:This course is concerned with the application of mathematical techniques and models to the problem of software development. Of particular concern are means by which to develop provably correct programs.

SE 507 - Requirements Analysis and Software Specification
Prerequisites:SE 500
Corequisites:None
Credits:3cr
Course Description:Exploration of two inter-related subjects of software life-cycle-process; requirements and their specifications. Topics: Requirements analysis techniques, interview process, prototypes, types of requirements (functional, nonfunctional, reliability, quality, security, etc.), traceability, languages of specification (axiomatic, algebraic, finite state machine, abstract, operational, concurrency).

SE 510 - Principles and Applications of Software Design
Prerequisites:SE 507
Corequisites:None
Credits:3cr
Course Description:This course covers the principles, methods, and techniques used in the design of software systems. It includes architectural and detailed design with an emphasis on the object-oriented paradigm. Topics include software design process; design principles; software architectures; frameworks; design patterns; and coding idioms; design notations and support tools.

SE 515 - Software Generation and Maintenance
Prerequisites:SE 501
Corequisites:None
Credits:3cr
Course Description:Maintenance accounts for about 70% of the software system life cycle. Designing new maintainable software systems is as important as dealing with existing non-maintainable ones. Topics include: writing reusable software components, automatic code and application generators and their limitations, regression analysis, reverse engineering, etc.

SE 516 - Engineering of Software Systems
Prerequisites:None
Corequisites:None
Credits:3cr
Course Description:There is a parallel between hardware system engineering and software systems engineering. Several issues are relevant to both and in many cases they interact with each other. Topics include: system requirements gathering and specification, system design, interfaces with hardware and software systems, human-computer interfaces, system testing and integration, documentation, quality assurance, and configuration management.

SE 521 - Database Systems
Prerequisites:SE 507
Corequisites:None
Credits:3cr
Course Description:A study of both theoretical and practical aspects of database systems with an emphasis on relational database systems. Topics include DBMS architectures, entity-relationship and UML data modeling, relational data modeling, database design using entity-relationship data models, relational algebra and Structured Query Language (SQL), functional dependencies and normal forms, system catalogs, transaction processing, concurrency control, and selected advanced topics.

SE 524 - Software Project Management
Prerequisites:SE 510
Corequisites:None
Credits:3cr
Course Description:Software system development; project development; budget and human factors. Relationship between quality assurance, communication management and project documentation. Ethical and security issues.

SE 532 - Interactive and Time Critical Systems Design
Prerequisites:SE 507 and SE 510
Corequisites:None
Credits:3cr
Course Description:Real-time and embedded software systems development present a whole different set of variables to the software engineer. This course focuses on a number of design, development, and maintenance techniques for this type of system. Topics include data acquisition and generation, system design strategies, testing constraints, verification, etc.

SE 598 - Project Analysis & Design
Prerequisites:Having passed all required courses
Corequisites:None
Credits:3cr
Course Description:SE 598 and 599 is a two-semester sequence in which students are expected to undertake a software thesis project which requires the use of tools, techniques and theory learned from previous courses. It will be strongly recommended that thesis projects be developed in teams.

SE 599 - Project Implementation and Evaluation
Prerequisites:Having passed all required courses
Corequisites:None
Credits:3cr
Course Description:SE 598 and 599 is a two-semester sequence in which students are expected to undertake a software thesis project which requires the use of tools, techniques and theory learned from previous courses. It will be strongly recommended that thesis projects be developed in teams.