CS 4110 - Programming Languages and Logics

General Information

A challenging course about programming languages that uses lots and lots of lambda calculus.


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.)


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.


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/


Edit this page on Github: classes/CS4110.md

Edit me on GitHub