The Foundations of Software course at EPFL is taught on Tuesdays from 10:15 to 12:00 in INM 10. Exercise sessions take place on Thursdays from 8:15 to 10:00 in INF 1.


The final exam will take place Friday, 20th of January 2012 at 8:15 in INM200.


Description

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.

Schedule

Tuesday, Sep 20
Course “Introduction and Combinator Parsers”.
Thursday, Sep 22
Exercise session on arithmetic expressions
Tuesday, Sep 27
Course “Arithmetic Expressions — Abstract Syntax and Proof Principles”
Thursday, Sep 29
Exercise session on arithmetic expressions
Tuesday, Oct 4
Course “The Untyped Lambda Calculus (1)”
Thursday, Oct 6
Exercise session on untyped lambda calculus
Tuesday, Oct 11
Course “The Untyped Lambda Calculus (2)”
Thursday, Oct 13
Exercise session on untyped lambda calculus
Tuesday, Oct 18
Course “The Simply Typed Lambda Calculus”
Thursday, Oct 20
Exercise session on simply-typed lambda calculus
Tuesday, Oct 25
Course “Simple Extensions to STLC”
Thursday, Oct 27
Exercise session on simply-typed lambda calculus
Tuesday, Nov 1
Course “More Extensions to STLC”
Thursday, Nov 3
Pen+paper exercise session for midterm 2008 (solution)
Tuesday, Nov 8
Course “Recursion, References and Store Typings”
Thursday, Nov 10
Mid-term exam in INJ 218. Exam starts at 8:00.
Tuesday, Nov 15
Course on type reconstruction
Thursday, Nov 16
Deadline for simply-typed lambda calculus with extensions exercise (no exercise session related to homework this time)
Thursday, Nov 17
Exercise session on type reconstruction
Tuesday, Nov 22
Course “Subtyping”
Thursday, Nov 24
Exercise session on type reconstruction
Tuesday, Nov 29
Course “Objects”
Thursday, Dec 1
Exercise session on type reconstruction
Tuesday, Dec 6
Course “Featherweight Java”
Thursday, Dec 8
Exercise session on type reconstruction
Tuesday, Dec 13
Course “Featherweight Java”
Thursday, Dec 15
Exercise session on "Featherweight Java"
Tuesday, Dec 20
Course “Featherweight Scala”
Course “Dependent types”
Thursday, Dec 22
Pen+paper exercise session: 2007 exam (solution)

Whole program…

Course's grading

Each enrolled student will receive a grade based on his results for the projects (submitted via Moodle), the mid-term exam and the final exam. The relative importance of each part is as follows.

PartImportance
projects30%
mid-term exam30%
final exam40%

A note about cheating (plagiarism)

Sharing ideas between groups is very recommended. Plagiarising code as part of a project will not be tolerated — whatever the source.

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.