EECS 762

Programming Language Foundation I

Index
Blog

EECS 762 - Programming Language Foundation I

Programming Language Foundation I is an introduction to the mechanized semantics of programming languages. The course will present modern techniques for defining static and dynamic semantics using Rocq for specification and verification. Topics include program equivalence, stateful systems, Hoare Logic, lambda calculus, evaluation relations, small-step operational semantics, typing relations, the simply typed lambda calculus, type safety, and subtyping. All with a heavy dose of Steely Dan and Buckaroo Banzai.

Class Information


Room and Time
1136 Learned Hall
2:00-3:15 TR
Prerequisites
EECS 755 is highly recommended, but currently not a formal prerequisite. Be prepared to learn Rocq (formerly Coq) on the side if you’ve not taken EECS 755.
Instructor Information
Dr. Perry Alexander
Office Hours: 3:15-4:15 TR in 3048 Eaton Hall, or by appointment
Office: 3048 Eaton Hall / 208 Nichols Hall
Phone: 4-7741
Web: https://perry.alexander.name
Email: palexand@ku.edu
Textbooks
Benjamin Pierce, et al., Software Foundations, published online. (Required)
Benjamin Pierce, et al., Types and Programming Languages, MIT Press, 2002. ISBN: 0-262-16209-1 (Optional)
Resources
Rocq proof system. Note that Rocq used to be Coq. You will see and hear both names used. They refer to the same thing.
VS Code is the IDE we use in our lab and I use in class.
ProofGeneral if you do want to use Emacs and roll your own environment. ProofGeneral is also available via melpa if you prefer not to install by hand.
CoqIDE if you don’t want to use Emacs or VS Code.
Class Notes
Formatted Lecture notes updated regularly.
Markdown Sources updated regularly.

Lectures


1/20 Course introduction, Review
Lecture References: Introduction, IMP
Album: Can’t Buy a Thrill, Steely Dan
1/22 State Transition Systems, com IMP Subset, Total Maps
Lecture References: IMP, Maps
Album: Paradise, The Westerlies
1/27 Inductive Propositions and Relations
Lecture References: Inductive Propositions, Relations
Album: American Garage, Pat Metheny Group
1/29 Relations
Lecture References: Relations
Album: Crash Box, Monkey House
2/3 Defining Commands
Lecture References: IMP Commands
Album: My Home Is Not In This World, Natalie Bergman
2/5 Program Equivalence
Lecture References: Program Equivalence
Album: Deep Sea Vents, Brhym, Bruce Hornsby, yMusic
2/10 Program Equivalence
Lecture References: More Program Equivalence
Album: Chet Baker Re:imagined, Chet Baker
2/12 Program Equivalence
Lecture References: Properties of Program Equivalence
Album: Family Business, Lawrence
2/17 Assertions and Hoare Triples
Lecture References: Hoare Triples
Album: Wichita Lineman, Glen Campbell / Jimmy Webb
2/19 Hoare Triples and Hoare Logic
Lecture References: Hoare Triples
Album: New Town, RED123

2/24 No Class

2/26 Hoare Logic
Lecture References: Hoare Triples
Album: Band on the Run, Paul McCartney and Wings
2/2 Rule of Consequence and Proof Search
Lecture References: Consequence,Proof Search
Album: The Sunset Tree, The Mountain Goats
2/4 Proof Search
Lecture References: Auto
Album: Broken Social Scene, Broken Social Scene
2/9 More Proof Search
Lecture References: Lia and Ltac
Album: Snow Borne Sorrow, Nine Horses
2/14 Automatic Hoare Logic
Lecture References: Hoare Logicl
Album: Hats, The Blue Nile

Grading


Grades are assigned on a standard 10 point scale:

Classroom tasks are weighted using the following scale

Mini Projects

Mini Projects will be due on approximately a bi-weekly basis and are the heart of the course. Modern semantics work is typically done using automated tools for specification and proving. Thus, we will work through a number of projects together in class and independently using Rocq to specify and verify programming language properties. Class participation is vital and will be considered when grading projects.

Most projects will require submission of documented Rocq source only. If you need to submit text, prepare your submissions using LaTeX with an equation formatting library such as the freely available semantic package. There are a number of ways to use LaTeX ranging from Emacs and AuCTeX to the online Overleaf system. If you are getting started with LaTeX, Overleaf is strongly suggested.

Submit your project solutions as Rocq and PDF files using the KU Canvas system unless otherwise specified. Assignments will be posted here:

Web Repository


All project and homework assignments, exams, solutions and handouts you receive in class are linked to the EECS 762 homepage.

Exams


Exams are closed book, closed notes, in-class exams. The final exam will be held during the time assigned by the University in our regular classroom unless we as a class decide otherwise. Topics will be posted here:

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. I intend to work through projects together in class extensively. How much outside work is assigned and how rigorously it is graded will 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 make an error grading an exam or assignment, you have two weeks following the date the item is returned 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.

Curving

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.

Blog

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.

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!

Cheating

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!

AI

Using AI for proofing and cleaning up solutions is appropriate without citation. Using generative AI to assist with proving or specification is also appropriate when it is properly acknowledged, and your prompts are included as a part of your solution. Using generative AI without proper attribution is claiming work you did not do and is considered academic misconduct. If you use AI tools the best thing is to document what you did.

Excuses

Excusing a missed exam or assignment is left to my discretion. Illness, family emergencies, and religious observances are examples of acceptable excuses. Computer downtime, 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.

Extensions

As a policy, I do not extend due dates of 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, but 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.

Topics


We will cover topics in roughly the same order as our texts. I will also add miscellaneous topics throughout the semester. Specific topics are subject to change without notice and topics marked “(tentative)” will be covered as time permits.