Course description and Goals

This course provides a hands-on introduction to formal methods for software engineering. The purpose of formal methods is to enable the construction of highly reliable software. Their foundation is the precise specification of run-time properties that a software system is expected to satisfy. Formal methods are concerned with specifications that are precise for being stated in languages endowed with a formal syntax, semantics, and theory. Formality helps the specification process in at least two ways:

  1. it naturally leads to unambiguous, high-quality specifications, and
  2. it provides the bases for automated tool support.

As we will see, formal specification techniques allow for the construction of highly automated verification tools that help software developers analyze specifications and corresponding code, looking for errors in requirements, models, designs, and implementations.

In this course, we will study a collection of techniques for formal software development, spanning the whole development process: from high-level semantic modeling to coding and debugging. The study will not be done in the abstract, however, but through the use of actual tools supporting these techniques.

Students should be prepared to put in considerable time and effort into reading to become familiar with the course's topics, and into homework and exercises to gain experience with the techniques seen in class.

Textbook and Readings

There is no required textbook for this course. All reading materials will be made available through the course web site. They will include several papers on formal software specification and verification, a number of papers on how to use the specification/verification tools adopted in the course, and various class notes and handouts.

The formalisms used in this class are ultimately based on propositional logic and on first-order logic (predicate calculus). Links to background reading material on that will also be available on the course website.

Computer Accounts and Software

You may need to use your account on the CS lab machines which will have a working installation of software tools we will use in the course. Instructions on how to access those machines, on-site or remotely, and use the installed software will be provided on the course website.

Although you are welcome to use your own computer for course work, you are responsible for installing any necessary software. We regret that will not be able to provide assistance for any problems with your own installation.

A few exercises will be given during the course of the semester, covering the material from the readings and the lectures. These exercises are required but will not be collected or graded.

For each main topic there will be two graded homework assignments: an introductory assignment and a graded mini-project, both to be done in teams of 2 people. Every team member will be expected to be involved in all aspects of an assignment (no dividing up the work). The whole team is responsible for the work submitted. While the work is shared each students will received an individualized grade. Team members will be asked to submit an evaluation of how well they and their teammates performed as team members. Each evaluation is confidential and will be be incorporated into the calculation of the individual grade.

Each student is responsible for contacting other students and form a team. The discussion forum on Piazza can be unison to establish initial contacts, and possibly for later discussions. It is okay to form different teams for each assignment/project. Teams of 1 are accepted but not encouraged. In particular, no reduction of work will be granted to them.


There will be two midterm exams. The midterms will be held during class time.


The weighting of items in grade determination will be the following:

Item Weight
Intro Assignments 15%
Mini Projects 25%
Midterm Exam 1 30%
Midterm Exam 2 30%

The following cutoffs will be used to determine letter grades. In the ranges below, x stands for your total score at the end of the semester. Final scores near a cutoff will be individually considered for the next higher grade. Plus (+) and minus (-) grades will also be given; their cutoffs will be determined at the end of the semester.

Score Grade
88 <= x < 100 A
75 <= x < 88


60 <= x < 75 C
50 <= x < 60 D
00 <= x < 50 F

Grades are not curved in this course. It is theoretically possible for everyone in the class to get an A (or an F). Your final grade depends only on your own final score and not on that of others.

Academic Excellence and Workload

The University of Iowa expects students to set high academic standards for themselves and work hard towards achieving them. You can achieve true academic excellence only through dedicated work. An average workload of 6 hours a week besides class attendance should be considered the norm for this course. More effort might be needed depending on your background, predisposition and academic ambition.


Academic dishonesty will not be tolerated. In particular, under no circumstances should you pass off someone else's work as your own. This also applies to code or other material that you might find on the Internet.

Graded Homework: Sharing solutions of graded homework (assignments and project) between students/teams or copying someone else's work, including posted solutions from previous editions of the course, is not allowed. Doing that will result in a zero on the assignment and a report to the CS department's chair and the college.
You are allowed and encouraged to discuss with students in other teams concepts and ideas that relate to the class and the homework assignments. However, it is important to ensure that these discussions do not lead to the actual exchange of written material.

Exams: The midterm exams are individual tests. Each student must be complete them without any help from others. Exam answers showing strong similarities and/or duplication will receive a fail grade and the students involved will be reported to the Department and the College.
If you are unclear about what constitutes academic dishonesty it is your responsibility to contact the instructors or consult the CLAS policy (online version). Be aware that repeated academic dishonesty offenses lead to suspension or expulsion from the University.

General Course Policies

Late submissions: Late-due homework are not accepted. In general you will be better off turning in what you have on time rather than seeking extra time to complete your work.

Communicating with the Instructors: We welcome questions related to the course. We will try to answer all questions by the end of the following day.
We will occasionally send email announcements to all students in the class. Recall that you are responsible for all official correspondence sent to your Hawkmail address (see General CLAS Policies on electronic Communication below).

Assigned Readings: Students are expected to study all the material assigned as required readings, even if that material is not explicitly discussed in class or in the homeworks.

Additional Readings and Discussions: Students are encouraged to go over any specifically suggested readings and consult any relevant materials beyond those provided on the course's web site. They are also encouraged to discuss the course topics with their classmates. It is a genuinely helpful learning activity having to formulate one's own thoughts about the material well enough to express them to others.

Attendance: Students are expected to attend all classes. Their knowledge and therefore their grade depends on it. They are responsible for all announcements and material covered during class even if they did not attend.

Extra Credit: No extra-credit assignments or tests will be given on an individual basis (although they maybe given to the whole class).

Make-up Exams: Make-up exams will be offered only if there is a serious, documented reason for not being able to take a scheduled exam, and if the request is made at least a week before the exam.

Regrading: Students thinking a graded assignment or test has been misgraded and deserves a regrading are invited to let the instructor know. The instructor welcomes and will give full consideration to all well motivated regrading requests.

College Policies

This course follows the general policies of the College of Liberal Arts and Sciences (see