Software Engineering, Minor
Michael Hilton, Director
mhilton@andrew.cmu.edu
s3d.cmu.edu/education/undergrad
Software Engineering Minor
available to non-SCS undergraduate students in any major at Carnegie Mellon University
Effectively building modern software systems at scale requires not just programming skills, but also engineering skills. These skills include the ability to interact effectively with customers to gather the requirements for a system in a precise way; to develop a design that resolves competing quality attributes; to make tradeoffs among schedule, cost, features, and quality to maximize value to stakeholders; to work effectively with other engineers; and to assure the quality of the delivered software system. We hear regularly from industry that these skills are crucial to them, and that they are interested in students with a strong software engineering background.
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 that are essential to successful engineering. Graduates of the program should have the technical, process, and teamwork skills to be immediately productive in a mature engineering organization.
Admission
The Software Engineering Minor is open to non-SCS undergraduate students in any major in the university. We encourage students to submit applications no later than 3 days before the beginning of Spring and Fall course registration, so that subsequent decisions can help students plan their subsequent course schedule effectively. However, students may petition the Director for admission outside this general schedule.
To apply, send the director an email. Include in your email:
- Full name
- Andrew ID
- Preferred email address (if different)
- Semester you intend to graduate
- QPA
- All (currently) declared majors and minors, or home college if no major declared
- Statement of purpose (maximum 1 page) - Describes why you want to take this minor and how it fits into your career goals
- Proposed schedule of required courses and internship (this is your plan, NOT a commitment)
Curriculum
Prerequisite
| Units | ||
| 17-214 | Principles of Software Construction: Objects, Design, and Concurrency | 12 |
Core Course Requirements
| Complete both of the following courses. | Units | |
| 17-313 | Foundations of Software Engineering | 12 |
| 17-413 | Software Engineering Practicum | 12 |
| or 15-413 | Advanced Foundations of Programming Languages | |
Electives
The minor requires three elective courses, one selected from each of the following categories:
1. One domain-independent course focused on technical software engineering material (min. 9 units):
| Must complete at least 9 units, may comprise one 9-12 unit course or multiple minis | ||
| 15-414 | Bug Catching: Automated Program Verification | 9 |
| 17-355 | Program Analysis | 12 |
| 17-356 | Software Engineering for Startups | 12 |
| 17-480 | API Design and Implementation | 12 |
| 17-653 | Managing Software Development (Prerequisite 17-413 or internship) | 6 |
| 17-614 | Formal Methods ** Mini pair with 17-624 | 6 |
| 17-612 | Business and Marketing Strategy **Mini: pair with either 17-626 or 17-627 | 6 |
| 17-622 | Agile Methods ** Mini pair with another min-course of your choice from this list | 6 |
| 17-623 | Quality Assurance ** Mini pair with 17-443/17-643 | 6 |
| 17-731 | Foundations of Privacy | 12 |
| 17-423 | Software System Design | 12 |
| Crosslisted courses allowed. | ||
Other courses may be allowed, with prior approval from the Director of the Software Engineering Program.
2. One engineering-focused course with a significant software component (min. 9 units):
| At least 9 units of the following: | ||
| 15-410 | Operating System Design and Implementation | 15 |
| 15-412 | Operating System Practicum | 9 |
| 17-437 | Web Application Development | 12 |
| 15-440 | Distributed Systems | 12 |
| 17-422 | Human-AI Interaction using Sensing Systems | 12 |
| 15-441 | Networking and the Internet | 12 |
| 15-445 | Database Systems | 12 |
| 18-749 | Building Reliable Distributed Systems | 12 |
| 67-443 | Mobile Application Design and Development | 12 |
| Crosslisted courses allowed | ||
Other courses may be allowed, with prior approval from the Director of the Software Engineering Program.
3. One course that explores computer science problems in society and industry, related to existing and emerging technologies and their associated social, political, legal, business, and organizational contexts (min. 9 units):
| At least 9 units of the following: | Units | |
| 15-390 | Entrepreneurship for Computer Science | 12 |
| 17-200 | Ethics and Policy Issues in Computing | 9 |
| 70-311 | Organizational Behavior | 9 |
| 17-331 | Information Security, Privacy and Policy in the Age of AI | 12 |
| 17-733 | Privacy Policy, Law, and Technology | 12 |
| 17-334 | Usable Privacy and Security | 9 |
| 19-403 | Policies of Wireless Systems | 12 |
| 70-471 | Supply Chain Management | 9 |
| 17-562 | Computer and AI Law | 9 |
| 17-781 | Mobile and IoT Computing Services | 12 |
| 17-801 | AI Enabled Network Science | 12 |
| 17-821 | Computer Simulation of Complex Socio-Technical Systems | 12 |
| 88-341 | Team Dynamics and Leadership | 9 |
| Crosslisted courses allowed. | ||
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, number to be determined, 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
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, nor does it apply to double-counting with the SCS General Education requirements.
