TDDA69 Data and program structures
Labs 2012/2013
Unless otherwise stated, we will use the lab series from Spring 2012, which was the same as the one from Spring 2010. The main update is switching from {DrScheme, Chez Scheme} to DrRacket. Some minor update have been made (eg instructions on how to get mutable pairs, explanations), but nothing that changes the tasks.
The labs
- Introduction. Setting up the system, handing in etc. Read this first.
- Lab 1: Recalling basic concepts from functional programming
- Lab 2: Streams (updated 130121)
- Lab 3: Evaluators I
- Lab 4: Evaluators II
- Lab 5: Compilers I - separating syntactic analysis and execution
- Lab 6: Non-deterministic and logic programming
- Lab 7: An explicit control evaluator
- Lab 8: Compilers II - compiling for register machines
Important comments and notes
Update log 2013:
- Lab 2, 130121. Task 4. "require"-info. Sample procedure names clarified.
Getting started
Read the introduction from the lab compendium. This includes set-up information at IDA and hand-in rules.
Lab hand-in
The labs can only be submitted as printouts, wrapped in IDA's "lab wrapper" (labbomslag). All lab partners must sign the wrapper. Labs can be submitted personally during the lab sessions, or left in the slot "Anders Märak Leffler IN" by SU11.
The corrected reports will primarily be returned personally, most preferably during the lab sessions (so that additional discussions can take place).
Deadlines
There are no separate deadlines for the labs. The idea is that the labs should be carried out somewhat so that you keep up with the pace of the lectures. As a rule of thumb: pass at least labs 1-4 during Vt1.
All labs should be approved by the first week of June at the latest. This means that if you want to have the chance for a possible re-submission, you should hand in your reports well ahead of time. After this date, the labs will be corrected only if there is time.
Workload
The labs are very varied in terms of the amount and kind of work they require. Some have a lot of code that needs to be written, while other are comparably shorter but require a lot of reading. The following table tries to provide approximate estimates of the workload associated with each lab. This does not correspond to "level of difficulty", but rather to the required workload.
La1: X X La2: X La3: X X X X X La4: X X La5: X La6: X X La7: X La8: X X X
Rough pre-requisites (cumulative)
This is not a formal guide, just a rough estimate. Tutorial 5 will probably be held week the last week of Vt1. If you have some spare time w11-14, you will be able to work on lab 5.
- La 1: Lecture 1-2, tutorial 1
- La 2: Lecture 3, tutorial 2
- La 3: Lecture 4-5, tutorial 3
- La 4: -
- La 5: Lecture 6, tutorial 5
- La 6: Lecture 7-8
- La 7: Lecture 9-10, tutorial 6
- La 8: Lecture 11
History
The compendium has been unchanged under 2008-2010. Before 2010, there has been some changes to the introduction in order to take into account the latest versions of the development environments. Compared with the 2007 lab series, there has been only minor clarifications about exercises 1:6a and 2:4, and a short description of DrScheme was added. Compared with the 2006 lab series, were lab 3 divided into two parts since it was experienced to be heavy. Compared with 2005 lab series there has been important changes in the formulation and the documentation of the labs. The content stayed however the same to a large extent.
All changes to the lab skeletons are documented in the file CHANGES located in the same directory as the lab files. Any future changes to the lab compendium or to the files is notified by e-mail to the course list and posted on the web.
Page responsible: Ahmed Rezine
Last updated: 2013-02-14
