In this course we will use the following book on program analysis, in particular the chapters 2, 4 and 5:
Principles of Program Analysis Nielson, Flemming, Nielson, Hanne R., Hankin, Chris Corr. 2nd printing, ISBN: 3-540-65410-0
For the material on actual compilers I use a few chapters from the following book:
Modern Compiler Design Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J.H. Jacobs, and Koen Langendoen Second Edition The chapters we currently consider in the lectures are Chapter 10 on Explicit and Implicit Memory Management and Chapter 12 on Functional Programs and bits and pieces from Chapter 11 (11.3.7 on Lambda Lifting). If you can't skip the reading of Section 12.1, however, you should not be doing this course. The book has some additional interesting material that we do not consider in this course due to lack of time.
This book can be freely downloaded when you are on Eduroam.
Details on what material you have to study for the exam can be found here
We use Haskell for all labs. The easiest way to get all the tools you need is by installing the Haskell Platform. The lab computers should already be configured with the Haskell Platform.
In the course we use the UU Attribute Grammar system a lot:
You can install packages from the open package repository Hackage.
You do this using software called cabal-install, whose command-line tool is called
cabal and is included with the Haskell Platform. See the guide on how to install a Cabal package for more on this procedure.
On the lab computers the cabal command is available from the special cabal command prompt which can be found under
Start -> Standard Applications -> Informatica -> Haskell 2011.2.0.1 -> cabal
A former lecturer of this course, Atze Dijkstra, recorded two additional lectures, one on generating code for functional languages, and one on garbage collection. These are still available for interested students under a Solis login: