Software Engineering, SCS Concentration

Michael Hilton, Concentration Director and Advisor
Location: Wean Hall 5122

Software Engineering Concentration

This concentration is available to SCS students only.

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.

Learning Objectives

The software engineering concentration 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.

Curriculum

Prerequisites

SCS students should have completed the following courses before completing this concentration:

Units
17-214Principles of Software Construction: Objects, Design, and Concurrency12

Course Requirements

Overall, the concentration requires five (5) courses and an internship. One of the five 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.

Required Courses (complete all of the following):
17-313Foundations of Software Engineering12
17-413Software Engineering Practicum12
or 15-413 Advanced Foundations of Programming Languages
Electives (complete each category):
Domain-Independent Elective course or mini sequence focused on technical software engineering material (minimum 9 units required):
At least 9 units total.
15-414Bug Catching: Automated Program Verification
and Testing
9
17-355Program Analysis12
17-356Software Engineering for Startups12
17-480API Design and Implementation12
17-653Managing Software Development (prerequisite 17-413 or an internship)6
17-423Software System Design12
Methods Elective (take both 6-unit mini courses)
17-614Formal Methods6
17-624Advanced Formal Methods6
Requirements Elective: Design & Marketing (take two 6-unit mini courses)
17-612Business and Marketing Strategy6
Take either:
17-626Requirements for Information Systems6
17-627Requirements for Embedded Systems6
Managing Development (take two 6-unit mini courses)
17-622Agile Methods6
Another mini course of your choice from within this larger list.
Quality Engineering (take two 6-unit mini courses)
17-443Quality Management6
17-623Quality Assurance6
17-731Foundations of Privacy12
Crosslisted courses allowed. 
Additional courses may count with prior approval by the concentration director.
 
Computer Science in Society & Industry Elective: a course addressing problems related to existing and emerging technologies and their associated social, political, legal, business, and organizational contexts (minimum 9 units required):
 
15-390Entrepreneurship for Computer Science12
17-200Ethics and Policy Issues in Computing9
70-311Organizational Behavior9
17-331Information Security, Privacy and Policy in the Age of AI12
17-333Privacy Policy, Law, and Technology9
17-334Usable Privacy and Security9
19-403Policies of Wireless Systems12
70-471Supply Chain Management9
17-562Computer and AI Law9
17-781Mobile and IoT Computing Services12
17-801AI Enabled Network Science12
17-821Computer Simulation of Complex Socio-Technical Systems12
88-341Team Dynamics and Leadership9
Crosslisted courses allowed. 

See concentration website for additional course options; additional courses may be counted if prior-approval is given by the Concentration Director. 

Students can apply one semester of a senior honors research thesis or research-based independent study in a topic related to this concentration, as approved by the concentration director/advisor, as one of the elective courses for this concentration. This research must have a significant communication component, including a paper or technical report, and a poster presentation. Any research course can count for at most 12 units toward the concentration and can count for at most one elective. Consult with the concentration director on what elective can be replaced in this option.

Internship and Reflection
The concentration 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-415Software Engineering Reflection6

Double Counting

No more than two of the courses used to fulfill the concentration requirements may be counted towards any other degree or concentration. SCS General Education requirements do not count towards this restriction.

Advising and Management

The concentration coordinator is responsible for academic advising, handling exceptions and updating the curriculum each year, in consultation with faculty in the Institute for Software Research.
 
Students who are interested in pursuing this concentration should contact the concentration coordinator for an initial advising consultation.
Back to top