is the `official' web-page for this course and has schedule information. This page provides a longer description.
The problem of maintaining complex information is abundant in computer science and over the years many have tried to provide program development environments and "smart editors" that support the development of programs. Such support may range from syntax coloring in editors on the one hand, to full fledged program development systems that aim to provide the programmer with any kind of feasable support during his development process.
One of repeatedly occurring problems in such environments is how to keep the provided feedback up-to-date, without performing large analyses over and over again. An editor supporting the development of Haskell progams might e.g. continuously provide feedback about the inferred types and inconsistencies in the program under construction, but doing so by repeatedly compiling the program may be too expensive.
One of the first systems that supported the interactive development of structured objects was the Synthesizer Generator. Here the programmer provides an attribute grammar, together with a parser and an unparser for the non-terminals of the grammar. Out of this an editor is generated, which incrementally maintains the attribution of the tree, while the tree is being modified by the editor (and transformation indicated by the user). For some non-obvious reasons this system did not bring the successes that might be expected from it; maybe it was too far ahead of its time?
With the advent of Higher-order attribute grammars, in which attributes can be trees that can be attributed again, the mechanism used in the SG for mainatining concistency no longer can be used. So we switched to so-called function memoisation, where we try to use very general mechanisms to avoid recomputations. Srating from an attribute grammar system designed for paralle evaluation built by matthijs Kuiper, this resulted in the LRC-system
, that was completed by Joao Saraiva.
One of the open problems was how to produce nicely looking presentations, that can be efficiently edited and that provide a way back to the orginal tree, describing the document under construction. This problem was tackled in the Proxima system, designed and implemented by Martijn Schrage.
Also above the program level many things come together when developing a program. The goal of the Eclipse
project is to provide an infrastructure, based on the MVC, paradigm, in which many components cooperate in providing a consistent view of the world to the programmer, and which provides easy access to all the artefacts he might be interested in at the moment. This may be include the editing state of his environment, the stte of the debugger, the state of the documentation, the building state of his product, help information. Besides textual editors the system may provide special purpose editors for structures that are easier to describe by diagrams, etc.
In this seminar we jointly study a couple of papers and systems. usually we do so by having everyone reading a specific paper of chapter at home, and then jointly going through the paper during the lectures. We discuss problems that have shown up during reading, may try some small examples, look at small demo's that are produced by students and other participants.
We expect active participation from all participants. This implies that you have read the material that was handed out, you prepare questions about what you have studied. In some cases we may ask you to prepare a question to be answered by the whole group.
Also, after we have studied a specific paper, we will give you homework, to be handed in at the next lecture.
Your final mark will be synthesized from:
- the final exam (30%)
- your project (30%)
- your participation (20%)
- your homework (20%)
One of the essential characteristics of a seminar is that all particpants really participate. In order to see how well you are doing we require you to maintain a web page in which keep track of the hours spent to the project, and the results of those hours spent. This also helps us to check whether the projects we have assigned to you do not get out of hand and that you do not get stuck.