Department of Computer Science
CPSC 513: Integrated System Design

Meets: TTh 3:30-5:00pm, ICCS 206

First meeting is Thursday, September 4! (Tuesday, September 2 has grad orientation activities.)

Instructor: Alan Hu, CICSR 325, A J H at C S dot U B C dot C A

Links to Calendar, Readings, Assignments:

Reading List


(Perpetually under construcction....)


Course Objectives: Students completing the course will gain a solid foundation in current, practical formal verification techniques, the underlying theory, and significant experience applying these techniques to a real problem of the student's choosing. The course provides necessary background for advanced research in the field, as well as general exposure to this area for students pursuing research in other areas.

Warning: The course name "Integrated System Design" is a misnomer. The course will actually be about automatic formal verification of computer systems, be they hardware, software, or some combination. I used to feel a little guilty about shifting the course towards my research area (hence this warning), but as I travel, everyone (including people from cool places like Microsoft, IBM, Intel, AMD, Nvidia, the major EDA companies, and several start-ups) is begging me for more verification students, and all of my grad students have landed great jobs. So, I don't feel guilty anymore. :-)

By the way, in response to student demand, as well as exciting trends in the field, I'm planning to increase the software verification content of this course this year. There is some very very cool stuff happening, both here at UBC, and in the broader research world. For the folks primarily interested in hardware, don't worry: there will still be plenty of hardware, and the new software-verification stuff applies to modern trends in hardware design as well...


There is no textbook for the course. Readings will come from the original research papers.


Graduate standing in CS or ECE, or consent of instructor. This area is a wonderful blend of theory, hardware, and software, but as a result, people's backgrounds will vary. I intend to make the course fairly self-contained, but familiarity with automata theory, mathematical logic, basic digital logic, differential equations, and some computer architecture will be helpful.