About the Program

The Master of Software Engineering (MSWE) is a professionally oriented, programming-intensive, degree program designed to train students from a variety of backgrounds for Software Engineering careers. The program’s characteristics are as follows:

  • A 16-month, 49-unit, on-campus program, spanning from September of the first year to December of the second year.
  • Dedicated room (“the lab”) where students study and work on their projects. All lectures are in the lab.
  • Tutors are available 8 hours/day in the lab.
  • The program starts off with a first quarter of intensive programming exercises designed to solidify and broaden the students’ knowledge of the large computing landscape, covering essential knowledge in Computer Science and Computer Systems.
  • 6 courses cover the foundations of software construction, maintenance, and quality, via hands-on projects.
  • 2 courses help prepare students for the non-technical aspects of professional careers.
  • An internship in the summer between year one and year two. Program staff helps with placement of students in companies, although students typically need to pass the company’s technical interview for summer internships.
  • A quarter-long capstone project, where students will be responsible for designing and implementing a substantial piece of software, be it standalone or an addon to an existing system. This project includes challenging aspects, such as information classification and machine learning modules, strict performance requirements, very large code bases, deployment in the cloud, etc.
  • We estimate students will spend close to 1,300 hours learning through programming and analyzing code.

Part-time attendance for working professionals is also possible. Part-time students are expected to complete the degree within two years and one quarter (27 months), with 39 months as the maximum. To accommodate working and part-time students, lectures are held in the evening. Domestic students who are employed full-time will be given special attention by program staff to ensure that they obtain a suitable internship that they can engage with while not necessarily having to give up their current job. Examples of possible arrangements are: faculty-supervised participation in an open source project or development of specific software for the School, among others.