Courses for the Master of Science in Software Engineering

(36 hours required)

MSSE 5023     Perspectives on Software Engineering:
                           Requirements Engineering and Modeling (3)

In-depth study of requirements engineering and an overview of various modeling techniques applicable to requirements analysis and specification, including UML and formal methods.

MSSE 5033     Object-Oriented Analysis and Design (3)

In-depth understanding of object oriented approaches to software development, in particular to the analysis and design phases of the software life cycle. Modern software engineering practices including Object-Oriented Analysis and Design, Unified Modeling Language, Design Patterns, and Iterative and Agile software development processes will be studied. 

MSSE 5043     Software Architecture and Design (3)      

The process of constructing software, including the structural views of software components, and their characteristics and interrelationships, at a high level of abstraction.  The course also covers the design principles that govern the purpose, structure, development and evolution of software components.

MSSE 5113     Agile Software Development (3)

In-depth understanding of Agile Software Development, a highly-iterative, customer-focused, team-based, test-driven method for developing software. Principles and fundamental concepts that drive Agile, borrowing from many of the Agile variations (Scrum, Extreme Programming, etc.). Application of Agile's dynamic and adaptable principles within the context of an organization.

MSSE  5123    Database Modeling and Design (3)

Application of software engineering approaches in the strategy, analysis, design, implementation, verification, and validation phases of large scaled database design. Data modeling concepts using ER and UML notation.  Using data modeling concepts in the database design process.  Theory of database design through the normalization process and the functional equivalence with conceptual modeling.  The “impedance mismatch” problem.  Logical database design issues in business intelligence – data warehousing, OLAP for decision support systems, and data mining.  

MSSE 5133     Software Engineering Practicum I (3)

The software engineering practicum is intended to give participants an experience working as a member of a software engineering team developing a product for which the schedule is fixed and the scope is appropriate for the number of people working on the team. The students will be asked to serve in team roles (teams of 4-5), hold oral design reviews, and prepare documentation appropriate to their product. Software Engineering Practicum I is the first of two required MSSE Practicum courses.

MSSE 5203    Software Quality Assurance and Testing

Fundamental concepts of software quality assurance and testing. Functional testing. GUI based testing tools. Control flow based test adequacy criteria. Data flow based test adequacy criteria. White box based testing tools. Mutation testing and testing tools. Relationship between test adequacy criteria. Finite state machine based testing. Static and dynamic program slicing for testing and debugging. Software quality and reliability. Testing management techniques and support tools; team-oriented project used methods, techniques and practices learned.

MSSE 5313     Graphical User Interface Design and Evaluation (3)       

Theory, design, evaluation, and development process for interactive application interfaces.  User- and task-centered approaches to design. Variety of interface evaluation techniques, and an overview of current interface trends including Web interfaces and information visualization.  Conduct of case study for a large design and evaluation project whose topics include: human capabilities and limitations, the interface design and engineering process, prototyping, issues in interface construction, interface evaluation, and current topics such as data visualization, World Wide Web and small UI device interface issues, and social and collaborative computing.

MSSE 5323     Software Maintenance, Evolution and Re-Engineering (3)

Principles and techniques of software maintenance.  Impact of software development process on software justifiability, maintainability, evolvability, and planning of release cycles.  Use of very high-level languages and dependencies for forward engineering and reverse engineering.  Achievements, pitfalls, and trends in software reuse, reverse engineering, and re-engineering.

MSSE 5413     Software Development for Embedded and Real-Time Systems (3)

Software development requirements and understanding of system architecture, modeling, scheduling and low-level hardware control of sensors and/or motors; appreciation of the complicated development of the often safety-critical and embedded real-time systems; general concepts and techniques related to real-time scheduling, low-level hardware control, system modeling and verification, resource access and multiprocessor systems; introduction to the basic concepts and processes of system safety; how verification and fault-tolerance fit within this umbrella; and the role of regulatory agencies and certification standards.

MSSE 5423     Software Project Planning and Management (3)

Techniques and disciplines for successful management of software projects. Project planning and contracts. Advanced cost estimation models. Risk management process and activities. Advanced scheduling techniques. Definition, management, and optimization of software engineering processes. Statistical process control. Software configuration management. Capability Maturity Model Integration (CMMI).

MSSE 6113      Software Engineering Practicum II (3)

This course is a continuation of MSSE 5133 (Software Engineering Practicum I).  In addition, students will participate in the design reviews of other teams in the class.