The overarching topic of CS221 is scientific programming language design. The subtopics to be surveyed include the lambda calculus, dynamic and static semantics, programming language theorems and proof techniques, machine-assisted proofs, and selections of classic and recent literature in programming languages research.
Students will work in Standard ML and LaTeX, and some Java.
Course content will appear both at this site and on piazza. You either have received or will receive an invitation, with registration instructions, to the piazza course site at your uchicago.edu email address. Please let us know as soon as possible if you have not received an invitation.
Lectures are in Ryerson 251. They are Tuesdays and Thursdays from 12:00 to 1:20.
The homework exercises will be presented on piazza. Homework exercises will be roughly weekly and all homework transactions will be electronic, through git. There is no group work in CS221. Each student's subversion repository is named CNET and is hosted at mit.cs.uchicago.edu.
There will be a midterm exam on Tuesday, May 2 at the usual class time (12:00–1:20).
There may be a second exam at the end of the quarter.
Adam Shaw Mondays 1:30pm–3:00pm and Fridays 1pm–2:30pm (Ryerson 128), or by appointment
Types and Programming Languages, Benjamin Pierce, MIT Press, ISBN-10: 0262162091, ISBN-13: 978-0262162098. This text is for sale at the Seminary Co-op.
Software Foundations, Benjamin Pierce and others, available online, free of charge, at https://www.cis.upenn.edu/~bcpierce/sf/current/index.html.
Optional Supplementary Texts
Elements of ML Programming, Jeffrey Ullman, Prentice-Hall
ML for the Working Programmer, L.C. Paulson, Cambridge University Press
Programming in Standard ML, Robert Harper, http://www.cs.cmu.edu/~rwh/smlbook/book.pdf
Standard ML of New Jersey: smlnj.org
Piazza (Q&A, announcements, course materials) [website]
College-wide honesty guidelines are here.
The following rules of thumb summarize honesty as it pertains to CS221:
- Never copy work from any other source and submit it as your own.
- Never allow your work to be copied.
- Never submit work identical to another student's.
- Document all collaboration.
- Cite your sources.