15-814: Types and Programming Languages (F24)

Resources

Lectures

Lectures are the main source of information in this course. Attendance is not mandatory but strongly encouraged if you want to succeed.

The times of the weekly lectures are as follows.

The lectures are in person and there will be no recordings. We are not planning to enable remote participation.

For lectures that differ from the content in the textbook, we will publish lecture notes on the course website.

Office Hours

C.B. Aberlé:

Jan Hoffmann:

Textbook

Robert Harper, Practical Foundations for Programming Languages (Second Edition), Cambridge University Press, 2016.

The PFPL website contains Supplementary Notes. The website also contains a abbreviated PDF version of PFPL.

PFPL is available as an e-book through CMU Libraries.

Discussions and Questions

We will use Piazza for discussions.

Please post all questions you may have on Piazza. You have the option to make your questions private but please consider making public posts for the benefit of your peers. There is an option to remain anonymous for other students. Instructors are always able to see your identity.

Submitting Assignments

You will submit your assignment on Gradescope.

Software

We will use small prototype implementations of the languages we are developing. Binaries for CMU students are available at ~fp/bin/. A source distributions is also available (see below).

Lambda

Lambda is an implementation of the untyped λ-calculus, the polymorphic λ-calculus, and the core of a call-by-value functional language.

You can find some information in readme.txt and some examples at examples/.

To run this on the linux.andrew.cmu.edu machines, invoke

$ ~fp/bin/lambda myexample.lam

or (for polymorphically typed code)

$ ~fp/bin/lambda myexample.poly

or (for call-by-value typed code)

$ ~fp/bin/lambda myexample.cbv

or (for checking proofs in intuitionistic propositional logic)

$ ~fp/bin/lambda myexample.prf

Source Distribution

lambda.zip (v1.1, Nov 5 2021) For installation instructions see the file readme.txt in the distribution. You will need the mlton compiler for Standard ML, but it also runs with SML/NJ.

Latex

See The LaTex Project for information about LaTex.