Academics
  /  
Courses
  /  
Descriptions
COMP_SCI 387: Responsible Software Engineering


VIEW ALL COURSE TIMES AND SESSIONS

Prerequisites

COMP_SCI 213 and 214 or CS MS or CS PhDs or Instructor permission

Description

As software’s role in the world ever increases, so do the consequences of software going wrong–be it accidentally or maliciously. As software engineers, it is our responsibility to guard against such failures to the best of our ability, and to ensure that the software we build benefits the public rather than harms them.

In this class, we will study a variety of software failures–both recent and historical–to understand what led to them and draw lessons from them. In parallel, we will explore techniques, tools, and processes that can help prevent such failures, and should thus be part of a responsible software engineer’s toolbox.

Students in the class will also need to be comfortable with ambiguity and open-ended tasks. If you are interested in a class where we do not have all the answers, and where you'll be the one who needs to find them, then this class is for you. (If not, then maybe not).

  • Formerly Comp_Sci 396 - last offer was Winter 2025
  • This course satisfies CS Technical Elective.

Key themes

  • Reliability
  • Planning
  • Impact of software
  • Organizational dynamics

Sample topics

  • The Equifax leak (2017), dependency evaluation
  • The Therac-25 accidents (1985-1987), fuzz testing

Structure

  • Weekly/daily readings and summaries/reflections
  • Small group / whole class discussions
  • Hands-on group activities
  • Final presentation
  • Mandatory attendance and participation

COURSE INSTRUCTOR: Prof. Vincent St-Amour