Ändringar mellan två versioner
Här visas ändringar i "Seminars, Modules, and Exercises" mellan 2018-05-22 18:19 av David Broman och 2018-05-22 18:29 av David Broman.
Visa < föregående | nästa > ändring.
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.[MonThursday June 121, 2018, 109.00-175.00], Room Amigda, 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:
* Read the TAPL Chapter 1 (as an introduction) and Chapter 2 (to make sure that you have the mathematical background).
* Read TAPL Chapters 3, 4, 5, 6, and 7 carefully.
* Read the paper Natural Semantics by Kahn (1987). See the literature page for a link.
* Read sections 2.1-2.3 of Simon Peyton Jones' book The Implementation of Functional Programming Languages (1987)
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:
* Read sections 1.1, 1.2, and 1.3 of the paper On understanding types, data abstraction, and polymorphism by Cardelli and Wegner (1985).
* Read the paper How to make ad-hoc polymorphism less ad hoc by Wadler and Blott (1989).
* Read sections 1 and 2 of the paper Gradual Typing for Functional Languages by Siek and Taha (2006).
* Read TAPL Chapters 15, 16, 19, and 23 carefully.