Carnegie Mellon University

MS in Software Engineering

The Master of Science in Software Engineering (MS in SE) is a unique program offered exclusively at CMU’s Silicon Valley campus. It emphasizes a rigorous foundation in the core disciplines of software engineering. The program offers students fundamental knowledge, skills, and first-hand experience in software engineering by balancing theory and practice, engaging students in active learning, and encouraging collaboration on projects drawn from real-world contexts.

Our students enter the program with a strong foundation in computer science. They leave the program with a deep knowledge of software engineering.


> What is Software Engineering?
> Core Software Engineering Courses
> Research Opportunities
Networking and Career Opportunities
> Teaching Assistantships
> Program Expectations
> Application Guidelines
> Further Information

What is Software Engineering?

Despite overlaps, software engineering is not the same as computer science. Computer science focuses on the foundations of computing (e.g., algorithms, computer architecture, compilers, programming languages, operating systems, databases, machine learning, discrete mathematics). Software engineering focuses on the technical and organizational methods, practices, and tools necessary to develop complex software systems in teams.

Software engineering is about solving real-world problems through effective engineering practices spanning software requirements, interaction design, architecture, technical design, implementation, quality assurance, and delivery. Since the work is done in teams, software engineering is also deeply concerned with effective collaboration and work organization.

^Back to top

Core Software Engineering Courses

The MS in SE program does offer the possibility of taking courses in a variety of computing fields, including computer science, cyberphysical systems, mobile computing,  security and privacy, data science, machine learning, and artificial intelligence, but its main orientation is software engineering. The following are core software engineering courses:

Check the program requirements for more information about which and how many of the above courses you need to take to obtain an MS in SE.

^Back to top

Research Opportunities

ECE’s MS in SE faculty conduct research in core software engineering topics as well as complementary areas where software’s role is pivotal. MS in SE students contribute to a variety of projects pursued by the MS in SE faculty and other ECE faculty across both Pittsburgh and Silicon Valley campuses to hone and apply their skills and gain experience in a research context. MS in SE students are able to participate in research activities either for pay as graduate research assistants or for credit by enrolling in ECE’s MS Graduate Project course.

^Back to top

Networking and Career Opportunities

CMU’s Silicon Valley campus is located at the heart of a unique and rich ecosystem with the world’s highest concentration of technology organizations. From startups to giants, software is a central component of these organizations’ business models, delivery systems, and operations. Students have ample opportunities to participate in this ecosystem and Silicon Valley’s entrepreneurial culture via internships, tech talks, meetups, hackathons, and other on- and off-campus career development experiences. These experiences help our graduates build a career path with lifelong networking skills. Our graduates are competitively recruited by small and large companies alike, including Google, Facebook, Microsoft, VMWare, Amazon, IBM, Salesforce, Yahoo, SAP, PayPal, LinkedIn, Coursera, Cisco, NVidia, Tesla, Docker, and many others in the San Francisco Bay Area and high-technology centers elsewhere. Some of our students choose to develop their own business acumen through elective courses, and become entrepreneurs themselves upon graduation.

Visit the Silicon Valley career services page for professional development activities available to students. For job placement statistics, visit the Postgraduate Outcomes dashboard at the CMU Career & Professional Development Center.

^Back to top

Teaching Assistantships

Teaching assistantships are available to high-performing and interested  MS-SE students on a paid basis, typically after their first semester. Being a Teaching Assistant is a great way for students to improve their mentoring, communication, and leadership skills. Students invariably characterize their experience as Teaching Assistants as rewarding and an invaluable addition to their resumes.

^Back to top

Program Expectations


Computing Background and Experience 

We expect most applicants to have an undergraduate degree in computer science, computer engineering, or a related computing field with a sufficient number of foundational courses in computer science and focusing on software (listed below). These foundational topics are not taught in the program: we assume all incoming students have the required knowledge. While we occasionally accept exceptional applicants whose undergraduate is in a non-computing field, this is rare. If your undergraduate is from a non-computing field, we look for (1) evidence of having completed qualifying foundational courses at the college- or university-level in relevant topics (listed below), (2) evidence of significant work experience related to software development, and (3) evidence of strong interest and self-learning to fill in any gaps. Satisfaction of these expectations guarantee that the applicant, if accepted, has a fairly high chance of succeeding in the MS in SE program. It is desirable for the qualifying foundational courses to have been taken for credit as part of another degree (for example, a minor in a computing subject), but we will also accept non-credit courses taken in an extension or bridge program at an accredited higher-level education institution. Transcripts are required showing a numerical or letter grade in either case. Courses with a pass/fail grade do not qualify. 

The list of relevant foundational courses for applicants with a degree in a computing field and relevant qualifying courses for applicants with a degree in a non-computing field are as follows:

  • Algorithms and complexity
  • Data structures
  • Discrete mathematics
  • Introductory probability or statistics  
  • Computer architecture
  • Compilers
  • Operating systems
  • Databases
  • Web programming
  • Object-oriented programming
  • Programming languages
  • Courses that focus on or teach modern programming languages

Note that the last topic above emphasizes our expectation that the applicant is sufficiently familiar with multiple programming languages and paradigms. If some of the above topics are missing, the applicant should convincingly demonstrate how the gaps are filled through experience, self-learning, and extracurricular activities, addressing the gaps in detail in the essays submitted. In addition to the above, we assume that the applicant possesses (1) undergraduate-level mathematics, engineering, and science background depending on their particular field of undergraduate study; (2) comprehension skills to understand and appreciate the contexts in which complex engineering problems are solved; and (3) analytical, critical, and abstract thinking skills consistent with an engineering orientation at the graduate level.  

Applicants with Job Experience in Software Development or in a Software-Intensive Field

The MS in SE program maintains a strong practical focus without neglecting theoretical foundations. While relevant job experience is not a requirement, applicants who possess a certain level of job experience in software development, either through internships or through post-graduation employment, maximally benefit from the program. Even students with several years of post-graduate job experience benefit greatly. We emphasize that the curriculum is rigorous, and accordingly, we expect all applicants to be willing to (1) learn new skills and concepts, (2) be interested in both theory and practice to acquire a deep level of understanding in the topics taught, and (3) experiment with new ways of working that might potentially be different from what they have been exposed to during their careers.  If you are an experienced applicant who is unsure about the program’s rigor expectations, please contact the program lead. 

^Back to top

Application Guidelines

Please review the graduate applications guidelines page for recommendations on how best to prepare your application package. Please also view the following guidelines specific to the MS-SE program. Following this additional guidance is central to increasing your chances of admission to the MS-SE program:

When listing the courses you definitely want to take: During the application process, you will be asked to list the courses that you definitely want to take and that you are interested in taking (each applicant can list up to a total of 10 courses). The MS-SE admissions committee specifically looks at this list to determine an applicant's fit to the program. If you are applying to the MS-SE program as your first choice, the courses that you definitely want to take must all be selected from the list of Core Software Engineering Courses given above to meet the MS-SE program requirements, and must include the mandatory course 18-652. The courses that you are interested in taking can be selected from among the Core Software Engineering Courses or they can be any other eligible CMU course.

In your statement of purpose (SoP): Make sure to demonstrate an understanding of what software engineering is, your familiarity with the specific goals of the program, and your interest in the program’s content. If your main interest is in a specific application domain (e.g., machine learning, data science, cyber-physical systems, security, natural language processing, e-health, autonomous computing, computer vision) or in a computing field other than software engineering, discuss why the MS in SE is the right program for you. You should also explain how your main interests can benefit from a degree with core skills in software engineering. Show awareness of the differences between software engineering and other computing fields in which you have an interest.

In your curriculum vitae or resume: List software development technologies with which you are familiar, together with level of familiarity (beginner, intermediate, advanced, expert), including programming languages, frameworks, tools, main libraries, methods, development practices, and standards. Provide evidence of skills from courses or certifications taken, from research or academic projects completed, or from previous internships or jobs.

^Back to top

Further Information

If you have questions about the MS in SE program’s goals and content and to find out whether this program is right for you, contact the Program Lead, Prof. Hakan Erdogmus, at with information on your background and interests (you may add your resume to your enquiry).

For questions about the application process and administrative issues, please first explore these pages:

Additional information about the Bureau for Private Postsecondary Education (BPPE) can be found here.

^Back to top