||Monday 14:00-16:00 and Wednesday 18:00-20:00
This course is an introduction into the research field of programming
languages. It aims to teach students formal systems for describing
and understanding programming languages and their features and
semantics, as well as techniques for automatically reasoning about
programs. The goals of this course are:
We will study lambda calculus and use it to describe both
functional and imperative features of programming languages, and
operational semantics as a way to describe the meaning of programs.
We study static analysis techniques, i.e., techniques for
automatically reasoning about program source code, such as type
systems, data flow analysis, alias analysis, and Hoare logic.
We will learn functional programming using OCaml, and write a
simple interpreter and type checker for our calculus.
Coursework amounts to:
- Two lectures per week. Attendance is highly recommended.
- Five homework assignments during the first half of the semester.
Homework assignments aim to improve understanding of course
material, and are timed to coincide with relevant lectures. Each
student must work separately for homework assignments. The best
solution for each homework assignment will be distributed as an
(optional) starting point for the next homework. All homeworks should
be coded in OCaml and are expected to take 3-5 hours per assignment.
- One mid-term exam. Exam material is everything covered in
lectures until the mid-term.
- One term project. Each term project will involve teams of 1-2
people depending on difficulty. Students can choose a project out of
a list of proposed subjects or propose their own project to the
instructor for approval. All teams should decide on a topic before
the middle of the semester. The projects will be graded based on the
implementation/deliverable, as well as one project presentation at the
end of the semester. During the second half of the semester, there
will be progress reports due on the state of the term project.
- Final exam. Exam material is everything taught during the term.
Requirement for passing grade is 50% on the final exam.
- The term project grade depends on implementation, the final
project report and one project presentation at end of semester.
Homeworks will be graded automatically. There is no partial credit
for code that does not compile or work.
There are two bonus points (max grade is 12/10). Scores over 10
will be truncated to 10.
None of these are required, although the class will follow the
structure of Pierce's book for the biggest part of the semester.