Curriculum

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 an independent project project is required for graduation. Following is a brief semester-by-semester outline of the curriculum:

Curriculum

Fall Spring Fall Spring
Software Engineering I Software Design Software Architecture User Interface Design & Eval.
Data Modeling Software Process & QA Project Management Elective I
Industrial Seminars Software Test & Verif. Industrial Seminars Elective II
7 credits 8 credits 7 credits 8 credits

2-Year Plan


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 cr.)

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 cr.)

SENG 5899: Industrial Seminar Series

Four half-day tutorials on a variety of topics. (1 cr.) Seminars are generally scheduled on Saturdays, and are open to the public. Following are examples of past seminar topics.

  • Professional ethics for software engineers
  • Software re-engineering and maintenance
  • Legal and intellectual property issues
  • Configuration management
  • System management & computer security
  • Safety-critical systems engineering
  • Entrepreneurship
  • Technical writing
  • Software engineering in a start-up environment
Semester 2

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 cr.)

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 be 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. (3 cr.)

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. (2 cr.)

Semester 3

SENG 5851: Software Project Management

This course covers the core processes, tools, techniques and fundamentals of project management. The class covers both traditional and Agile project management methodology. At the end of the class, you will understand pros and cons of both methodologies and will know how to apply the appropriate methodology to a given situation. (3 cr.)
 

SENG 5861: Introduction to Software Architecture

Software architecture is primarily concerned with partitioning large systems into smaller ones that can be created separately, that individually have business value, and that can be straightforwardly integrated with one another and with existing systems, and that can scale independently of each other. The goal of this course is to master skills that support this partitioning. At the end of the course, a proficient student should be able to use different viewpoints to organize partitioning to support deployment, maintenance and functional extension. (3 cr.)

SENG 5899: Industrial Seminar Series

Four half-day tutorials on a variety of topics. (1 cr.)  Seminars are generally scheduled on Saturdays, and are open to the public. Following are examples of past seminar topics.

  • Professional ethics for software engineers
  • Software re-engineering and maintenance
  • Legal and intellectual property issues
  • Configuration management
  • System management & computer security
  • Safety-critical systems engineering
  • Entrepreneurship
  • Technical writing
  • Software engineering in a start-up environment
Semester 4

SENG 5115: Graphical User Interface Design and Evaluation

This class will cover the theory, design, and evaluation process for interactive application interfaces. The course is built around a design and evaluation project that is completed in groups. Topics include: human capabilities and limitations, the interface design and engineering process, prototyping, and interface evaluation. As time permits, we’ll cover topics such as ubiquitous and wearable computing, social computing, games, etc. (2 credits)

SENG 5199: Topics in Software Engineering (electives) 

Electives

Each year, second-year students vote on their choice of a set of elective offerings and may register for 1 or 2 electives in the fourth semester. All electives are worth 3 credits each. Examples of past electives offerings include:

SENG 5130: Internet of Things

Project-based examples from modern “Internet of Things” (IoT) systems. Hands-on experiments with core wireless hardware, sensors, and software elements. Students will gain the practical system-level skills and understandings able to be applied to any IoT system, and walk away with an IoT project created themselves. There will be discussions and team-centric activities focused on market trends, ground-breaking tech and products, security, communication protocols, and exciting emerging technologies related to IoT including machine learning, artificial intelligence, and augmented reality.

SENG 5199: Reverse Engineering Cyber Security

Whether you are a software or systems engineer or have a strong interest in cyber security, this class will teach portable technical skills to turn a suspect process, executable or other interpreted code, inside out. Accomplishing this requires a deep curiosity and the learned ability to disassemble compiled code, analyze network packet captures, review detailed system logs, and explore intentionally hidden or obfuscated functionality. These are essential skills for security experts as well as technical troubleshooting more broadly.

SENG 5133: Cloud Computing - Leading Technical Change

By now, just about every organization has at least a phalanx or two in the “Cloud” and it is, understandably changing the way we architect our systems. But there is a lot of confusion around cloud native, 12 factors, modular monoliths, serverless...what about on prem vs. public cloud? How does a busy technologist make sense of it all? Despite what you may have read on the Internet, there still are no silver bullets - just a set of tools that we need to apply at the right time in the right place.

SENG 5271: Data and Network Security: Theory and Practice

This course introduces the major topics of cyber security. Class time will focus on demonstrations, exercises, mini-projects, and discussions. Topics include authentication, access control, file system forensics, symmetric and asymmetric cryptography, network monitoring and controls, dynamic web site attacks, and network cryptography.

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 5709: Big Data Engineering and Analytics

This course aims to teach students how to evaluate and engineer solutions that traditional data systems cannot handle, as well as various real-world use cases related to big data problems. This course will integrate theory and hands-on learning of various big data systems like NoSQL, streaming architectures, along with popular industry tools for scalable analytics. The focus of the course is largely around big data engineering, with some coverage of data science and analytics.

SENG 5831: Software Development for Real-Time and Embedded 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.

SENG 5841: Formal Modeling and Analysis in Software Engineering

Traditionally, software development has been largely a manual endeavor. Validation that we are building the right system has been achieved through requirements and specification inspections and reviews. Verification that the system is developed to satisfy its specification is archived through inspections of design artifacts and extensive testing of the implementations.

SENG 8891: Independent Project

Students will work individually on an advanced software or research project. (3 credits)

SENG Topics: Exploring Dynamic Languages

Technology changes, it's a fact of life. And while many developers are attracted to the challenge of change, many organizations do a particularly poor job of adapting. We've all worked on projects with, ahem, less than new technologies even though newer approaches would better serve the business. But how do we convince those holding the purse strings to pony up the cash when things are "working" today? At a personal level, how do we keep up with the change in our industry?

SENG Topics: Mobile Application Development

This elective will be based around a mobile development project and will require programming. Students will be asked to choose a mobile platform and work through an application throughout the semester. The mobile application project will completed individually or in teams of two. Students can select their own application (of appropriate scope) or work through a project proposed by the instructors.

SENG Topics: Web Application Development

This is a hands-on, project-oriented course where students will learn about numerous aspects of developing modern web-based applications by actually developing systems during the course of the semester. The course will cover topics such as object-relational mapping, transactions, model view controller architectures, web services, integration, sending email, security, deployment, and web presentation layer technologies.