Programming Languages

The Little Typer

Description

This is a BSc seminar. We will be reading the book “The Little Typer” by Daniel P. Friedman and David Thrane Christiansen. The book introduces, in the conversational style of all “The Little Lisp/Scheme/Prov/er” books, the fundamental ideas of programming with dependent types.

Entry in the Campus system: Link

The book consists of 16 chapters, and we will be reading ~1 chapter per week. Every student will be required to:

  • Every session: Contribute at least one question or remark. You can miss a maximum of 2 sessions during the semester.
  • Once: Be the discussion leader. If we have more students than sessions, we will assign 2 students for 1 session.

Book Blurb

An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time.

A program’s type describes its behavior. Dependent types are a first-class part of a language, and are much more powerful than other kinds of types; using just one language for types and programs allows program descriptions to be as powerful as the programs they describe. The Little Typer explains dependent types, beginning with a very small language that looks very much like Scheme and extending it to cover both programming with dependent types and using dependent types for mathematical reasoning. Readers should be familiar with the basics of a Lisp-like programming language, as presented in the first four chapters of The Little Schemer.

The first five chapters of The Little Typer provide the needed tools to understand dependent types; the remaining chapters use these tools to build a bridge between mathematics and programming. Readers will learn that tools they know from programming—pairs, lists, functions, and recursion—can also capture patterns of reasoning. The Little Typer does not attempt to teach either practical programming skills or a fully rigorous approach to types. Instead, it demonstrates the most beautiful aspects as simply as possible, one step at a time.

Prerequisites

Some experience with a language from the Lisp/Scheme/Racket family. The content of the Info I lectures using Racket as a language is sufficient.

Lecturer

Date and time

  • The first meeting will be on Monday, April 15th 18:00 in A302. On the first meeting a doodle link will be handed out which we will use to fix the weekday and timeslot of the weekyl meetings.