Foundations of Software

The Foundations of Software course at EPFL is taught on Tuesdays from 10:15 to 12:00 in INM 200. Exercise sessions take place on Wednesdays from 10:15 to 12:00 in CO 020.

Aditional announcements related to the course, as well as answers to the students’ questions will be posted on Moodle forum so remember to check it frequently.

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

Tue, Sep 15 Course Introduction and Combinator Parsers
Wed, Sep 16 Exercise session on arithmetic expressions
Tue, Sep 22 Course Arithmetic Expressions – Abstract Syntax and Proof Principles
Wed, Sep 23 Exercise session on arithmetic expressions
Tue, Sep 29 Course The Untyped Lambda Calculus (1)
Wed, Sep 30 Exercise session on untyped lambda calculus
Tue, Oct 6 Course The Untyped Lambda Calculus (2)
Wed, Oct 7 Exercise session on untyped lambda calculus
Tue, Oct 13 Course The Simply Typed Lambda Calculus
Wed, Oct 14 Exercise session on simply typed lambda calculus
Tue, Oct 20 Course STLC & Simple Extensions to STLC
Wed, Oct 21 Exercise session on simply typed lambda calculus
Tue, Oct 27 Course More Extensions to STLC
Wed, Oct 28 Exercise session on simply typed lambda calculus with extensions (1 week only)
 

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.

 

Part Importance
projects 30%
mid-term exam 30%
final exam 40%

 

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 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.