In the course year 2017-2018 this course is taught by Jurriaan Hage ( All questions regarding the course should be directed at him, face to face or via e-mail.

Compared the course year 2016-2017, there are some changes in the order of the material, and part of the material will be new. The material on static analysis will remain the same, except that abstract interpretation will be added as a topic for the exam.

The course has a “practicum” which means that you work on your practical assignments in a class room. How much time we spent on this per week depends on how much material there is to lecture about. We start with more lectures and less practicals in the first weeks to get you going, and this will shift to more practicals and less lecture time in the later weeks. Assume that all the hours not destined for lectures will be used for practicals.

After the course has started, details of the schedule may still change. You will then be informed of this by e-mail.

Slot (week) Date Lecture Additional
1(17) Tuesday 2018-04-24 Intro Attribute Grammars Moved because of the defense of Alejandro on Monday
2(17) 2018-04-26 Static Analysis with Monotone Frameworks Form pairs and work on the first assignment
3(18) 2018-04-30 Monotone Frameworks continued
4(18) 2018-05-03 Monotone Frameworks continued
5(19) 2018-05-07 No lecture: Jurriaan absent
6(19) 2018-05-10 No lecture: Ascension Day
7(20) 2018-05-14 Monotone Frameworks continued
8(20) 2018-05-17 Monotone Frameworks continued
9(21) 2018-05-21 No lecture: Pentecost
10(21) 2018-05-24 Control-flow analysis
11(22) 2018-05-28 Control-flow analysis continued
12(22) 2018-05-31 Analyzing effects
13(23) 2018-06-04 Usage Analysis
14(23) 2018-06-07 Abstract Interpretation
15(24) 2018-06-11 Object-sensitive Analysis of Java
16(24) 2018-06-14 Garbage collection Extra: Type error diagnosis
17(24) 2018-06-18 Compilation of functional languages
18(25) 2018-06-21 Program slicing Chosen from: program slicing, program plagiarism detection, higher-rank polyvariance, type error diagnosis, software clustering using evolutionary algorithms