The most recent available syllabus for each MSE course is linked below. Courses with (C) after the title are core courses for the MSE programs. Courses with (E) after the title are elective courses offered by the MSE program. In some cases, courses are core requirements for some programs and elective for others. In addition to the following courses, students enrolled in the MSE programs can take electives from across Carnegie Mellon’s Pittsburgh campus.
17-603 Communications for Software Leaders I (C)
Communications skills are fundamental to professionals in all fields, from architecture to software engineering to zoology, because they enable the exchange of ideas and the completion of organizational goals. The ability to identify an audience, to develop clear, persuasive presentations and written documents, and to handle the complex interactions that occur in the workplace make the difference between those who participate in an organization and those who lead it. This is the first course in a two-semester sequence designed to help you build and refine your skills so that you can communicate as a leader in your professional work. Through a combination of in-class exercises, case studies, projects, presentations, and written assignments, you will assess your current skill level and build upon it. There are no prerequisites to this course, other than a willingness to keep an open mind, to give and receive feedback, and to participate in interactive in-class discussions.
Syllabus [PDF]
17-604 Communications for Software Leaders II (C)
Communications skills are fundamental to professionals in all fields, from architecture to software engineering to zoology, because they enable the exchange of ideas and the completion of organizational goals. The ability to identify an audience, to develop clear, persuasive presentations and written documents, and to handle the complex interactions that occur in the workplace make the difference between those who participate in an organization and those who lead it. This is the second course in a two-semester sequence designed to help you build and refine your skills so that you can communicate as a leader in your professional work. Through a combination of in-class exercises, case studies, projects, presentations, and written assignments, you will assess your current skill level and build upon it.
Sections A-E Syllabus [PDF]
17-611 Statistics for Decision Making (C)
Measurement and analysis play a critical role in effective and efficient software development, the construction of data driven applications, as well as providing the scientific basis for software engineering effort to be repeatable, reliable and predictable. This course combines a refresher in basic statistics with an introduction to measurement theory to enable students to define valid measurements in their domain of application.
Syllabus section A [PDF]
Syllabus section B [PDF]
17-612 Business & Marketing Strategy (C) Final offering, fall 2025. Replaced by 17-619
Organizations must protect their profitability goals through prudent investment in well-supported engineering proposals, while avoiding misdirected initiatives. Such goals are further constrained by finance, policy, and market risk. This course covers key concepts to compete in a world where cost containment, cost leadership and market share play a critical role in keeping a company competitive, as does innovation and engineering prowess.
Syllabus [PDF]
17-614 Formal Methods (C)
Scientific foundations for software engineering depend on the use of precise, abstract models for describing and reasoning about properties of software systems. This course considers a variety of standard models for representing sequential and concurrent systems, such as state machines, algebras, and traces. It shows how different logics can be used to specify properties of systems, such as functional correctness, deadlock freedom, and internal consistency.
Syllabus [PDF]
17-617 Programing Quantum Computers (E)
Students will gain familiarity with current universal gate quantum computing tools and technology. Students will also become comfortable with several QC algorithms and their implementation on state of the art quantum computer simulators and hardware.
Syllabus [PDF]
17-619 Product Management Essentials I (C)
In today’s technology-driven world, organizations want engineers to help shape great product innovations and customer experiences from the very beginning. Engineers offer a depth of knowledge of what’s possible now. When engineers clearly understand the opportunity and goals, they can stimulate differentiating innovation ideas, contribute to the bigger picture, and influence product decision-making. This course prepares technically minded students to understand and use the essential product management concepts and practices in product innovation.
Syllabus, spring 2025 [PDF]
17-622 Agile Methods (C)
Agile software development methods emphasize self-organization, adaptive planning, evolutionary development, frequent delivery and working closely with and incorporating feedback from customers throughout the development process. This course introduces students to two well-known agile methods: Scrum and Kanban, connecting these practices to established group dynamics and knowledge management theories to explain why they work and under what circumstances.
Syllabus [PDF]
17-623 Quality Assurance (C)
Engineering quality software relies on the effective selection and application of quality assurance tools and techniques. In this course, students learn to define and measure software quality, learn when and how to apply software testing, static analysis, code review, and demonstration, and they will gain experience in using modern quality assurance frameworks.
Syllabus [PDF]
17-624 Advanced Formal Methods (C optional, E)
This course builds on the introductory Formal Methods class (17-614) to cover more advanced techniques for modeling and reasoning about software systems, including abstraction and refinement, declarative specifications, advanced temporal logics, and probabilistic modeling. The course will also explore applications of modeling and analysis techniques in various domains, such as security, enterprise systems, distributed computing, and cyber-physical systems.
Syllabus [PDF]
17-625 API Design (C MSE-SS, MSE-ES) (E MSE, MSE Online)
Design patterns describe a reusable solution to a commonly recurring problem. This course will review object-oriented creational patterns for generating new objects, structural patterns for organizing and restricting access among objects, and behavioral patterns for managing inter-object communications. This course also reviews common frameworks where design patterns are used, including in the design of application programmer interfaces.
17-626 Requirements for Information Systems (C, alternate 17-627)
Software engineering requires understanding the problem, before identifying solutions. In this course, students study ways to elicit and analyze problem statements using scenarios, use cases and mockups. They begin with poorly defined problem statements, which they refine through multiple iterations and modes of expression to yield more actionable software specifications.
Syllabus [PDF]
17-627 Requirements for Embedded Systems (C, alternate 17-626)
Software engineering requires understanding the problem, before identifying solutions. In this course, students study ways to elicit and analyze problem statements for real-time systems along multiple dimensions, including concurrency, dependability and safety. This includes developing and aligning mathematical and physical models for the effective application of control theory.
Syllabus [PDF]
17-628 Emerging Opportunities in Quantum Computing (E)
Quantum computers can solve specific problems more efficiently than their classical counterparts¿in theory. But in practice, today's quantum devices are too small and noisy to run many flagship algorithms. However, with carefully crafted hardware-software-algorithm-application stacks, quantum computers can already be used as interesting scientific tools for applications including fundamental physics, chemistry, and machine learning.
In this course, we will learn about quantum applications in practice by understanding each component of a full-stack quantum computer. First, we will survey potential applications for quantum computers and identify which ones are both feasible and useful in the near-term. We will focus on applications involving simulation and machine learning, and then dive deep into relevant hybrid quantum-classical and all-quantum algorithms. Then, to achieve a deep understanding of the need for hardware-efficient algorithms, we will survey various physical platforms for quantum computers coupled with strategies for mitigating quantum errors based on fundamental concepts in quantum information theory. Throughout the course, concepts will be reinforced through practical coding exercises using modern software tools that will culminate in a final project to implement a quantum application at the cutting-edge of the field.
17-629 Product Management Essentials II (E)
Building on the customer-focused concepts from 17-619 Product Management Essentials I, this course deepens students' understanding of the business-side elements necessary for product success. It emphasizes the strategic decisions and financials that drive growth and sustain the business value of a product. Throughout this 6-unit course, students will refine the product idea developed in Product Management Essentials 1 by creating comprehensive strategies and a financial model. They will make key decisions related to product strategy, technology, marketing, and sales, with an emphasis on understanding how these choices influence one another and affect the product's financial outcomes. The course project culminates in the development of a financially-backed business case to justify further investment in the product. This course emphasizes learning-by-doing to achieve the learning objectives, enabling students to apply their knowledge to real-world scenario and develop the skills necessary to build a successful product business.
Syllabus, spring 2025 [PDF]
17-630 Prompt Engineering (E)
Students in this course will learn a brief history of large language models and learn about contemporary prompt engineering strategies and techniques. The course will cover in context learning theory with an emphasis on practice and building an intuition for prompt design and evaluation. Topics covered include chain of thought prompting, prompt tuning with hard and soft prompts, and self-consistency. Students will learn about standard prompt engineering benchmarks, evaluation metrics and calibration to evaluate the efficacy of prompt designs. Finally, the course will cover alignment and the ethics of large language models, while reviewing sample and cross-section of domain-specific applications.
Students in the course will need to purchase access to a cloud-based language model to complete coursework, which is estimated to cost $100-150. Various options exist, including GPT3.5 by OpenAI or Claude by Anthropic, as well as running T5 on a Lambda server. Class tutorials exists to guide students on how to setup and use one of these services.
Syllabus [PDF]
17-632 Software Project Management (C)
Software projects operate like temporary organizations established to achieve a one-time objective in an agreed time frame. They require the execution of interrelated, normally non-repeating activities, by multidisciplinary groups. Therefore, projects require prescriptive planning, budgeting, staffing and risk management. This course introduces student to fundamental project management techniques and tools such as activity planning, milestone planning, estimation, work-breakdown structures, critical paths.
Section B3 Syllabus [PDF]
17-633 Software Architecture: MSE (C)
Successful design of complex software systems require the ability to describe, evaluate, and create systems at an architectural level of abstraction. This course covers 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 real-world system architectures. It teaches the skills and background that students need to evaluate the architectures of existing systems and to design new systems in principled ways using well-founded architectural paradigms.
Note: This course is 12 units and is intended for students in the MSE for Professionals program. Students in the MSE Online, MSE-SS, MSE-ES, and Graduate Certificate programs should enroll in 17-635.
Syllabus [PDF]
17-634 Applied Machine Learning (E)
Autonomous and intelligent systems increasingly rely on automated decision making based on statistical models. Popular models are used for classification or prediction. This course introduces students to unsupervised and supervised machine learning in the context of software engineering, including the analysis of natural language in bug reports and mobile app reviews. Techniques covered include latent Dirichlet allocation, TF/IDF, naive Bayes, linear regression, decision trees, and random forests.
Syllabus [PDF]
17-635 Software Architecture (C MSE Online, MSE-SS, MSE-ES)
Successful design of complex software systems require the ability to describe, evaluate, and create systems at an architectural level of abstraction. This course covers 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 real-world system architectures. It teaches the skills and background that students need to evaluate the architectures of existing systems and to design new systems in principled ways using well-founded architectural paradigms.
Note: This course is 6 units and is intended for students inthe MSE Online, MSE-SS, MSE-ES, and Graduate Certificate programs. Students in the MSE for Professionals program should enroll in 17-633.
Syllabus Section A3 [PDF] Syllabus Section D3 [PDF]
17-636 DevOps: Engineering for Secure Development and Deployment (C MSE Online, MSE-SS, MSE-ES) (E MSE)
Modern computing systems are frequently hosted on the cloud. That is, they are inherently distributed systems. To appropriately build and deploy these systems developers should know not only about development tools such as container management tools but also the structure of the cloud - in particular how it utilizes virtual machines, containers and networks. They should also understand security mechanisms both in the internet and how to authorize users and maintain credentials securely. Finally, to protect the system once it is placed into production, a developer needs to know how to enable the detection of problems during execution through collection and navigation of logs produced by the system. These are the topics covered by this course.
Syllabus [PDF]
17-638 Engineering Embedded Systems (C MSE-ES) (E MSE-SS, MSE)
The purpose of this course is to understand and negotiate the factors that drive embedded systems projects including design choices, construction methods, and other practices that must be considered during architecture planning for an embedded system. Students will experience creating and analyzing a software intensive embedded system written in C and using typical industry tooling appropriate for the classroom. The course consists of lectures, weekly assignments, in class discussions, and programming projects. With respect to programming projects, students will create working systems throughout the semester using the concepts learned throughout the course including the use of real time operating systems and data structures common to the embedded domain. This course is aimed at creating software engineers capable of navigating the complex technical ecosystem required to be proficient engineers in the embedded domain. By the end of the course, students will be able to articulate methods to design and analyze the scheduling of embedded software tasks or threads that execute in priority based real-time operating systems. Students will be able to identify embedded system components of construction to ensure task synchronization, fault containment, communication, and responses to hardware-based interrupts.
17-642 Software Management Theory (C MSE Online) (E, MSE, MSE-SS, MSE-ES)
This course examines software development from an organizational perspective and is designed for students who aim to understand the relationship between business context, software development processes, knowledge creation, culture and organizational structure with the purpose of becoming change agents who manage the software development function at the business unit or department-level or above. The course highlights the need to follow good work principles in order to avoid ethical failures as evidenced by recent events.
Syllabus [PDF]
17-643 Quality Management (C)
Software engineers must consider quality during every phase of a project from inception to delivery and beyond. This class introduces the managerial challenges, including defining a quality management process, understanding the costs associated with achieving and missing quality goals, understanding tradeoffs and gaining experience using collected quality metrics to inform project-level decisions.
Section A4 syllabus [PDF]
17-644 Applied Deep Learning (E)
Neural networking has shown promise in multiple areas in artificial intelligence, including image classification, natural language processing and speech processing. Software engineers should understand the fundamentals differences in deep learning architecture and how to perform error analysis. This course introduces students to a variety of neural network architectures, including convolutional neural nets, recurrent neural nets, encoder-decoder with attention, and long-short term memory, as well as experience diagnosing and improving model performance.
Syllabus [PDF]
17-647 Engineering Data-intensive and Scalable Systems (C MSE-SS, MSE-ES) (E MSE Online, MSE)
Internet services companies such as Google, Yahoo!, Amazon, and Facebook have pioneered systems that have achieved unprecedented scale while still providing high level availability and a high cost-performance. These systems are data intensive, primarily performing data I/O and manipulation rather than computation. They often operate in the commercial space and thus the cost-performance must be profitable in real-time, around the clock. This course covers the design and construction of data intensive scalable systems, with a focus on consistency, time and synchronization. This course will teach students how deployment, monitoring, and upgrading these systems impact their design.
Section A4 syllabus • Section D4 syllabus [PDF]
17-648 Sensor-based Systems (C MSE-ES) (E MSE, MSE-SS)
There is an increasing and visible trend in adoption of new approaches to automate business processes, replacing repeatable tasks and leveraging artificial intelligence as organizations prepare to renew themselves with a new competitive advantage through efficiencies and scale in operations. Product and service delivery operations, and industrial control systems are increasingly being connected by sensors and actuators that deliver event-based data that is critical to optimizing performance. This course teaches how to design intelligent systems that work effectively in a secure and reliable manner while producing data that can be analyzed using machine learning.
Syllabus [PDF]
17-660 Designing and Managing Software Systems Platforms (E)
Platform economy has taken over many industries. It essentially has a network effect on the way services between industries are consumed. Instead of competing, businesses often leverage each others strengths to enhance their business. They engage each other in coopetition rather than competition. This course starts with discussing an overview of platform economy and its benefits. Creating software system platforms requires a different way of approaching the software development. It requires software engineers to focus on the domain and design reusable entities and services that support variety and evolvability. Domain driven design (DDD) is one of the proven approaches for identifying reusable assets. A systematic approach to designing systems using DDD techniques is dealt with in this course. To ensure robustness of the platform, it must be deployed and managed on reliable infrastructures. Incidents and outages must be dealt with efficiently. In this course the students will learn disaster recovery management. Topics such as incident investigation, RPO (Recovery Point Objective) and RTO (Recovery Time Objective) planning with respect to business goals, among others, will be discussed. Most software systems platforms today are deployed in the Cloud environment that poses additional issues. Cloud deployment and monitoring will be discussed in this course. As the software system platform goes into production, we need to have confidence in the operation of the platform. Chaos engineering addresses many of these issues by creating hypotheses on past outages and developing experiments for the possible incidents. Chaos engineering principles, techniques, and ROI will be discussed in this course.
17-671 Studio Project (C MSE)
The capstone experience for students in the MSE for Professionals program consists of three consecutive core studio courses.
- Spring: 17-671 MSE Studio I [PDF]
- Summer: 17-672 Studio II
- Fall: 17-673 Studio III
The capstone experience requires students to work in teams of 3-5 on real-world projects that are mostly sponsored by external clients. The purpose of the project is to provide a realistic, experiential opportunity for the evaluation and application of Software Engineering principles, methods, and techniques learned in the MSE program. Teams are assigned faculty mentors with extensive experience to guide students towards their client’s goals and the educational goals. At the end, the teams will have delivered a valuable software system to their clients and enhanced their ability with developing software in a principled, disciplined manner. The final project becomes part of each student’s MSE program portfolio.
17-679 Thesis Writing for Software Leaders (C MSE Online)
Expository writing is used to present facts in a manner that supports a thesis. Successful thesis writing frequently requires identifying the audience, identifying and assessing facts for their relevancy and credibility to the thesis, and ensuring that conclusions are scoped and directly follow from facts. This course will introduce students to the software engineering thesis writing process with a specific focus on reflective practice. Students will work to identify a thesis topic based on their experience and interests, they will conduct a literature review to identify related work, will engage in reflective writing and learn to critique this writing. This course is for students enrolled in the Masters of Software Engineering program who are completing a supervised thesis option.
17-691 Machine Learning in Practice (E)
As Machine Learning and Artificial Intelligence methods have become common place in both academic and industry environments many resources have focused on methods and techniques for applications. However, there are other considerations that must be addressed when deploying such techniques into practice (or production). The purpose of this course is to cover topics relevant to building a machine learning system deployed into operations. Such systems have technical requirements including data management, model development, and deployment. However, business/organizational impacts must also be considered. Machine learning systems can be expensive to produce and operate. Students will learn about trade-offs in design, implementation, and expected value.
Syllabus [PDF]
17-693 Negotiations for Software Leaders
Negotiation skills are fundamental to professionals in all fields. Indeed, a strong argument can be made that almost every interaction that humans engage in is a negotiation in one form or another. This can be particularly important in technology-related industries and positions, where individuals may find themselves negotiating a job offer, attempting to convince upper management to back a new product or project, or trying to agree on deal terms for a corporate merger or a venture capital investment. The ability to identify your goals and alternatives, to effectively engage with a negotiating partner, and to define and achieve a positive outcome is critical to success in these and numerous other endeavors — and those who excel at handling these kinds of complex and often nuanced interactions will achieve greater success for themselves and their organizations.
Syllabus [PDF]
17-695 Design Patterns
Attributes of a good quality software, among others are ease of maintenance, modifiability, extensibility, and reusability. Design Patterns, that are mined from existing well-designed software, improve quality through documented and proven solutions to common problems. Reusing good designs appropriately not only improves the quality, but also reduces the development cost. Many existing code without much documentation also can benefit by refactoring to patterns. In this course students will learn techniques to identify design problems and apply design patterns effectively to improve the quality of software. Learning will be facilitated via lectures, flip-classrooms, and a group project. Learning will also be reinforced with many in-class and homework exercises.
Syllabus [PDF]