Software foundations (or theory of programming languages) is the mathematical study of the meaning of programs. Students will learn ways to describe program behaviors, and mathematical tools to formalize and check interesting properties of programs. This course concentrates on operational techniques and type systems.
Additional announcements related to the course, as well as answers to the students’ questions will be posted on the mailing list so remember to check it frequently.
Our mailing list is hosted at https://groups.google.com/forum/#!forum/fos2018, and you must join it if you’re attending the course - all announcements, questions and answers will be posted there.
The mailing list is only available to registered members. In order to join the mailing list, open the google group and click ‘Apply for membership’.
We encourage you to team up when working on assignments. Teams can consist of one, two or three students and should not intersect with each other. It is okay to share ideas between teams, but sharing code is prohibited.
Team Registration: Please fill in the form to register your group. Registration will be closed on 30 Sep 2018, 23:59.
The Foundations of Software course at EPFL is taught on Tue 14:15-16:00, INM 10. Exercise sessions take place on Wed 10:15-12:00, CO 020.
|Tue, 18 Sep||Lecture on Introduction and Combinator Parsers|
|Wed, 19 Sep||Exercise session on arithmetic expressions|
|Tue, 25 Sep||Lecture on Arithmetic Expressions - Abstract Syntax and Proof Principles|
|Wed, 26 Sep||Exercise session on arithmetic expressions|
|Tue, 2 Oct||Lecture on The Untyped Lambda Calculus (1)|
|Wed, 3 Oct||Exercise session on untyped lambda calculus|
|Tue, 9 Oct||Lecture on The Untyped Lambda Calculus (2)|
|Wed, 10 Oct||Exercise session on untyped lambda calculus|
|Tue, 16 Oct||Lecture on The Simply Typed Lambda Calculus|
|Wed, 17 Oct||Pen & paper exercise session #1|
|Tue, 23 Oct||Lecture on STLC & Simple Extensions to STLC|
|Wed, 24 Oct||Exercise session on simply typed lambda calculus|
|Tue, 30 Oct||Lecture on More Extensions to STLC|
|Wed, 31 Oct||Pen & paper exercise session #2|
|Tue, 6 Nov||Lecture on Recursion and State with STLC|
|Wed, 7 Nov||Exercise session on simply typed lambda calculus with extensinos|
|Tue, 13 Nov||Lecture on Type Reconstruction and Polymorphism|
|Wed, 14 Nov||Midterm|
|Tue, 20 Nov||Lecture on Subtyping|
|Wed, 21 Nov||Exercise session on simply typed lambda calculus with Type Reconstruction|
|Tue, 27 Nov||Lecture on Objects|
|Wed, 28 Nov||Pen & paper exercise session #3|
|Tue, 4 Dec||Lecture on Featherweight Java|
|Wed, 5 Dec||Exercise session on simply typed lambda calculus with Type Reconstruction|
|Tue, 11 Dec||Lecture on Foundations of Scala|
|Wed, 12 Dec||Pen & paper exercise session #4|
|Tue, 18 Dec||Lecture on Foundations of Scala (cont.)|
|Wed, 19 Dec||Pen & paper exercise session #5|
Lecture notes and pen & paper session exercises are available in documents section.
Each enrolled student will receive a grade based on their results for the projects, the midterm exam and the final exam. The relative importance of each part is: 30% for projects, 30% for the midterm and 40% for the final.
Sharing ideas between groups is very recommended. Plagiarising code as part of a project will not be tolerated — whatever the source. In particular, you are not allowed to publish your projects in public repositories at GitHub/Bitbucket/… or to use solutions published by others.
In case of cheating, you will receive the grade “NA” (not acquired, zero) for the concerned project or exam, or for the whole course. You may furthermore be denounced and punished in accordance with the ordonnance sur la discipline. If you are in any fashion worried about this, speak with an assistant.