New class for winter 2017
Instructor: Michael Ernst
Class meeting times: T/Th 10:30-11:50 in room CSE 203
Office hours: by appointment
Prerequisites: CSE 311, CSE 331. CSE 403 is helpful but not required. Counts as a senior elective.
Calendar (includes lectures and assignments; homework will be submitted via Canvas)
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.
What is quality?
Ways to achieve correctness.
Dynamic analysis: run the program and observe its behavior
Static analysis: read the source code and reason about possible behaviors
There is no required textbook. Readings will be book chapters, research papers, and other materials provided by the instructor.
If you wish to read more on your own, here are some good books.
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.
Grades will be based on homework, project, and class participation:
Each student may turn in one individual assignment 1 day late. Group assignments must be turned in on time. If you need an extension (say, due to travel to a research conference), let us know well in advance of the due date.
You may discuss homeworks with other students. However, you may not bring any written notes to, nor take any written notes from, any such discussion, and you may not write up your solution for 30 minutes after any such discussion. The goal is for you to understand the material, not to copy from others. You must write up all your homework answers individually, and credit any individuals you had conversations with.