SWE 437: Software Testing and Maintenance

Course Description

Software Testing (3:3:0) Prerequisites: CS 211 and Math 125. Concepts and techniques for testing and modifying software in evolving environments. Topics include software testing at the unit, module, subsystem, and system levels; developer testing; automatic and manual techniques for generating test data; testing concurrent and distributed software; designing and implementing software to increase maintainability and reuse; evaluating software for change; and validating software changes.

Professor: Paul Ammann

For more information, please see the 437 course web page.

ABET Course Outcomes:

  1. Knowledge of quantitative, technical, practical methods that software engineers and developers can use to test their software.
  2. Testing techniques and criteria for all phases of software development unit (developer) testing, integration testing, system testing, etc.
  3. Theoretical and practical knowledge of how to apply test criteria to improve the quality of software
  4. Knowledge of modern challenges and procedures to update continuously evolving software
  5. Understanding of best quantitative programming and design practices for ensuring software can be efficiently and effectively modified and tested
  6. Understanding that maintainability and testability are more important than efficiency for almost all modern software projects


Class absences: Up to two absences are excused without grade penalty. Each absence including and after the third absence results in a reduction of 2% in the overall course score.