1 · 300 Level 2 · First Semester 3 · CSC301 4 · Details
Core300 LevelFirst SemesterSoftware Engineering
CSC301

Software Engineering Principles

Course Description

Software Engineering Principles scales up everything students have learned about writing individual programs into the practice of building software as a team, over time, under changing requirements. Students work in project groups across the semester, experiencing requirements drift, code review, and the cost of a design decision made too quickly.

Learning Outcomes
  • Apply a software development process appropriate to a project's scale and risk.
  • Write and review requirements and design documentation.
  • Contribute effectively to a team codebase using version control and code review.
  • Apply testing strategies appropriate to different parts of a system.
  • Identify and manage technical debt in an ongoing project.
Weekly Topics
Examines software development lifecycles from a practical angle, using a case drawn from real systems to motivate the concepts.
Builds directly on the previous week to extend requirements engineering, with an emphasis on where the earlier techniques stop working.
Combines a short lecture on system design & architecture with an in-class exercise students carry into the week's assignment.
Focuses on common mistakes and misconceptions around version control at team scale, using student work from the previous assignment as material.
Introduces code review practices and immediately puts it to use in a small design or implementation task.
Situates testing strategies within the broader arc of the course, showing how it connects to what comes next.
Uses a guest dataset or scenario to explore mid-semester review in a setting closer to professional practice.
Introduces technical debt & refactoring at scale through short lectures and worked examples, building the vocabulary the rest of the course relies on.
Works through team project sprint i in a lab-driven session, with guided exercises students complete and discuss in small groups.
Covers team project sprint ii in depth, connecting the underlying theory to a concrete example the class builds together.
Examines software quality & metrics from a practical angle, using a case drawn from real systems to motivate the concepts.
Builds directly on the previous week to extend team project presentations, with an emphasis on where the earlier techniques stop working.
Combines a short lecture on revision with an in-class exercise students carry into the week's assignment.
Assessment
Assignments — 15%
Practical Work — 35%
Mid-Semester — 15%
Final Examination — 35%
Prerequisite Map
CSC203 Object-Oriented Software Design CSC202 Algorithms Analysis & Design CSC301 Software Engineering Principles CSC308 Programming Languages & Paradigms CSC401 Capstone Project I
Related Courses