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.
- Tue, 12:30 - 1:50 pm, Doherty Hall 1117
- Thu, 12:30 - 1:50 pm, Doherty Hall 1117
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é:
- Mon, 2:30-4pm, NSH 4201
Jan Hoffmann:
- Thu, 2-3 pm, GHC 9105
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.