Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av David Broman 2018-05-22 18:19

Visa < föregående | nästa >
Jämför < föregående | nästa >

Seminars, Modules, and Exercises

Seminars

The course is divided into 3 modules. Each module starts with a seminar and ends with a seminar. 

  • Seminar 1: Course Introduction and Introduction to Module 1.
    [Fall 2017], Room Ada, Electrum.
  • Seminar 2: Presentation of solutions to Module 1 and introduction to Module 2.
    [Wednesday March 7, 2018, 13.00-17.00] Room Ada, Electrum.
  • Seminar 3: Presentation of solutions to Module 2 and introduction to Module 3.
    [Thursday April 19, 2018,13.00-17.00], Room Ada, Electrum.
  • Seminar 4: Presentation of solutions to Module 3. Course ending.
    [Monday June 11, 2018, 10.00-17.00], Room Amiga, Electrum.

Module Exercises

Module 1: Operational semantics and the lambda calculus

The main topics for module 1 are: 

  • Small-step and big-step operational semantics
  • Untyped lambda calculus
  • Fundamental typed functional programming

Exercises for module 1:

  • Perform all the tasks and exercises in this PDF-document.
  • You can use the following example code when solving the above exercises.

Reading guidelines for module 1:

Be prepared to give a presentation of some of the topics that you have read, or to present some of your solutions. Who will present what will be announced approximately 1 weeks before seminar 2 (when I know who have actually submitted exercises).

Module 2: Typed lambda calculus with extensions

  • Type rules
  • Simply typed lambda calculus
  • Type soundness proofs
  • Semantics for let bindings, pairs, tuples, records, sums, and lists
  • References and exceptions

Exercises for module 2:

  • Perform all the tasks and exercises in this PDF-document.
  • You should base your solutions on the implementation that you did in module 1.

Reading guidelines for module 2:

  • Read TAPL Chapters 8, 9, 10, 11, 12, 13, and 14 carefully.

Module 3: Subtyping and Polymorphism

  • Subtype polymorphism
  • Parametric polymorphism
  • Ad-hoc polymorphism
  • Structural and nominal type systems
  • Gradual typing

Exercises for module 3:

  • Perform all the tasks and exercises in this PDF-document.
  • You should base your solutions on the implementation that you did in module 1.

Reading guidelines for module 3: