1. Objective and prerequisites
In this course, you will learn about different programming paradigms and evaluation strategies. After completing this course, you should be able to:
- describe aspects of the evaluation and execution of different programming models,
- explain and demonstrate how design choices in programming language design affect both expressive power and efficiency,
- analyze and evaluate programming languages based on their evaluation and compilation strategies,
- implement programming languages using interpreters and compilers
A basic course in functional programming with any Lisp dialect is a prerequisite. Examples of such courses include, but are not limited to, TDDC57/TDDC67 Funktionell programmering och Lisp (D, C), TDDC80 Programmering, Lisp och funktionell programmering (C), TDDB81 Programmering (D), TDDC74 Programmering: Abstraktion och modellering (Y) and TTIT06 Thema: Grundläggande datavetenskap (IT).
Two introductory lectures are given for students from the IP program with a very good knowledge in other programming languages.
2. Course content
The course covers the following points:
- Scheme, used both as a tool and as a modelling language.
- different programming paradigms
- implementation interpreters and compilers
- evaluation aspects, parameter passing and execution environments
- streams, non-deterministic and logic programming
The course closely follows the Abelson & Sussman textbook Structure and interpretation of computer languages. The lectures focus on the theory and are complemented by the tutorials which concentrate on solving concrete problems and on preparing for the labs. In the labs, you will be able to experience the different models introduced in the course and the difficulties involved in implementing them.
The course runs over two periods. It starts with relatively simple labs. When we get in the Lisp interpreters' parts, starting from lab 3, the labs quickly require more time to achieve, which can be perceived as much more difficult, with a relatively large amount of code that needs to be understood, modified and augmented. You have to do most of the implementation work on your own time. There is a number of scheduled supervised lab sessions - make sure to profit of those. Do not fall behind in the labs as it will get more difficult to follow and to profit of the connections with the lectures and the tutorials.
The course assumes that you are already familiar with the first two chapters of the Abelson & Sussman textbook. The content is basically the same as the previous Lisp courses most of you have had. It is highly recommended for you to become familiar with the Lisp dialect Scheme. Besides refreshing many concepts from previous courses, the two chapters contain great and enjoyable examples.
Registration to the labs is via the WebReg system (see the course webpage). The labs are carried in groups of two students. There will be two PUL rooms booked for each lab session and you can sit in any of those. The lab results will appear in WebReg as the course advances.
The following table gives an idea of the scheduled course activities
|VT1||12 h||8 h||16 h|
|VT2||12 h||4 h||14 h|
|Total||24 h||12 h||30 h|
The course examination consists of two parts :
- LABA (4,5 hp) consists of the labs.
- TENA (1,5 hp) consists of a written exam, also required for the final grade. Many questions will build on the carried labs.
We closely follow the classical textbook Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman. We use the second edition from 1996 (light blue).
The book is usually referred to as SICP (pronounced s'ickpe:), which corresponds to the abbreviation of the title, or as Abelson & Sussman after the authors.
We highly recommend that you buy the book. It is a very classical text and we will closely follow it. The book has been used for several years and it should not be a problem to find used copies if you want. It is also freely available on the web.
In addition to the course book, the labs compendium is available on the course homepage.
The web area of the course is
http://www.ida.liu.se/~TDDA69. You can find more information
about the lectures, the tutorials and the labs.
Additional information will be sent to the course mailing list
firstname.lastname@example.org. All registered students will be automatically added to the list.
All students are expected to read their e-mail and to regularly visit the course homepage
Page responsible: Cyrille Berger
Last updated: 2017-01-27