Syllabus · EECS 490: Programming Languages

Winter 2020


Students will gain a modern understanding of programming language design and implementation. The emphasis will be on building up from first principles and on understanding programming languages simultaneously as formal structures and as human-computer interfaces.

The purpose of this course is to change the way you think about programming and programming language design in ways that will remain relevant across the many technology hype cycles that you will encounter over the course of your careers.


This course assumes substantial prior programming experience (EECS 281 or equivalent) and experience with rigorous mathematical definitions and simple proofs.

Course Staff


GSIs and IAs

We do not answer technical questions via email. Please direct technical questions to the Piazza forums. For administrative questions, please contact the course staff at, unless you have specific reason to contact one of us individually.


No laptops during lecture. Tablets with pens are okay, but please use them only for note taking.

Lecture · MW · 4:30pm-6:00pm · 1571 GGBL


Please try to attend the discussion section you are registered for. If you cannot, it is okay to attend a different one. Seating is first-come-first-serve. Please bring a laptop or other device with a standard keyboard and browser if possible.


For many of the lectures, the instructor will post notes on the course webpage. Similarly, discussion notes may also be posted. These are considered required reading unless otherwise specified.

There is no required textbook for the class. However, the following textbooks may be useful, and optional readings from these books may be posted. Readings from the course notes of similar courses at other institutions may also be posted.

At least one copy of PFPL and TAPL are being held in course reserve at the Art, Architecture & Engineering Library for the duration of the semester. These can be checked out for no more than 3 hours at a time.


The course webpage is located at A detailed schedule, assignments, lecture notes, information regarding office hours, and links to various resources are available from the webpage.

Information posted on the webpage is considered required reading unless otherwise specified.


Minimal additional information and grades, when available, can be found on the course Canvas site, which can be found from the webpage.


We will be using Piazza to host a course forum, which can be found from the webpage. You are required to read this regularly: we will post announcements and assignment clarifications there. In addition, it will be a significant source of help and hints on the assignments and projects.

We do not answer technical questions via email. In order to save everyone time, we want all students to have the benefit of seeing each question and its answer, so please use the forum. Please search the forum before posting, to avoid questions that have already been asked and answered.

Do not post your own solutions, code, test cases, or output to the forum.

Please ask any questions you may have early. If you post them just before a deadline, we cannot guarantee that the course staff will be able to answer them.

Homework Assignments

Over the course of the semester, we will assign homework assignments on a roughly weekly basis. Assignments will involve coding, answering multiple choice questions, written short answer questions, and occasional mathematical proofs. More details on the assignments will be posted on the course webpage.

Corrections and Clarifications

We will make Canvas announcements and Piazza posts in the case of critical corrections. Minor clarifications will be posted on Piazza. It is your responsibility to ensure that you are able to receive Canvas announcements and that you are reading Piazza regularly.

Successfully Completing the Assignments

We have found through many years of teaching experience in various courses that the most common reason for poor homework performance is not starting early enough. Plan to do some work on the project every day and try to have it finished a few days ahead of the due date.

The second most common reason for not doing well on the projects is not asking for help when you need it. We offer help in office hours and on the class forums. When you come to office hours, please be ready to provide access to your code, preferably electronically. Another good way to get help is to post a question to the course forum. Remember, if you find that you are stuck on a piece of your project for an undue amount of time, please see us!

An important skill in programming is to be able to test and debug your programs independently. As such, we will not debug your programs for you. Instead, we will help you try to figure out how to test and debug your program yourself. We will also ask you to demonstrate what testing and debugging techniques you have already tried, and what the results were, before providing any advice.

Finally, although the LearnOCaml platform that we use does save your work on our server, we cannot absolutely guarantee that your code is saved or that the server does not crash. To be safe, please maintain a local copy of your work on your file system. If you somehow lose your work, it is your responsibility.

Evaluation and Grading

Each homework assignment will be evaluated for correctness with respect to the instructions, and good style and programming practices. In addition, some problems may also evaluate the quality of test cases that you supply.

It is not the case the a full score from the autograder means you solved the problem correctly!

Due Dates and Extensions

Assignments will generally be due at 8pm on Tuesdays. Up to three times over the course of the semester, you are permitted to submit an assignment by 4pm the day immediately following the due date, i.e. Wednesday for a typical assignment. For assignments submitted using Learn-OCaml, you must set the late flag to true in the exercise titled "Late submission". Failure to do will cause us to grade your code in the state that it appeared as of the normal due date.

Assignments or portions thereof turned in after the exact time and date on the assignment, or in the case of permitted late submissions, after 4pm the next day, will receive a zero. There is no grace period. All times are Michigan time.

We do not generally offer extensions. For example, we do not offer extensions due to crowded computing sites, long queue times or slow response times on the autograder, internet access problems, accidental erasure or loss of files, or outside conflicting commitments (including job interviews, conferences, and so on).

We will consider extension requests made in person and at least two weeks in advance for religious holidays or planned medical procedures. Additionally, we will consider requests for extensions due to documented, unanticipated medical or personal emergencies. If you can't see the instructor in advance due to the emergency, then contact them as soon as you possibly can. In all cases, we require written proof of the emergency.

Regrade Requests

While we work hard to grade accurately, we sometimes make mistakes. If you believe we graded an assignment of yours incorrect, you can submit a regrade request before the announced deadline for regrades for that assignment. We reserve the right to regrade your entire assignment, which can cause your grade to go up, go down, or remain unchanged. Regrade requests should only be made if you believe a grading error has occurred, not if you are unsatisfied with the grading criteria.

Academic Integrity

You may give or receive help on any of the concepts covered in lecture, discussion, reading assignments, or textbooks. You are allowed to consult with other students in the class to help you understand problem specifications and definitions.

Unless otherwise stated, all assignments are to be solved individually. This means that no one should be watching you code, looking at your partial or complete solutions, or discussing solutions or solution strategies with you. You may not derive solutions from solutions found online for identical or similar problems. You may use small code snippets found in language documentation or other reference material but you must cite the source of the snippet in a code comment.

You may not submit any code that violates the rules and regulations in the assignment specification, or that attempts to subvert the grading system. The latter includes hard-coding solutions to public test cases, using run-time introspection to obtain information about private test cases, and so on. Code that violates these rules will summarily be given a zero.

To identify violations, we use both manual inspection and automated software to compare your solutions with each other and with prior solutions.

We report suspected violations to the Engineering Honor Council. The Honor Council will make final determinations about whether a violation of academic standards has occurred, as well as any sanctions. Read the Honor Code for detailed definitions of cheating, plagiarism, and other forms of academic misconduct.


Assignments 47%
Midterm 25%
Final 25%
Participation in course surveys 3%

The final course letter grade is based on the total weighted score earned. To pass the course, your weighted average assignment score must be a passing score and your weighted average exam score must be a passing score.

Final grades will be assigned based on the distribution of earned scores. We expect the median student to receive a B or B+, and students within one standard deviation of average can expect to pass.


We expect you take both exams at the scheduled times. If you miss an exam and a medical or personal emergency is not involved, you will receive a zero for the exam. If you anticipate an exam in another course or a religious holiday conflicts with an exam time, you must notify the instructor within the first three weeks of the term. The exam dates are posted at the start of the term (see webpage) so that you can avoid scheduling job interviews or other commitments on exam days; hence job interviews, etc. are not considered valid reasons for missing an exam.

Accommodations for Students with Disabilities

If you think you need an accommodation for a disability, please let your instructor know ​within the first three weeks of the term​. Some aspects of this course may be modified to facilitate your participation and progress. As soon as you make us aware of your needs, we can work with the Services for Students with Disabilities (SSD) office to help us determine appropriate academic accommodations. SSD (734-763-3000; ​​) typically recommends accommodations through a Verified Individualized Services and Accommodations (VISA) form. Any information you provide is private and confidential and will be treated as such.

Commitment to Equal Opportunity

As indicated in the ​General Standards of Conduct for Engineering Students​, we are committed to a policy of equal opportunity for all persons and do not discriminate on the basis of race, color, national origin, age, marital status, sex, sexual orientation, gender identity, genderexpression, disability, religion, height, weight, or veteran status. Please feel free to contact us with any problem, concern, or suggestion.

We ask that all students treat each other with kindness and respect.

Students' Mental Health and Well-Being

University of Michigan is committed to advancing the mental health and well-being of its students. If you or someone you know is feeling overwhelmed, depressed, and/or in need of support, services are available.

Research Disclosure

Your class work and logs of your interactions with hosted tools might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor at any time up to seven days after final grades have been issued. Opting out has no impact on your grade.

Right to Revise

The course staff reserve the right to make changes to the syllabus at any time, as they see fit. When a revision occurs, it will be announced on Canvas, and it is your responsibility to be informed of such.