CS 5150: Software Engineering

Course homepage (Spring 2022)

Enrollment notice

Enrollment in CS 5150 has closed for this semester. Regarding future offerings, be sure to read the department’s enrollment page.

Laptop power button

Welcome to the homepage for Cornell’s Master’s-level course on software engineering! The majority of materials used in the course will be available on this publicly-accessible website. We also have a Canvas site for FERPA-protected content and services.

This course provides an introduction to the practical problems of specifying, designing, building, testing, deploying, and maintaining reliable software systems. The emphasis is on team-based development integrating with moderately large, existing systems. Topics include design patterns, issue tracking, version control, code review, dependency management, continuous integration, and release management. As a central part of the course, student teams will add large features to real software systems, following an agile development process.

See Cornell’s class roster for meeting times and locations (note that the description on the roster may be out-of-date; the synopsis above is accurate for this semester's offering). Lectures will be delivered exclusively in person except during university-mandated periods of virtual instruction.


CS 5150 is a 4-credit project-based course at the Master’s level. We assume knowledge of object-oriented programming & data structures and proficiency in an object-oriented language such as Java, C++, or Python. But beyond those hard skills, we also assume sufficient maturity to design, implement, and debug large program features (thousands of lines of code) in the context of even larger systems and to learn new programming languages and tools as necessary. In Cornell’s undergraduate curriculum, CS 3110 and CS 4410/4414 should provide adequate preparation. It will be helpful for some team members to have experience with web frontend technologies (HTML/CSS/JavaScript).

Strong time-management and teamwork skills are also essential. Students must be capable of collaborating effectively with their peers and resolving conflicts to maintain healthy team dynamics. Plan to spend considerable time outside of lecture hours working with your team towards self-imposed milestones.

The language of instruction will be English, and clear English will be expected for deliverables such as presentations and documentation.

About the instructor

Portrait of Curran Muhlberger

Dr. Curran Muhlberger is a lecturer in the Computer Science department. His software engineering background includes high-performance scientific simulation in academic collaborations and real-time system simulation, testing, and control at SpaceX. He regularly advises student teams in the Space Systems Design Studio on matters related to software and project management.