Software Engineering (SE)


SE 500  Software Engineering Discipline  3 Credits

This course introduces students to the concepts and methods for disciplined software engineering processes. Students learn about and practice individual planning, tracking, analyzing, and managing of their time and defects, to fit the needs of small-scale program development. Students also study and use a team project process. The course provides a framework for the application and analysis of managed software engineering practices. Also discussed are the latest common and practical processes used in industry. Students will work individually and as a team to complete the course assignments.

SE 505  Model-Based Verification of Software  3 Credits

This course is concerned with engineering practices that use formalized models as a basis for analyzing software artifacts. The course covers the key software engineering skills required, surveys a variety of techniques for model building and analysis, and includes sample problems and real-world systems for discussion and analysis. Applications of the techniques in the requirements, design, and coding phases of software development are investigated.
Corequisites: SE 500.

SE 510  Software Project Management  3 Credits

This course addresses management considerations in software systems development. It provides advanced material in software planning mechanisms for monitoring and controlling projects, and leadership and team building.
Corequisites: SE 500.

SE 520  Formal Methods for Software Engineering  3 Credits

A study of mathematical logic and proof techniques, discrete structures, and other mathematical topics that are used in software engineering; the use of formal methods in software specification; and an overview of the use of formal methods throughout the software life-cycle.

SE 530  Software Requirements Engineering  3 Credits

This course is concerned with the development, definition, and management of requirements for a software system or product. Topics include the software requirements process, requirements elicitation, requirements analysis, requirements specification, requirements verification and validation, requirements management, and requirements standards and tools. Students will participate in individual and group exercises related to software requirements engineering tasks.
Corequisites: SE 500.

SE 535  User Interface Design and Evaluation  3 Credits

This course provides an introduction to designing, implementing, and evaluating human-computer interfaces of various types. The theoretical foundation for designing interfaces is complemented by practical classroom exercises and the design and development of a prototype in a team-based setting using previously learned software engineering principles. Students will become acquainted with the literature related to user interface design and with the design of experiments for evaluating user interfaces.

SE 545  Specification and Design of Real-Time Systems  3 Credits

This course addresses basic concepts and methods used in software specification and the design of real-time systems. The characteristics of real-time systems and the role of software design in software development are explored. The course reviews software design methods specifically suited for real-time systems. Selected methods are analyzed and case studies are used to illustrate the design process. The course material may require research in real-time aspects of software design, laboratory experiments with software development tools and real-time development environment, and producing appropriate reports.
Prerequisites: SE 500.

SE 550  Current Trends in Software Engineering  3 Credits

Current techniques, methods, procedures, and paradigms of software engineering are studied. Students perform literature searches, collect data from software development experiments, and prepare written and oral reports on current software engineering practices.
Prerequisites: SE 500.

SE 555  Object-Oriented Software Construction  3 Credits

This course addresses the basic concepts of object-oriented software development. It provides an integrated view of subjects related to the different phases of software development using object-oriented techniques. The course covers object-oriented analysis and design (OOA/OOD), object-oriented programming (OOP), and object-oriented testing (OOT) techniques. Also covered in the course are object-oriented metrics and case studies in object-oriented software development.
Prerequisites: SE 500.

SE 565  Concurrent and Distributed Systems  3 Credits

The objective of this course is to teach principles of software development for concurrent and distributed systems. Specification, design, implementation, and performance evaluation techniques for concurrent and distributed applications will be presented and complemented by examples and practical exercises. The various paradigms used for concurrent and distributed systems, including high performance clusters, along with the implementation issues for each will be discussed. A survey of languages suitable for implementing concurrent solutions will also be covered.
Prerequisites: SE 500.

SE 575  Software Safety  3 Credits

The objective of this course is to teach principles of software development for safety and mission critical systems. Safety-related specification, design, and implementation techniques are described and illustrated by examples and practical exercises. Principles and practices of safe software development, including a survey of programming language and operating system issues for implementing safety-related software are discussed. The course discusses safety requirements, hazard and risk analyses, fault tolerance, basics of software reliability, and issues of verification, validation, and certification. Various safety standards and guidelines across application domain and selected tools supporting safety assurance of software products are introduced. The course material may require research in development of safe systems, laboratory experiments with tools, and producing appropriate reports.
Prerequisites: SE 500.

SE 580  Software Process Definition and Modeling  3 Credits

This course provides students with the fundamental knowledge for software process definition and modeling. Software process content includes a framework for process definition and modeling, process evaluation, enactment of processes, process tailoring, and description of the process properties. Course projects include analysis of existing process and design and modeling of new processes.
Prerequisites: SE 500.

SE 585  Metrics and Statistical Methods for Software Engineering  3 Credits

This course is concerned with the topics of software measurement, statistical tools and methods, and applied experimental design in software engineering. Students will be introduced to the principles and concepts relevant to measurement in software engineering, including the representational theory of measurement, collection, analysis, and validation of data. Also studied are frameworks such as Goal-Question-Metric and Quality Function Deployment paradigms for guiding measurement efforts. Also explored are the concepts of experimental design, analysis of experiments, model building, ethics, and presentation of experiments.
Prerequisites: SE 500.

SE 590  Graduate Seminar  3 Credits

This course is a study of the current advancements in a particular field of software engineering, as determined by the instructor of the course. The course will focus on a different topic each term, depending on the varied interests of students, the graduate faculty, and the existing departmental research requirements.

SE 599  Special Topics in Software Engineering  1-6 Credit

Students may elect to perform a special, directed analysis and/or independent study in an area of particular interest. The student should submit to the department chair and graduate committee a detailed proposal of the desired project and identify a faculty sponsor.

SE 600  User Interface Design for Unmanned Systems  3 Credits

Introduction to user interfaces for unmanned systems. Approaches to human-system interactions for unmanned systems including graphical user interfaces, non-visual feedback (haptic, aural, etc.), gesture-based controls, voice-based controls, telepresence, and more. Design considerations (i.e. constraints and capabilities) for each technology area. Case studies of user interface technologies for real-world unmanned systems. Hands-on experience with one or multiple user interface technologies.

SE 610  Software Systems Architecture and Design  3 Credits

This course is concerned with the principles and concepts of engineering large software systems and programs. Software architecture is an abstraction of system details that helps in managing the inherent complexity of software systems development. Software architecture provides opportunities for early evaluation of user needs, analysis of requirements and design, and prediction of system properties. Architectural styles, views, notations, and description languages provide systematic frameworks for engineering decisions and design practices. The focus of the course is on advanced topics related to software architecture practices, technologies, and artifacts. Students participate in individual or group projects related to developing architectural representations of software systems.
Prerequisites: SE 530.

SE 625  Software Quality Engineering and Assurance  3 Credits

This course describes the overall approach to specifying software quality, achieving quality, and mapping a quality specification into a set of engineering activities. This course provides a framework for understanding the application of software verification and validation (V&V) processes and techniques throughout the software development life cycle. The course covers the economics of software quality and provides a guide to organizing a project to achieve quality both in terms of the software product and the software process.
Prerequisites: SE 530.

SE 655  Performance Analysis of Real-Time Systems  3 Credits

The objective of this course is to teach principles of performance analysis of computer systems, with a focus on real-time applications. Performance modeling and analysis techniques are described and illustrated by examples and practical exercises using elements of mathematical statistics. Principles and practices of software development to achieve required or optimal performance, including design analysis and assessment of the implementation in terms of works case execution time and schedulability, will be addressed. An actual project in instrumentation of software for performance evaluation is an essential element of this course.
Prerequisites: SE 500.

SE 660  Formal Methods for Concurrent and Real-Time Systems  3 Credits

The course includes study of the formal specification of reactive systems, temporal logic, and current research in the specification of concurrent and real-time systems. There is also discussion of verifying software designs based on formal specifications.
Prerequisites: SE 520.

SE 690  Graduate Research Project  3 Credits

This course provides the student with an opportunity to pursue a topic area of special interest. The Graduate Research Project is an individual investigation or software development effort culminating in a formal written report, requisite artifacts, and an oral presentation to the faculty. The focus is on an advanced topic in software engineering that may be theoretical or practical.

SE 696  Graduate Internship in Software Engineering  1-3 Credit

This course involves temporary professional or industrial work appointments made available to students enrolled in graduate programs at the University. An internship provides graduate students with an opportunity to extend their academic endeavors through the application of the theories and philosophies studied in the classroom to specific professional activities common to the workplace. Internships are academic/professional activities coordinated by the University between participating organizations and a graduate student.

SE 697  Software Engineering Practicum  3 Credits

The practicum is a capstone course that builds on the other core MSE courses. It consists of a faculty-mentored team software development project that extends from concept to delivery. All phases of the development life-cycle are included: requirements, architecture, detailed design, implementation, and verification and validation. Disciplined software engineering practices are used (for example, PSP, TSP, project management). Deliverables for the course are a validated functioning system, a comprehensive set of development artifacts, a final report, and a formal presentation.
Prerequisites: SE 510 and SE 555 and SE 610.

SE 699  Special Topics in Software Engineering  1-6 Credit

Students may elect to perform a special, directed analysis and/or independent study in an area of particular interest. The student should submit to the department chair and graduate committee a detailed proposal of the desired project and identify a faculty sponsor.

SE 700  Graduate Thesis  1-9 Credit

A master-level research project in Software Engineering conducted under the supervision of the student's research advisor and a thesis committee designated by the Department Chair. Submission of a final report, approved by the thesis committee, and an oral defense of the research work are required for thesis credit to be earned.
Prerequisites: Graduate Student Standing and Department Chair permission.