MPCS 56540 Software Quality Assurance (Spring 2024)

Section 1
Instructor(s) Almhana, Rafi (ralmhana)
Location JCL 011
Meeting Times Thursday 5:30pm - 8:30pm
Fulfills Specialization - Software Engineering (SE-2) Elective



This course introduces techniques and standards for achieving and ensuring high quality in computer software. It includes a discussion of software quality and metrics that can be used to assess it; the activities that are required to establish an effective quality assurance approach including a variety of relevant standards, and the process related issues that must be implemented to achieve continuous quality improvements.

Learning Objectives:

  • List and define the key stages of the software development lifecycle.
  • Explain the importance of each stage in software engineering processes.
  • Compare and contrast different software development models, like Waterfall and Agile.
  • Implement a basic quality control checklist for a simple software project.
  • Critique a software project's adherence to quality standards.
  • Identify different types of software testing methodologies.
  • Explain the purpose of unit testing in the context of software quality.
  • Write unit tests for simple functions or methods in a given programming language.
  • Develop a test plan that includes a variety of test cases for a given software module.
  • Automate a simple test case using a given tool or framework.
  • Create automated test scripts using Selenium or Playwright for basic web application scenarios.
  • Develop a defect management strategy that prioritizes issues based on severity and impact.



  • Software engineering and the Quality Context
  • Software Quality Assurance and Testing
  • The Elements of SQA
  • The SQA Plan
  • Quality metrics
  • Testing Fundamentals
  • Software management and planning
  • Project monitoring & measurement
  • Risk analysis and management
  • Formal technical reviews
  • White-box testing
  • Black-box testing
  • Testing Strategy
  • The Use of Software Engineering testing Tools



  • Individual assignments
  • Course project
  • Class participation / quizzes



  • Project planning and defect tracking tools such as Jira, Trello, etc.
  • Automation frameworks such as Mocha, Jenkins, Selenium, Cucumber, etc.
  • Chart and diagram tools such as

Course Prerequisites

Core Programming

Other Prerequisites

Students should know at least one common programming language, such as JavaScript, Python, Java, or C++. Familiarity with software development tools such as version control is expected.

This course requires competency in Unix, Linux, and GitHub. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here:

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 51220-1 -- Applied Software Engineering
  • MPCS 51045-1 -- Advanced C++

Eligible Programs

MS in Computational Analysis in Public Policy (Year 2) MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science