PRELIMINARY! MIGHT BE SUBJECT TO CHANGE

Latest update Jan 2, 2008

To avoid spam, all mail addresses on this page have the "@" replaced by "#".

Assignments

These assignments constitute the examination in the course. You are supposed to hand in written solutions, preferrably by email. Handwritten, snail-mailed solutions are also allowed, but you then risk delays in my grading in case I'm out of office for some reason and cannot pick up the solution from my mailbox. Handwritten, scanned and emailed solutions are also OK: however, then make sure the scanned document is legible before you submit!

The solutions should be clear and complete enough: just answers aren't enough, I must also see how you arrived to the answers. However, obvious steps need not be displayed: if, for instance, a solution requires a fixed-point iteration, then it is likely that showing one ot two representative iterations in detail will suffice. What matters most is that I can see that you understand the principles and master the techniques.

For programming assignments, you should also hand in the source code (email required). This code must then be possible to compile and run on various platforms, so I can test it (i.e., don't use any platform-specific language extensions or similar).

Chapter 1

Chapter 2

Chapter 3

Chapter 4

Chapter 5

Chapter 6

Mini Project

Either do the mini project below, or suggest another mini project of comparable size, which you can do instead if approved.

Miniproject 2.3 (pp. 134-135). You are not allowed to use PAG/WWW (since you would be able to snatch a solution right away, and furthermore I want you to understand the basic function of the worklist algorithm well enough to be able to implement it). Apart from that, you are free to use whichever implementation language you want (however, a language like the suggested ML or Haskell is likely to give you a simpler solution). You don't have to write a frontend for the While language: rather, your analysis can take as input an instance of the monotone framework for the live variable analysis and the program to be analyzed. (That is: basically the control flow graph of the program, plus transfer functions for the blocks.)
Try out your implementation on a few examples, and hand in the results with your solutions.


Viewable With Any Browser

Björn Lisper
bjorn.lisper#mdh.se