University of Minnesota
Master of Science in Software Engineering
/

You are here

Course Descriptions

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 either an independent project or 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

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

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)

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.

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. 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:
  • Work from stakeholder requirements to create system interfaces that support partitioning.

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

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-9: Agile Software Development

This class provides a detailed understanding of Agile Software Development, a highly-iterative, customer-focused, team-based, test-driven method for developing software. Beginning with the Agile Manifesto (www.agilemanifesto.org), we will explore the principles and fundamental concepts that drive Agile. Borrowing from many of the Agile variations (Scrum, Extreme Programming, etc.) we will explore the tangible practices that make Agile work.

SENG 5199-bb: 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.

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 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-004: Data and Network Security: Theory and Practice

In this course we will use a systematic process for analyzing security. The process is based on continuous improvement concepts, like those associated with Shewart and Deming. We will use that process to understand classic examples of non-computing security failures as well as computer- and network-based failures.

SENG 5199-2: 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 5199-5: 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 5199-8: Business Analysis

"Over the next five years business will become so deeply embodied in technology, and the technology so deeply embedded in the business, that IT will need to be managed quite differently (Forrester Research, 2007)." Five years later, we are most certainly experiencing this. In addition, business people are more empowered than ever to obtain customized and mobile technologies without leveraging their internal IT organization. Business people purchase social, mobile, and cloud technologies, outsource entire IT

SENG 5199-9: Agile Software Development

This class provides a detailed understanding of Agile Software Development, a highly-iterative, customer-focused, team-based, test-driven method for developing software. Beginning with the Agile Manifesto (www.agilemanifesto.org), we will explore the principles and fundamental concepts that drive Agile. Borrowing from many of the Agile variations (Scrum, Extreme Programming, etc.) we will explore the tangible practices that make Agile work.

SENG 5199-bb: 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 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.

SENG 5831: Software Development for Embedded and Real-time Systems

This course is an introduction to systems that sense and interact with the world in a physical way (e.g. medical devices, robots, cars, etc.). The success and safety of these systems critically depend on their ability to react to the environment in an appropriate and timely manner, thus they are referred to as real-time systems. Software development requires an understanding of system architecture, modeling, scheduling, and low-level hardware control of sensors and/or motors. In addition, real-time systems are often

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 or in teams with an advisor on an advanced software or research project. (2 or 3 credits)