Skip to main content

New winter course: CSE 490: Software quality: techniques and tools

CSE 490: Software quality: techniques and tools

http://homes.cs.washington.edu/~mernst/teaching/2017wi-elective/index.html

SLN 22378 CSE 490 E1, T/Th 10:30-11:50:

New class for winter 2017
Instructor: Michael Ernst
Class meeting times: T/Th 10:30-11:50
Prerequisites: CSE 311, CSE 331. CSE 403 is helpful but not required. Counts as a  CSE Senior Elective

It is easy to write a program, but it is difficult to write a correct, reliable program. This course will teach you the latter, from both a theoretical and a practical point of view.

The course conveys foundational ideas, such as applying mathematical abstractions to verifying complex software. The course connects these to the real world with concrete advice for improving your programs, and hands-on practice with popular tools that will make you a more thoughtful and effective software designer and tester. A group project will give you experience with tools that automate software development tasks, reducing human effort and improving quality.

Topics

What is quality?

  • aspects of quality
  • the meaning of correctness
  • specifications: expressing desired behavior

Ways to achieve correctness.

  • partial and full guarantees of correctness
  • static vs. dynamic analysis

Dynamic analysis: run the program and observe its behavior

  • Testing: How to break your program
  • Assessing test quality (coverage, mutation, etc.)
  • Debugging: bug diagnosis, fault isolation, program repair
  • Model inference
  • Visualization

Static analysis: read the source code and reason about possible behaviors

  • abstractions: forgetting information is essential
  • abstract interpretation (dataflow analysis, symbolic execution)
  • type systems
  • model checking
  • theorem-proving
  • decision procedures (SAT, SMT)

Automation

  • automating the right part of the task
  • assessing tools: which ones are worth using?

Activities

Students are expected to read book chapters and some research papers, actively participate in class discussion, perform small exercises that provide experience with a variety of tools, and complete a team research project. There may be a midterm exam. There is no final exam; that slot will be used for final project presentations.

November 10, 2016