EECS 490: Programming Languages

Fall 2025

Welcome to EECS 490, Fall 2025

We're excited to start this semester with you!

Please join the Piazza right away. All announcements will be made there (not on Canvas!)

Lecture will meet the first week of class -- see the schedule below.

Lectures attendance is required. Lectures will be live-streamed via Zoom for your occasional use when you cannot make it in person, but I expect you to come in person most of the time -- this is not a large class, so we want it to be interactive! The link to the Zoom is available from the sidebar.

Lecture recordings will also be available after the fact via the CAEN room capture system, click 'Recordings' in the sidebar to the left. We make no promises about the quality or completeness of these recordings! You are responsible for what is covered in lecture even if it is not legible in the recording.

Exams will be held in person. Make sure you are available on the dates and times indicated below.

Please read the syllabus (linked to the left) as soon as you can. It is required reading.

Make sure to have a computer (not just a tablet) and a reliable internet connection. CAEN computer labs can be used if you do not have your own computer or your internet connection is bad.

Students may also be interested in the following complementary courses:

Schedule

Open in Google Calendar

Day # Lecture Topic Deadline Readings
Tue 26 Aug 1 Course Overview Required: EECS 490 Syllabus
Thu 28 Aug 2 Programming with Mathematical Expressions
  • Preliminary Survey released
Optional: Cornell CS 3110 Notes, Ch. 2-3 (except 3.1.3)
Tue 2 Sep 3 Recursive Datatypes and Recursion Schemes
  • A1 released
Optional: Cornell CS 3110 Notes, Ch. 4
Thu 4 Sep 4 Equational and Inductive Reasoning Optional: Princeton COS 326 Notes on Reasoning: Basics, Lists
Tue 9 Sep 5 Syntax
Thu 11 Sep 6 Semantics
Fri 12 Sep
  • Preliminary Survey due
  • A1 due
  • A2 released
Tue 16 Sep 7 Variables and Types
Thu 18 Sep 8 Functions (the Lambda Calculus)
Fri 19 Sep
  • A2 due
  • A3 released
Tue 23 Sep 9 Products and Isomorphisms
Thu 25 Sep 10 Sums
Fri 26 Sep
  • A3 due
  • A4 released
Tue 30 Sep 11 Recursive Expressions
Thu 2 Oct 12 Recursive Types
Fri 3 Oct
  • A4 due
  • A5 released
  • Midterm Study Materials released
Tue 7 Oct 13 Constructive Logic (Proofs are Programs) Optional: Propositions as Types by Philip Wadler
Thu 9 Oct 14 Dynamic Classification, Gradual Typing, and Typed Holes Optional: What is Gradual Typing by Jeremy Siek
Fri 10 Oct
  • A5 due
  • A6 released
Tue 14 Oct No Lecture - Fall Study Break
Thu 16 Oct No Lecture
Tue 21 Oct Midterm Exam (in class)
Thu 23 Oct 15 Imperative Programming I - Side Effects
  • Mid-Semester Survey Released
Optional: TAPL Ch. 13
Tue 28 Oct 16 Imperative Programming II - Mutable Data Structures 😱
Thu 30 Oct 17 Imperative Program Analysis I Optional: CMU 17-654: Hoare Logic: Proving Programs Correct
Optional: Washington CSE 331: Reasoning About Code (Hoare Logic)
Fri 31 Oct
  • A6 due
  • Mid-Semester Survey due
  • A7 released
Tue 4 Nov 18 Imperative Program Analysis II
Thu 6 Nov 19 Memory Management + Ownership in Rust Optional: Rust Book Ch. 4.1-4.2: Understanding Ownership
Tue 11 Nov 20 Borrowing in Rust
Thu 13 Nov 21 Parallelism and Cost Semantics I Optional: PFPL Ch. 37-38
Fri 14 Nov
  • A7 due
  • A8 released
Tue 18 Nov 22 Parallelism and Cost Semantics II
Thu 20 Nov 23 Concurrent Interaction Optional: PFPL Ch. 39
Fri 21 Nov
  • A8 due
  • A9 released
  • Final Exam study materials released
Tue 25 Nov No Lecture - Happy Thanksgiving!
Thu 27 Nov No Lecture - Happy Thanksgiving!
Tue 2 Dec 24 Distributed Computation and Module Systems Optional: PFPL Ch. 40
Thu 4 Dec 25 Special Topic: TBA
Fri 5 Dec
  • A9 due
  • End-of-semester Survey released
Wed 10 Dec Final Exam (1:30pm-3:30pm) (Location: TBD)
Fri 12 Dec
  • End-of-semester Survey due by Midnight

People

For technical questions, please use Piazza. For administrative questions, please email the instructional staff collectively at eecs490staff@umich.edu unless you have a specific reason for contacting a staff member individually.
Photo of Cyrus Omar

Instructor

comar@umich.edu

Photo of Thomas Porter

GSI

thomasjp@umich.edu