High-level notions of computations and programming language conceptsFDA180, 2005VT
Approx 24 h
Several lectures will be held by invited experts. Such lecture will cover a full day. The rest of the lectures will be given by teachers and PhD students on a 2 hour basis.
For all graduate students in computer science, especially students from CIS, CUGS and ECSEL.Also master science students are welcome.
The course was last given
The goal of this course is to
1. give the participants the opportunity to get acquainted with good state-of-the-art high-level abstractions and concepts found in programming languages,
2. provide insight in what distinguishes productive abstractions for less productive ones, and
3. provide an overview of techniques for implementing and deploying new abstractions.
Undergraduate courses on imperative programming, functional programming, logic
data structures and algorithms, data bases, and construction of compilers and interpreters.
Topics that may be covered by lectures and student presentations include but
are not limited to:
1. symbolic computation,
2. lazy evaluation, closures, higher-order functions and continuations,
3. concurrency, inter-process communication and synchronization,
4. active objects and mobile agents,
5. object views, directed interfaces, and dynamic type systems,
6. multimethods and predicted dispatch,
7. reflection, introspection and intercession,
8. persistent object systems and garbage collection,
9. error management, assertions and declarative debugging,
10. structure editing and interactive debugging,
11. aspect-oriented programming,
12. generative programming,
13. constraint imperative programming,
14. naturalistic programming,
15. cognitive aspects of programming languages, and empirical studies on what makes abstractions productive,
16. partial evaluation and abstractions for defining program transformation in a modular fashion,
17. staged compilation and virtual machines supporting optimization throughout life-time of a program.
To avoid clashes with other courses, the details of constraint logic programming, Modelica, end-user development, program analysis, databases and term rewriting will be avoided to largest extend possible.
Several programming languages and tools used and discussed during the course may include but are not limited to:
AspectJ, Curry, Eclipse, Erlang, Haskell, JRocket, Mays, Multi-Java, Matematica, Modelica, LLVM (Low Level Virtual Machine, Oz/Mozart, MZtake, Prolog, Ruby, Scheme, Scream, Self and Smalltalk/Squeak.
The course will also include some lectures giving historical aspects on the development of concepts and systems related to the course.
As a course with some intensive lecturing by invited lecturers. Student
presentation of papers. Laboratory work mainly based around home examinations.
There will normally be two occasions per week for lecturing and presentations
The course will be given during April-June 2005 covering the part giving 4 credits. During the fall it will be possible to give 2 extra credits. See examination.
TBA. Research papers and documentations.
A main book to be considered is the new book by Peter van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming.
Other books are one in functional programming with Haskell and one on high level optimizations Jones, Gomard, Sestoft, Partial Evaluation and Program Generation.
Anders Haraldsson, Peter Fritzson, Björn Hägglund, Tobias Nurmiranta and other lecturers at IDA.
Björn Lisper, Mälardalen, about Haskell.
Invited lecturers for Oz/Mozart and partial evaluation and other topics
The course is divided in three parts, of which the third is optional.
For the first part (2 credits), each student selects a topic and surveys the abstractions that are related to that topic and provided by one or more programming systems. The work is to be presented orally and in a written report.
The second part (2 credits), will be a home exam to be solved individually. Exercises will be of both theoretical and practical nature. The former are based on lectures, course literature and student reports. The latter require programming using some of the programming systems listed.
The third part (optional 2 credits) will be focused on implementation issues and inventing new abstractions. Credits are obtained by defining and completing a small project.
4 or 6 credits.
Anders Haraldsson, Björn Hägglund and Tobias Nurmiranta, AIICS with contributions from teachers from other divisions.
Page responsible: Director of Graduate Studies