General Information
A challenging course about programming languages that uses lots and lots of lambda calculus.
Prerequisites
CS 3110 - Data Structures and Functional Programming
Topics Covered
- Structural induction
- Operational, denotational, and axiomatic semantics
- Lambda calculus
- Types and type inference
- Polymorphism
- Concurrency (CSP)
- Miscellaneous topics (verified machine language, etc.)
Workload
Weekly problem sets, some of which are coding in OCaml, and some of which are “paper-and-pencil” (read: LaTex) exercises. Reasonably sized.
2 in-class prelims and a final.
Uses Piazza.
General Advice
Useful for: Programming Languages Vector.
Don’t take it based on an impression you have from the title. It’s not learning about Java, C, etc.
It’s about learning the theory behind PL. Lots of proofs (mostly induction), and so if you find that tedious, don’t take it.
Testimonials
Great Class! Nate Foster teaches this class really well and keeps it extremely organized. You won’t have any problems.
My mind was blown away when I took 3110. It was blown a few more times throughout this course.
One of the top 2 or 3 coolest CS classes I have taken. I agree with the mind blown stuff. It’s all so cool.
Past Offerings
Semester | Time | Professor | Median Grade | Course Page |
---|---|---|---|---|
Fall 2012 | MWF 9:05 - 9:55 | Nate Foster | A- | http://www.cs.cornell.edu/Courses/cs4110/2012fa/ |