EECS 843

Programming Langauge Foundation II


EECS 843 - Programming Language Foundation II

Programming Language Founadation II is a continuation of Programming Langauge Foundation I focusing on advanced techniques for specifying and verifying programming language properties.

Class Information

Room and Time
1136 Learned Hall
2:30-3:45 TR
EECS 755/762 or experience with programming language semantics and theorem proving and permission from the instructor.
Instructor Information
Dr. Perry Alexander
Office Hours: 3:45-5:00 TR in 208 Nichols Hall, or by appointment
Office: 3048 Eaton Hall / 208 Nichols Hall
Phone: 4-7741
Adam Chlipala, Formal Reasoning About Programs,published online(required)
Benjamin Pierce, Software Foundations, published online (optional)
Coq proof system.
CoqIDE if you don’t want to use emacs.
ProofGeneral if you do want to use emacs.
vscode if you want a full fledged IDE.



There are none.

Classroom Policies

The Three Commandments

Pretty simple. Follow them and we’ll be great friends!

  1. Don’t whine
  2. Don’t cheat
  3. Be kind

Class Participation

I do not take attendance in class, however participation in class is important to its success. How much homework and how rigorously it is graded will definitely depend on class participation. Please ask questions and participate in class discussions. When assigning final grades, borderline cases will be decided based on class participation.

Grading Errors

If I have made an error in grading an exam or assignment, you have two weeks following the date the item is available to see me about correcting the problem. Note that this includes the final! After that time, your grade is set and will not be changed. I also request that you wait 24 hours after an exam is returned before coming to me with questions.


I may decide to curve final scores when the semester is over. Whether I curve and how much I curve is at my discretion. I will never curve up, but may curve down. Specifically, 90% and above will always be an “A”, but I may choose to lower the cutoff percentage. Whether I curve and how much I curve is at my discretion. I will never curve scores on an individual graded assignment or exam.


I encourage you to use email to contact me. I am logged in whenever I am working and check my mail frequently. Email is my preferred means of communication.__


The course blog is available on the website. I will post late-breaking news about projects, homework and class administration on the blog. Check the website and blog frequently, particularly around project due dates and exams.


Feel free to call me in any of my office at any time. I would prefer not to be called at home.

Office Hours

I will make every effort to be in my office during scheduled office hours. If there are exceptions, I will let you know as early as is possible. If you have a conflict with my office hours, please make an appointment. I have an open door policy, you are free to come by whenever you choose. If I am busy, I may ask that you come back later, but please don’t hesitate to ask!


Academic misconduct of any kind will automatically result in a 0 score on the homework, lab, project, or exam in question and your actions will be reported to the department chair. Your homework, exams and projects must be individually prepared unless otherwise noted. Posting your assignments to internet discussion lists is considered academic misconduct. Sharing your solutions with others is considered academic misconduct. Turning in solutions from previous semesters is considered academic misconduct. Paying people to prepare solutions is academic misconduct. Automated mechanisms are available for checking the originality of source code. Please spend your time trying to solve assigned problems rather than trying to get around the system. Don’t risk it!


Excusing a missed exam or assignment is left to my discretion. Illness, family emergencies, and religious observances are examples of acceptable excuses. Computer down time, over sleeping, and social events are examples of unacceptable excuses. Please try to let me know of problems in advance when possible and be prepared to provide verification of your excuse.


As a policy, I do not extend due dates of homework and projects. If I choose to do so, I will only announce the extension in class, via email or on the blog. If you hear an extension has been granted and I have not announced it, your information is incorrect. Remember that if I grant extensions early in the semester, it will necessarily compress due dates the end of the semester.


Grades are assigned on a standard 10 point scale:

Classroom tasks are weighted using the following scale

You will receive a reading assignment and/or Coq source file for each lecture. Before and during each lecture:

  1. Familiarize yourself with the reading and Coq source
  2. Attempt any proofs that are not completed in the Coq source.
  3. Participate actively in class.

Projects will be assigned irregularly and may be completed individually or in groups. It is vital that you never skip a project!


We will start by reviewing Formal Reasoning About Programs chapters 5 and 6. Then we will go into chapters 7-13 and their associated Coq specifications in much greater depth. Other topics may be selected based on interests of the class and the instructor.