Skip to main content
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 the university.

How to Apply

To apply for the minor, please send an email to 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 1 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.

Electives

The minor requires 3 elective courses, one selected from each of the following categories:

Technical Elective

A domain-independent course focused on technical software engineering material

  1. 15-414 Bug Catching: Automated Program Verification and Testing
  2. 17-355 Program Analysis
  3. 17-356 Software Engineering for Startups
  4. 17-480 API Design and Implementation
  5. 17-653 Managing Software Development (prerequisite: 17-413 or an internship)
  6. 17-731 Foundations of Privacy

 

Methods Elective

  1. 17-614 Formal Methods
  2. 17-624 Advanced Formal Methods

Requirements Elective

(take two 6-unit mini courses)
  1. 17-612 Business Marketing and Strategy
  2. Take Either:
    1. 17-626 Requirements for Information Systems
    2. 17-627 Requirements for Embedded Systems

Managing Development Elective

(take two 6-unit mini courses)

  • 17-622 Agile Methods
  • another mini-course of your choice from within this larger list

Quality Engineering

(take two 6-unit mini courses)

  • 17-623 Quality Assurance
  • 17-443/645 Quality Management

 

Other Courses

Applied Engineering with Software Solutions

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

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

 

Interdisciplinary Computing: Tech and Society

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

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

Required Internship and Reflection Course

A software engineering internship of a minimum of 8 full-time weeks in an industrial setting is required. The student must be integrated into a team and exposed to industry pressures. The intern may work in development, management, quality assurance, or other relevant positions. The director of the SE minor program has sole discretion in approving an internship experience based on these criteria. Students should confirm that an internship position is appropriate before accepting it, but internships that fulfill the criteria will also be accepted after the fact.

17-415 Software Engineering Reflection (required 6 unit course, to be offered Fall semester): Each student will conduct an analysis of some personal software engineering experience, typically (but not always) based on the engineering internship above. The student will then write and edit a short paper presenting this analysis. Initial course meetings will cover the reflective, writing, and speaking process. In later meetings, each student will present his or her experience through a 30-45 minute talk, which will be evaluated for communication skills and critical reflective content. This course is limited to enrollment of 16, and students who are admitted to the minor program are given first priority.

Double Counting Rule. At most 2 of the courses used to fulfill the minor requirements may be counted towards any other major or minor program. This rule does not apply to 17-214 (a prerequisite for the minor) or courses counted for general education requirements.