Labs
There will be two laboratory assignments. These are to be carried out in teams of at most two, at home. The lab sessions are only for getting assistance and presenting the solutions (see instructions on the respective document). For each assignment there will be one dedicated help session and one reporting session. For the latter, please be on time and have your report printed and stapled, and a computer ready to execute your program.
- The first lab assignment is about implementing an interpreter for the While language based on the notion of abstract machines developed in Chapter 4 of the textbook. The help session for this lab is on April 7, while the reporting session is on April 25.
- The second lab assignment adapts the interpreter from the first one to run with abstract values instead of with concrete ones, thus implementing the abstract interpretation technique for program analysis developed in Chapter 7 of the textbook, but in an operational semantics style. The technique is applied to program transformation. The help session for this lab is on May 9, while the reporting session is on May 16.
To report your second lab assignment, please select a time slot from this Doodle, on May 16 at 12:00 at the latest.
An alternative option for the second lab assignment is to explore some popular static analysis tool. If you choose this option, please do the following:- Select a popular static analysis tool that you can get hold of. Some of the best known ones are Coverity, Clocwork, FXCop, and the Clang Analyzer. Check also this list on Wikipedia.
- Install the tool on your machine. Make sure that it works properly by testing it on some examples.
- Send an e-mail to Dilian to get approval for your choice.
- Experiment with the tool. Find out what analyses the tool supports, and what technique is used for them (if this information can be found).
- Find the strengths and the limitations of the tool.
- Write a report that summarizes your findings about the tool:
- easiness of installation and use,
- supported checks and the underlying techniques,
- small own examples showing the strengths and limitations of the tool.