Below are listed the practical assignments of this year. If you did the course before mail the lecturer about what you should do and should not do.
All assignments should be performed in teams of two. You are free to discuss ideas on design and implementation (because the necessary explaining helps you understand), but you may never share between teams any code or documentation, or even letting them read it from a screen. It is the responsibility of both team members to ensure that both members participate equally. Also, note that understanding of much of the material comes mostly from implementing it.
In my experience students underestimate how hard the second and third practical are (the first one is new so I do not know about that one). It usually works best to at least visit the practical slots and make sure you are on the right way.
|Attribute grammars (20%)||Mon, 14th of May, 2018 at 13.00||ag.pdf ag-base.zip|
|Monotone frameworks (40%)||Mon, 4th of June, 2018 at 13.00||mf.pdf mf-base.zip|
|Type and effect systems (40%)||Mon, 25th of June, 2018 at 13.00||tande.pdf tande-base.zip|
For the Monotone Frameworks assignment it is typically possible to do something more adventurous, like type analysis for Python or PHP. However, the risks are all yours. It is mandatory to come and talk to me before you attempt such a project. The maximum number of participants for a project such as this is three (instead of the usual two for the standard assignment). Note that you must use monotone frameworks to do this, so in essence you are implementing the same techniques, but in a more complicated context. Also, another way to make this assignment more challenging is by doing many extras as explained in the project description.
Whatever the assignment is, I expect at least the following to be submitted:
Although we do not have a separate slot to work on exercises, it may be useful to consider some of the exercises from the program analysis book. In particular: to be announced. During the lab hours you can ask questions about these.