High-level notions of computations and programming language conceptsFDA180, 2005VT
|
|
Course plan
Lectures
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.
Recommended for
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
New course
Goals
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.
Prerequisites
Undergraduate courses on imperative programming, functional programming, logic
programming,
data structures and algorithms, data bases, and construction of compilers and
interpreters.
Contents
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.
Programming Systems
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.
Organization
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.
Literature
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.
Lecturers
TBA, preliminary:
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
Examiner
Anders Haraldsson
Examination
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.
Credit
4 or 6 credits.
Organized by
Anders Haraldsson, Björn Hägglund and Tobias Nurmiranta, AIICS with contributions from teachers from other divisions.
Comments
Page responsible: Anne Moe