Carnegie Mellon University

Software Engineering Minor

The Software Engineering Minor addresses the critical industry need for professionals who possess not only programming proficiency but also the broader engineering skills required to effectively build modern software systems at scale. Recognizing that skills like precise requirements gathering; designing for competing quality attributes; making trade-offs between cost, schedule and features; ensuring quality; and effective teamwork are highly valued by employers, the minor focuses on teaching these fundamental tools, techniques and processes.

Through a curriculum that covers both engineering the software product and the essential process, management and teamwork aspects — complemented by internships and mentored projects — students gain practical understanding of the scale and complexity issues inherent in the field, ultimately graduating with the capabilities to be immediately productive in a mature engineering organization.

Admission to the Software Engineering Minor

Eligibility

The Software Engineering Minor is open to undergraduate students in any major at CMU.

How to Apply

To apply for the minor, please email the program director. Your email application must include the following information:

  • Full Name
  • Andrew ID
  • Preferred Email Address (if different from your Andrew email)
  • Expected Graduation Semester
  • Current QPA
  • Declared Majors and Minors 
    (List all, or state your home college if no major is declared yet)
  • Statement of Purpose (maximum one page) 
    Describe why you are interested in the Software Engineering Minor and how it fits into your future career goals.
  • Proposed Schedule
    Outline your plan for taking the required courses and completing the internship. Please note, this is a preliminary plan and not a final commitment.
The software engineering minor is designed to teach the fundamental tools, techniques and processes of software engineering. Through internships and a mentored project experience, students gain an understanding of the issues of scale and complexity that motivate software engineering tools and techniques. The core curriculum includes material both on engineering the software product and on the process, teamwork and management skills essential to successful engineering. Program graduates should have the technical, process and teamwork skills to be immediately productive in a mature engineering organization.
Overall, the minor requires six (6) courses and an internship. One of those courses consists of a 6-credit course that serves as a writing workshop in which the student reflects upon and integrates the lessons of the internship.
There are two required core courses in the minor degree:
  • 17-313 Foundations of Software Engineering
  • 17-413 Software Engineering Practicum

The minor requires three (3) additional elective area courses, one selected from each of the following categories. Each category includes courses that are currently approved, but other courses that fulfill the same learning objectives may also be used for each area, subject to a prior approval from the Director.

Other courses require prior approval from the Director of the Software Engineering Program. Ask before you take the course!

A domain-independent course focused on technical software engineering material.

  • 15-414 Bug Catching: Automated Program Verification and Testing
  • 17-214: Agentic Software Development. (Formerly "Principles of Software Construction: Objects, Design and Concurrency." Students who took the older version of the course may not count it as an elective for this category.)
  • 17-731: Foundations of Privacy
  • 17-355 Program Analysis
  • 17-356 Software Engineering for Startups
  • 17-423/723: Designing Large-scale Software Systems
  • 17-445: Machine Learning in Production
  • 17-480: API Design and Implementation
  • 17-653: Managing Software Development 
    (prerequisite: 17-413 or an internship)
  • Methods Elective (take both 6-unit mini courses)
    1) 17-614: Formal Methods
    2) 17-624: Advanced Formal Methods
  • Requirements Elective: Design & Marketing (take two 6-unit mini courses)
    1) 17-612: Business Marketing and Strategy
    2) Take either 17-626: Requirements for Information Systems OR 
    17-627: Requirements for Embedded Systems
  • Managing Development (take two 6-unit mini courses)
    1) 17-622: Agile Methods
    2) Another mini-course of your choice from within this larger list
  • Quality Engineering (take two 6-unit mini courses)
    1) 17-623: Quality Assurance
    2) 17-443/645: Quality Management

An engineering-focused course with a significant software component.

  • 15-410: Operating System Design and Implementation
  • 15-412: Operating System Practicum
  • 17-437: Web Application Development
  • 15-440: Distributed Systems
  • 17-422: Building User-Focused Sensing Systems
  • 15-441: Networking and the Internet
  • 15-445: Database Systems
  • 18-749: Building Reliable Distributed Systems
  • 67-443: Mobile App Development

A course that explores computer science problems related to existing and emerging technologies and their associated social, political, legal, business and organizational contexts.

  • 17-200: Ethical Dilemmas and Policy Issues in Computing
  • 17-562: Law of Computer Technology
  • 17-333: Privacy Policy, Law and Technology
  • 17-334: Usable Privacy Security
  • 17-781: Mobile and IoT Computing Services
  • 17-801: Dynamic Network Analysis
  • 17-821: Computational Modeling of Complex Socio-Technical Systems
  • 15-390: Entrepreneurship for Computer Science
  • 17-331: Information Security and Privacy
  • 19-403: Policies of Wireless Systems 
  • 70-311: Organizational Behavior
  • 70-471: Supply Chain Management
  • 88-341: Team Dynamics and Leadership

The minor requires a software engineering internship of a minimum of 8 full-time weeks in an industrial setting (i.e., integrated into a team and exposed to industry pressures). The student may work in development, management, quality assurance or other relevant positions. Students should confirm with the director that an internship is appropriate, but internships that fulfill the criteria will be accepted after the fact. Students must further complete:

• 17-415 Software Engineering Reflection (6 units)


Double Counting Rule

No more than two of the courses used to fulfill the minor requirements may be counted toward any other degree or minor. This rule does not apply to 17-214 (a prerequisite for the minor only for students who took the older version of the course) or courses counted for general education requirements.