The course will cover foundational topics in formal methods, such as the use of mathematical logic and automata theory for formal modeling, and algorithmic techniques for verification and synthesis such as model checking, Boolean satisfiability (SAT) solving, and satisfiability modulo theories (SMT) solving. However, unlike EECS 219C, which teaches you how to develop new algorithms for formal verification or synthesis, this course will teach you how to effectively use and adapt formal methods for problems in engineering education. Relevant topics related to user interface and evaluation studies will also be covered via guest lectures.
Following the introductory lectures on foundational topics, students
will read and lead discussions on papers in the area, and propose and
complete a final project. A list of suggested projects will be
provided for developing technologies for an online version of
(Introduction to Embedded Systems) and for similar courses that have
a significant laboratory component. Students are also encouraged to
propose their own project topics aligned with the course goals.
Finite-State Model checking tools:
Basic mathematical maturity and familiarity with fundamental algorithms and data structures
at an undergraduate level. No background in embedded systems is required.
If you are unsure whether you have sufficient background for the course, please meet the instructor.
There is no required textbook for this course.
Readings will be listed on the schedule below or posted on bSpace; you should
come prepared to take notes.
The following books may be used in selected parts of the course (copies will be on
reserve at the Engineering library):
Title: Model Checking
Publisher: MIT Press
Year: January 2000
Title: Logic in Computer Science: Modelling and Reasoning about Systems
Publisher: Cambridge Univ. Press
Year: June 2004 (2nd edition)
Title: Introduction to Embedded Systems: A Cyber-Physical Systems Approach
Title: The SPIN Model Checker: Primer and Reference Manual
Year: September 2003
All projects will be auto-graded based on technology developed in the class.
Just kidding!! See below for details on how grading will work:
The course project is the most important component of this class. It can be a theoretical and/or experimental investigation related to topics covered in class. A list of project topics will be announced in the first three weeks of the semester. You are also encouraged to pick topics of your own, after consulting with the instructor. It is expected that students team up in groups of 2 or 3 for their project. Projects will culminate in a final paper, presentation, and possibly a demo.
Students will have to present at least one paper listed on the schedule and lead discussion on the paper.
All students must read assigned papers and participate in discussions.
Project topics discussed in class; see the schedule below.
Course Topics and Schedule (subject to change)
The tentative course schedule is given below. Slides, if any, will be posted alongside; readings
will be posted on bSpace.
Note that classes will begin January 27.
Read this paper by Lee and Messerschmitt: A Highest Education in the Year 2049.
Feb 19: Bridging Natural Language and Formal Languages (guest lecture by S. Ghosh and W. Li, SRI International)
Mar 5: Paper discussion: Auto-grading Python programs by Singh et al.
Here is an incomplete list of tools that could be useful in your projects.
Copyright 2013-14 Sanjit A. Seshia
Last modified: Mon Apr 7 14:04:07 PDT 2014
Finite-State Model checking tools: