Skip To Content

0

View Cart | Checkout

Software Engineering



This course covers software specification, testing, and verification. Students explore current best practices and technology for developing reliable software at reasonable cost and learn techniques for developing reliable software other than programming, including testing, bug finding, verification, and methodologies for constructing robust code. The first part of the course covers mostly dynamic techniques for analyzing software: techniques that require actually executing the program. The second part of the course covers mostly static techniques for analyzing software: techniques that work directly on the source code without running the program.

The course also features guest lecturers who will present on the interesting systems they have built and on the approaches and techniques they prefer. Assignments focus on applying these techniques to realistic software systems.


  • 10-15 hours of reading per week
  • Midterm Exam
  • Final Exam


2.0 - 3.0

Students enrolling under the non degree option are required to take the course for 3.0 units.


The prerequisite for the course are CS108.

We recommend that you have taken one significant project course such as CS 140, CS 143, or CS 145. If you haven't taken a compiler course, the readings will sometimes be somewhat intense.

You may also watch the course preview to ensure you have the requisite background and understand the scope of material covered.

Primary Faculty

Alex Aiken

Professor of Computer Science
Stanford University School of Engineering

Please complete a Course Inquiry so that we may notify you when enrollment opens.