The curriculum consists of a 9-day course organized around the following topics:
- Introduction and Foundational Theory
of the school will introduce students to the basic principles of
program analysis and programming language design, and provide them
with the technical background
necessary to understand the later lectures.
- Advanced Techniques for Software Reliability
This portion of
the school will delve into recent research in the area of
language-based tools for improving software quality and reliability. The lectures will focus on several
technologies for detecting software defects in large-scale systems.
The intent is to give students sufficient
depth in this area to allow them build upon these results in their
own future research.
- Theory, in Practice
This portion of the school will expose
students to applications of the theoretical tools discussed above to
real-world systems. For example, students will see how type theory
can help find bugs in the Linux kernel, how model checking can be
used to check software protocols in Microsoft Windows device drivers.
- Question and Answer
In addition to the lectures, the students will have scheduled
opportunities to ask questions of the presentors.