Carnegie Mellon University Masters in Software Engineering


The Master of Software Engineering at Carnegie Mellon University is a professional master's program founded in 1989 with the intent of developing technical leaders in software engineering practice. Originally as a joint effort between Carnegie Mellon's School of Computer Science and the Software Engineering Institute, the MSE was on the forefront of software engineering education at a time when no academic programs existed.
At the heart of the MSE curriculum is the Studio Project, a capstone project that spans the entire duration of the 16-month degree. The Studio element is unique from most software engineering programs at other universities in that the project sponsors are real-world, external industry clients, and that the projects themselves are considerably larger in scope than typical capstone projects.
Carnegie Mellon partners with other universities and software engineering departments throughout the world including in Portugal, India, and Korea in an effort to enhance software engineering education, globally. Through these partnerships, the same methods and practices used at the Pittsburgh campus are transferred to international educational partners.

History

Centered around software engineering workshops conducted at the Software Engineering Institute, the degree program's original core concepts and curriculum were developed. The original faculty included many educators who remain currently active, while others have retired or died. The latter notable individuals include Norm Gibbs and Jim 'Coach' Tomayko. Dr. Tomayko was responsible for the MSE Studio concept and remained deeply committed to the MSE program throughout his career.
A hallmark of the MSE program is that it targets software practitioners, those who are already working in the field.
Following its inception, the program has evolved to address a demand for lighter, faster software development processes, enabled by the rapid and widening adoption of the Internet. This included extreme programming, which later became part of agile methods, all of which sought to more rapidly respond to customer requirements in contrast to more deliberative, plan-driven development. In the early twenty-first century, software engineering has experienced a literal explosion of software development services and frameworks that allowed engineers to push development beyond "the release" to embody continuous development, a modern practice called DevOps. While this process evolution is perhaps unique to a special class of software, the scale and influence of these systems has led the MSE program to rethink how they teach software engineering.

Program directors

The MSE program began as a joint effort of the School of Computer Science and the Software Engineering Institute. The degree program is an intensive 16-month curriculum designed for professional software engineers. Class sizes are generally around 20 students. Applicants to the program must have a strong background in computer science, no less than two years of relevant industry experience with an average of five years of experience.
The MSE curriculum has three basic components:
  1. Core Courses develop foundational skills in the fundamentals of software engineering, with an emphasis on design, analysis, and the management of large-scale software systems.
  2. The Studio Project, a capstone project that spans the duration of the program, allows for students to plan and implement a significant software project for an external client. Inspired by the design projects in architecture programs, students work as members of a team under the guidance of faculty advisors, analyzing a problem, planning the software development effort, executing a solution, and evaluating their work.
  3. Electives allow students to develop deeper expertise in an area of speciality within the software engineering domain, or to pursue study in areas relevant to their personal and professional interests.

    Core Courses

  4. Models of Software Systems - This course considers many of the standard models for representing sequential and concurrent systems, such as state machines, algebras, and traces.
  5. Methods: Deciding What to Design - This course considers the variety of ways of understanding the problem to be solved by the system one is developing and of framing an appropriate solution to that problem.
  6. Management of Software Development - This course considers how to lead a project team, understand the relationship of software development to overall product engineering, estimate time and costs, and understand the software process.
  7. Analysis of Software Artifacts - This course considers the analysis of software artifacts—primarily code, but also including analysis of designs, architectures, and test suites.
  8. Architectures for Software Systems - The course considers commonly-used software system structures, techniques for designing and implementing these structures, models and formal notations for characterizing and reasoning about architectures, tools for generating specific instances of an architecture, and case studies of actual system architectures.

    Studio Project

Proposal based studio

Partnership Program