The University of Iowa

CS/ECE:5810 Formal Methods in
Software Engineering

Fall 2023

Syllabus

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
  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.

Learning Objectives

We will study a few 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. In this course, students will

  1. learn about formal methods (FMs) in software engineering;
  2. understand how FMs help produce high-quality software;
  3. learn about formal modeling and specification languages;
  4. write and understand formal requirement specifications;
  5. learn about main approaches in formal software verification;
  6. know which formal methods to use and when;
  7. use automated and interactive tools to verify models and code.

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.

Prerequisites

CS:2810 or ECE:3330, or equivalent.

Lectures

Tue and Thu, 11:00am - 12:15pm, S116 Lindquist Center

Instructors

Prof. Cesare Tinelli (lecturer)
1410 Seamans Center
1 Jessup Hall, Room C
(319) 335-0735
cesare-tinelli + @ + uiowa.edu
DEO: Alberto Segre, 14G MLH, alberto-segre@uiowa.edu

Mitziu Echeverria (TA)
mitziu-echeverria + @ + uiowa.edu

Drop-in Hours

Students are invited to drop by during the hours listed below to discuss questions about the course material or concerns. The instructors are also available by appointment if you are unable to attend the scheduled drop-in hours.

Prof: Tue 2:15pm-3:15pm (office only), Wed 11:30pm-12:30pm (Zoom only), Thu 4:00pm-5pm (office only), and by appointment. Zoom: 884 316 858.

TA: Mon 4:00pm-5:00pm, Thu 1:00pm-2:00pm, Fri 9:00am-10:00am, and by appointment (all times Zoom only). Zoom: 991 287 672 63

Online Resources

Most of the information about the class, including handouts and assignments, will be available from the class web site:

http://www.cs.uiowa.edu/~tinelli/classes/5810/Fall23

We will also use Piazza, a class discussion service, for announcements, questions and discussions, and ICON for homework submissions and grade posting. Lectures will be recorded and recordings will be available to registered students on UICapture.

Note that lecture recordings are the intellectual property of the instructor, and they may not be shared, reproduced, or uploaded to any online environment without the explicit, written consent of the instructor. Doing so is a breach of the Code of Student Conduct and, in some cases, a violation of the Federal Education Rights and Privacy Act (FERPA).

Students are expected to check both the class web site and the Piazza discussion board on a regular basis (at least every other day) for announcements regarding the course.

Textbook and Readings

The required textbook is
    Program Proofs by K. Rustan Leino. MIT Press, 2023.
ISBN: 9780262375429
A copy of the book is also on reserve in the Engineering Library. We will also use a variety of additional reading materials all of which will be made available through the course web site.

Weekly readings and exercises will be posted in the Lectures section and updated as the course progresses. Readings will include various class notes and handouts, papers on formal software specification and verification, and material on how to use the specification/verification tools adopted in the course.

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

Computer Accounts and Software

You may find it useful to use your account on the CS remote servers which have a working installation of some of the software tools used in this course. Instructions on how to access those machines, on-site or remotely, and use the installed software are provided on the course website.

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

Homework Assignments

Several exercises will be given during the course of the semester, some of them during lecture, covering the material from the readings and the lectures. All of these exercises are required although only some of them may be collected and graded.

There will be six graded homework assignments: three introductory assignments, to be done individually, and three mini-projects, to be done in teams of 2 people.

For the mini-projects, every team member will be expected to be involved in all aspects of the assignment (no dividing up the work). The whole team is responsible for the work submitted. Although 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 use to establish initial contacts. It is okay to form different teams for each project. Teams of 1 are accepted but not encouraged. In particular, no reduction of work will be granted to them.

Exams

There will be one midterm exam and one final exam. They will be both on campus for the UI students and both online for the Grinnell students. The midterm will be held during class time. The final exam will be held during exam week as per university schedule. The midterm exam will cover material from approximately half of the course, including information presented in lecture, and the assigned readings. The final will be comprehensive. Both exams will test student's knowledge of basic concepts, terms, and general techniques discussed in the course. More information will be posted on the Exams section at least a week before the exam. In preparation for each exam, it is strongly recommended that students complete all the readings, exercises, and homework assigned until then.

Class Participation

Regular and prompt attendance is expected for this course. Since a substantial percentage of your grade (10%) will be based on class attendance and participation, it is in your interest to attend every class and be ready to make significant contributions to in-class discussions. Participation includes being up to date with the course readings so as to be able to answer questions from the instructor and actively contribute to the solution of in-class exercises.

Grading

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

Item Weight
In-class Participation 10%
Intro Assignments 20%
Mini Projects 25%
Midterm 20%
Final Exam 25%

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. A+ will be given to scores close or above 100%.

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

B

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 Honesty and Misconduct

All students in CLAS courses are expected to abide by the CLAS Code of Academic Honesty. In particular, under no circumstances should you pass off someone else's work as your own. Undergraduate academic misconduct will be reported by instructors to CLAS according to these procedures. Graduate academic misconduct will be reported to the Graduate College according to Section F of the Graduate College Manual.

This course assumes that work submitted by students will be generated by the students themselves, working individually or in groups. This means that the following will be considered violations of academic integrity: a student has another person/entity do the writing of any substantive portion of an assignment or exam for them; this includes hiring a person or a company to write homework or exam solutions, and using artificial intelligence applications like ChatGPT.

In addition, the following is also explicitly disallowed.

Graded Homework: Sharing solutions of graded homework between 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.
For team assignments, all members of a team are responsible for the submitted team work and will be disciplined equally in case of academic dishonesty. So make sure you are fully aware of what is being submitted if you are not the submitter.

Exams: The midterm and final exams are individual tests. Each student must 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 bit 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

Communicating with the Instructors: We welcome questions related to the course. Students are strongly encouraged to post their class-related questions on Piazza (publicly or privately, as appropriate) rather than emailing questions to the teaching staff. Questions sent by email will receive lower priority. We are committed to answer all questions posted on Piazza within 24 hours.
We will make any course-related announcements on Piazza and will occasionally send direct email notifications to all students in the class. Students are responsible for all official correspondences sent to their UI email address (uiowa.edu) and must use this address for any communication with instructors outside of Piazza. For the privacy and the protection of student records, UI faculty and staff can only correspond by email with UI addresses.

Drop-in Hours: Students are invited to connect/drop by during the posted drop-in hours to discuss questions about the course material or concerns. The instructors are also available by appointment if your are unable to attend the drop-in hours.

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 homework.

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 and Absences: Lectures will be in person for the the UI students. Grinnell students will be able to attend the same lectures remotely via Zoom. Lectures will have frequent (ungraded) in-class exercises and other forms of active participation. Lectures will be taught in person, with occasional (ungraded) in-class exercises and other forms of active participation. Students are expected to attend all lectures and, in case they cannot attend a lecture, timely watch its recorded version. Students do not need to communicate their absences to the instructors unless these are due to long-term illness (so that suitable arrangements can be made if possible). However, they are responsible for all announcements made in class and material covered there regardless of whether they attended/watched the lecture or not.

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 instructors know. The instructors welcome and will give full consideration to all well motivated regrading requests.

Student Complaints: Students with a complaint about a grade or a related matter should first discuss the situation with the instructors, and finally with the Department Chair (DEO).
Undergraduate students should contact CLAS Undergraduate Programs for support when the matter is not resolved at the previous level. Graduate students should contact the CLAS Associate Dean for Graduate Education and Outreach and Engagement when additional support is needed.

Drop Deadline: Students may drop an individual course before its drop deadline; after this deadline they will need collegiate approval. When you drop a course, a “W” will appear on your transcript. The mark of “W” is a neutral mark that does not affect your GPA. Directions for adding or dropping a course and other registration changes can be found on the Registrar’s website. Undergraduate students can find policies on dropping CLAS courses here. Graduate students should adhere to the academic deadlines and policies set by the Graduate College.

University Policies

Unless otherwise noted, this course abides to the general university policies for courses. Make sure you familiarize yourself with them.


Copyright: Cesare Tinelli, The University of Iowa, 2023