Course Evaluation

You can download the results of the course evaluation as well as the action plan.


Week 16 17 18 19 20 21 22
Mo 14-16 (IMADA Sem. Room) Lecture
1, 2, 3, 4
Proposal 9
Lecture Presentations
1, 2, 3
7, 8, 9
Wed 14-16 (IMADA Sem. Room ) Intro Meeting Lecture Proposals
5, 6, 7, 8
Lecture Lecture Presentations
4, 5, 6

Office Hours

Just come to my office. If you want to make sure I'm there, contact me before (by e-mail, jabber, skype, phone).


Number Name Topic Proposal Presentation
1 Martin Kamp Jensen Generic Types in Java proposal slides project and benchmarks
2 Johnny Svensson Graphical User Interfaces in Java Observer pattern (Wikipedia)
Swing Tutorial
3 Rasmus Færing Larsen Introspection and Metaprogramming in Java presentation
source 1 source 2
4 Arun Vadiveal Aspect-Oriented Programming in Java DM8XX_AOP.tar.gz
presentation and sources
5 Patrick-Ranjit D. Madsen Introspection and Metaprogramming in Python
source and
source and presentation
6 Thomas Glue Rasmussen Python for Database Applications proposal3rd.odp
source and presentation
7 Jonas Haustad Webservices proposal presentation
source code
8 Bjørn Madsen Erlang Proposal Erlang source and presentation
9 Jakob Lykke Andersen Spec# proposal slides presentation and source


Course Material: Handed out individually.

You can download the introductory slides from the pizza meeting.

Course Description


The content of DM509 must be known.


Pass/fail based on presentation of articles and a project. Internal examination by the teacher.

Course type:

Lectures, discussion sessions, project work.

Teaching period:

4th quarter, spring 2009


The goal of the individual study activitiy "Advanced Concepts in Programming Languages" is to give the participants an understanding of advanced concepts in imperative, object-oriented, logic-based, and functional programming languages. The participants should also gain furhter programming experience by applying these advanced concepts to small practical problems. The advanced concepts for imperative programming include the use of polymorphic types in an object-oriented language (generics in Java), the use of functional progamming styles in imperative languages for high-performance computing (single assignment C) and the use of functional constructs in imperative scripting languages (higher-order functions and list operations in Python). For logic-based programming, the concepts introduced should include foreign language interfaces (interfacing Prolog with Java using InterProlog), meta programming (expert systems), database query languages (Datalog), and parser generation (definite clause grammars). For functional programming, extensions to combined functional logic languages (Curry) and to concurrent programming (concurrent Haskell) are considered. Furthermore, the implementation of web interfaces (using Haskell's cgi and xhtml modules) and graphical user interfaces (using Java Swing through the LambdaVM) are of interest.

Design by | Modified by Peter Schneider-Kamp | CSS 2.0