Created by faculty from the Computer Science and Engineering Department and by industry experts, the MSSE curriculum delivers a powerful blend of software engineering theory and practice. Expect program content that is consistently cutting-edge, rigorous, and relevant. Topics include requirements engineering, project management, quality assurance, and database management systems.
The curriculum is fixed for the first three semesters. The fourth semester offers electives, including an optional independent project. A total of 30 semester credits and satisfactory performance on at least 3 class projects is required for graduation. Following is a brief semester-by-semester outline of the curriculum:
Semester 1:
- SENG 5707: Data Modeling
Hands-on course in database systems, including modeling and querying. Fundamental concepts, data models, data manipulation languages, extending data types, database design, and security and integrity policy. Application techniques for the use of database systems. Concepts practiced in design and development of database applications. (3 credits)
- SENG 5801: Software Engineering I: Overview, Requirements, and Modeling
Broad introduction of software engineering as a discipline and a preview of topics to be covered in subsequent courses in the Master of Science in Software Engineering Program; in depth study of Requirements Engineering; and an overview of various modeling techniques applicable to requirements and specification, including UML and formal modeling. (3 credits)
- SENG 5899: Industrial Seminar Series
Four half-day tutorials on a variety of topics. (1 credit) Here are a few samples of past seminar topics. Seminars are generally scheduled on Saturdays, and are open to the public.
Professional ethics for software engineers
Software re-engineering and maintenance
ISO and SEI CMM process evaluation
Legal and intellectual property issues
Configuration management
Internet commerce
System management & computer security
Safety-critical systems engineering
Software engineering in a start-up environment - SENG 5199-5: Exploring Dynamic Languages
This course will take a look at the most popular of the dynamic languages and discuss the impact they are having on the development community. We'll examine the strengths and weaknesses of each language and discuss where they might fit within an organization. Most of these languages are several years old yet only now are they enjoying any popularity - we'll talk about why.
Semester 2:
- SEng 5852: Quality Assurance and Process Improvement
Theory and application of the capability maturity model: process assessment, modeling, and improvement techniques. Life cycle issues related to development and maintenance, quality, safety, and security assurance, project management, and automated support environments. Students participate in group projects and case studies. (3 credits)
- SENG 5802: Software Engineering II: Software Design
Develop fluency in object-oriented design. We study semantics of object-oriented languages, strengths and limitations of the object-oriented approach, processes that can lead to good design outcomes, graphical and textual representations for design including UML, common problems and some of the patterns that can solve them, and refactoring. Students develop an ability to read and critique designs, and to clearly present and advocate design ideas. Students work in teams to complete a multi-phase design project.(3 credits)
- SENG 5811: Software Testing and Verification
Theoretical and practical aspects of testing software. Students participate in the entire range of test activities, from analyzing a requirements document for test conditions through executing test cases and writing a test report. In addition there will much discussion on the types of testing that should be done, who should do it, and why it should be done at all. At course completion, the student should confidently be able to organize and carry out the software testing phase for any small or medium-size software project. (2 credits)
Semester 3:
- SENG 5899: Industrial Seminar Series
Four half-day tutorials on a variety of topics. (1 credit) Here are a few samples of past seminar topics. Seminars are generally scheduled on Saturdays, and are open to the public.
Professional ethics for software engineers
Software re-engineering and maintenance
ISO and SEI CMM process evaluation
Legal and intellectual property issues
Configuration management
Internet commerce
System management & computer security
Safety-critical systems engineering
Software engineering in a start-up environment - SENG 5861: Introduction to Software Architecture
Software architecture process and artifacts. Description of architectures; evaluation of the RUP architecture process; introduction to evaluating architectures; and a short review of architectural description languages (ADLs) and architecture patterns. (3 credits)
- SENG 5851: Software Project Management
Team building and motivation, team organization. Issues faced in the management of large software development projects: cost estimation, scheduling, planning, execution, monitoring, evaluation, and refinement. Students participate in group projects and case studies. (3 credits)
Semester 4:
- SENG 5115: Graphical User Interface Design and Evaluation
Design and evaluation of interactive application interfaces, user- and task-centered approaches to design, guidelines for graphical design, a variety of interface evaluation techniques, and an overview of current interface trends including web interfaces and information visualization. Students work in groups on a course-long project that includes designing, prototyping, and evaluating an application interface. (3 credits)
- SENG 5199-5: Exploring Dynamic Languages
This course will take a look at the most popular of the dynamic languages and discuss the impact they are having on the development community. We'll examine the strengths and weaknesses of each language and discuss where they might fit within an organization. Most of these languages are several years old yet only now are they enjoying any popularity - we'll talk about why.
- SENG 5199-8: Business AnalysisBusiness analysis expertise includes a combination of knowledge, skills and abilities related to both business and to technology in order to select and use the correct tools to communicate well with both business and technology personnel. Business analysts, software engineers working with business analysts, software engineers performing analysis, business architects, system architects, data architects, project managers, and technology and business leaders must all have an understanding of business analysis, its importance, and the criteria by which various methodologies are applied in the context of a particular project or environment. Mastery of business analysis methodologies and knowledge of the principles behind these methodologies is essential for those performing these functions and to the success of software engineering. All roles in the software engineering field should have a base understanding of business analysis, or as Forrester Research puts it, they will become obsolescent.
Electives
Each year, second-year students vote for a set of elective offerings, and may register for 1 or 2 electives in the fourth semester. Examples of electives offered in recent years include:
- SENG 5511: Artificial Intelligence and Software Agents
Problems in search, logic, and game playing, first order predicate logic, inference, and knowledge representation. Definitions of "intelligent" or "autonomous" agents, agent classifications, agent architectures, and various application areas, such as electronic commerce and robotics. Includes a semester project, which may be done individually or in teams.
- SENG 5708: Data Analytics
Data Analytics is the collection of technologies that enable an enterprise to analyze its entire collection of data to extract knowledge that can help it in its day-today functions as well as strategic directions. Practically every function of the enterprise, including marketing, customer service, operations, security, purchase, etc., can benefit from it. This course provides a detailed introduction of the technologies that comprise data analytics, including data warehousing, data mining, and reporting, with a strong emphasis on applications.
- SENG 5831: Software Development for Real-Time systems
Real-time systems are systems in which a timely response by a computer to external stimuli is vital to the performance of the system's objective. We begin with basic computer architecture and hardware elements relevant to the study of real-time issues, including low-level input/output devices, interrupt controllers, and CPU cores. Next we study software design and specification methods such as flowcharts, state transition diagrams (finite state automata), and petri nets. Finally, we move on to real-time kernels, including task scheduling, interrupt latency, and communication and synchronization of tasks.
- SENG 8891: Independent Project
Students will work individually or in teams with an advisor on an advanced software or research project. (2 or 3 credits)
- SENG 5131: Distributed Application Design and Development
Coverage of common approaches to building applications using the internet and relational databases as well as integrating these applications with other systems. Students will work in teams to build a functional web application in a series of projects throughout the semester. Topics covered include transactions, object-relational mapping, model-view-controller architectures, web services, and asynchronous messaging.
- SENG 5199-5: Exploring Dynamic Languages
This course will take a look at the most popular of the dynamic languages and discuss the impact they are having on the development community. We'll examine the strengths and weaknesses of each language and discuss where they might fit within an organization. Most of these languages are several years old yet only now are they enjoying any popularity - we'll talk about why.
- SENG 5199-8: Business AnalysisBusiness analysis expertise includes a combination of knowledge, skills and abilities related to both business and to technology in order to select and use the correct tools to communicate well with both business and technology personnel. Business analysts, software engineers working with business analysts, software engineers performing analysis, business architects, system architects, data architects, project managers, and technology and business leaders must all have an understanding of business analysis, its importance, and the criteria by which various methodologies are applied in the context of a particular project or environment. Mastery of business analysis methodologies and knowledge of the principles behind these methodologies is essential for those performing these functions and to the success of software engineering. All roles in the software engineering field should have a base understanding of business analysis, or as Forrester Research puts it, they will become obsolescent.
