Theory of Types and Programming Languages

Staff

Documents

Assignments

Project 1 - The NB Language

Project 2 - Untyped Lambda Calculus

Project 3 - Simply Typed Lambda Calculus

Project 4 - STLC Extensions

Project 5 - STLC with Type Reconstruction

Assignments

Over the course of the semester, we will post five assignments that will require you to code up five moderately complex Scala applications (one per each assignment) that highlight certain theoretical aspects of the course.

Every assignment will become available on this website at due time (usually after the deadline of the previous assignment). We will be notifying you about new assignments through Canvas.

It is okay to share ideas between students on the assignments, but sharing code is prohibited.

Getting started with Scala

All development during the course will be done in Scala. Here we provide the instructions how to setup the Scala development tools.

First, you need to install the sbt build tool. See the instructions for installing JVM, Scala and SBT here. You can run sbt compile and sbt run in the console to compile and run the project.

We recommend using VS Code with the extension Metals for development. You can find instructions for installing VS Code here. It suffices to install Metals and open the assignment directory in VS Code.

You can also use IntelliJ IDEA for development. You can import the project into the IDE:

  1. Click Import Project.
  2. Select the directory where you unpacked the assignment.
  3. Click Open.
  4. Select Import project from external model > SBT, click Next.
  5. Click Finish.

If you don’t like IntelliJ IDEA, feel free to use alternative editors or even develop in the console, as long as your project passes our tests.

Late submissions

If you miss a deadline, you can still submit your project, however your grade will be reduced. Late submissions will be graded with 30% deduction of points for every day after the deadline.

Feedback on submissions

If you need more detailed feedback on your submission, please send an email to one of the assistants to reserve an office slot, so that we may study your code together.