Curriculum

The Software Engineering program curriculum encompasses the technical and professional background you will need to engineer large complex software systems.

The curriculum is project-intensive, where students learn by example and by practice. The average Software Engineering student is expected to spend 50-60 hours per week on readings, projects, group meetings, and attending lectures, practicums, and labs. The program is quite challenging, but with hard work, students will acquire the skills and expertise to succeed not only in their classes but in their professional careers.

Theory and practices are introduced by applying them to relevant software engineering problems and are reinforced through case studies, exercises, and projects. Software engineering philosophy and discipline are taught early and practiced throughout the program. Students are expected early on to design and evaluate their programs, as part of successful software development. Through technical documentation, presentations, reports, and peer reviews, students develop strong communication skills. Through project management and teamwork, they develop strong interpersonal skills.

The curriculum includes: 

  • Mathematical and scientific background that students need to understand computer science fundamentals, to model software systems, and to evaluate software models and designs.
  • Intensive studies and exercises in computer science and engineering design, whereby students experience how to engineer software solutions.
  • Core software engineering courses that promote disciplined development processes, proper technical documentation, software design principles, project management, and systematic and quantifiable analysis techniques.
  • Advanced technical electives that examine domain-specific problems, designs, and solutions. 
  • Complementary electives that reflect on how computing and information technologies affect individuals, organizations, businesses, and society.

Academic Curriculum

The Undergraduate Studies Academic Calendar lists the term-by-term academic component of the program, including electives.