Where and When

For access to lectures and precepts, join us on Ed. That will activate the links below. (You don't have to be registered for the course, but you must have a account.)

Course Staff

Name Position Section Email Office Hours
Andrew Appel Professor Lecture appel@ CS 209
David Walker Professor Lecture dpw@ CS 211
Joomy Korkut Lead Preceptor P05 joomy@
Devon Loehr Preceptor P06A, P07A dloehr@
Akash Gaonkar Preceptor P04, P07 agaonkar@
Danqi Liao Preceptor P03, P04A dl33@
John Li Preceptor P02A, P03A johnli@
Dmitry Paramonov Preceptor P02, P06 dp20@

If you cannot make the course staff office hours, e-mail your preceptor (or one of the professors) to set up an appointment.


There will be seven assignments throughout the semester. The first three are due in consecutive weeks to get you up to speed with OCaml, while the last four are spread across the rest of the semester. The last assignment will be due near the end of reading period.

Lateness policy. Programming assignments are due at 11:59pm on the date specified, with a 2-hour grace period. Late assignments are assessed a 20% penalty per day or partial day: 0-2 hours late (grace period — no penalty), 2-24 hours late (20%), 24-48 hours late (40%), and so forth. The grace period applies to the first day only!

Your penalties for the first 4 late days during the course are automatically waived. However, you cannot submit the last assignment late---all work must be turned in by Dean's Date. If your last assignment is incomplete on Dean's date, submit it anyway and you will receive partial credit as appropriate.

No additional lateness penalties will be waived except if there is a medical or personal emergency, as assessed by the residential college deans. All exceptions and extensions must be approved by the lead preceptor.

Collaboration policy and Academic Integrity. By default, we will be using the COS 126 Collaboration Policy. You must read this policy before beginning your first assignment. If you have any questions or doubts about the policy, please ask. There is never any harm in asking for clarification of the collaboration policy. However, the penalties for plagiarism or other violations of the policy are very severe.

The COS 126 Collaboration policy refers to the "work" that you produce for the course. In COS 126, that work includes code, comments, README files, etc. In COS 326, your work includes all those things as well as proofs of program properties. You should treat your proofs in exactly the same way as you treat your code. For example, you shouldn't show your proofs to anyone or allow them to be copied, etc.

In COS 326, you may discuss problems with friends as long as you do not share your code or proofs. In some of the assignments, we hand out some code to get you started. You can look over the (unchanged) code that we hand out with a friend in order to try to understand it. You can also discuss general strategies for solving the problems contained in an assignment, but those discussions shouldn't involve writing code together. Once you write or change a line of code, you can no longer share that piece of code with a friend. (You could re-download a fresh, unchanged copy from the course web site for a discussion, if you wanted to.)

If, for some assignment, we wish to deviate from the policies listed above, we will say so explicitly on that assignment. However, you must assume that by default there will be no deviation.


There will be a midterm exam near the middle of the semester. There will be a final exam during the exam period. Grades will be determined 40% by the two exams, and 60% by seven assignments. The exams are evenly weighted; but the longer and more challenging assignments will be worth correspondingly more than the earlier assignments, as detailed on the Assignments page.