|Website:||website containing additional information|
|Period:||periode 4 (week 17 t/m 27, dwz 20-4-2009 t/m 3-7-2009; herkansing week 35)|
|Participants:||up till now 14 subscriptions|
|Schedule:||Note: from now on the schedule is to be found in Osiris|
|Teachers:||Dit is een oud rooster!
|Contents:||Software usually works with structured information; think of Web-browsers and HTML-documents. This structure can be represented by a data type, a DTD (Document Type Definition), or a model. If such a type changes, all programs that work on that type have to be changed too, although often the central problem does not change.
In the course on generic programming we will discuss methods with which problems can be formulated and solved for arbitrary data types, DTDs, or models. In a sense, this is a course on model-driven development, but the model is a type. The result is a generic program. An example of a generic program is a program for developing web shops: given the structure of the product you want to sell, you want to generate web forms, and database transactions based on this structure. By specialising to a given type we get a normal, type-specific program. Many design patterns are also instances of generic programs. In contrast with MDD methods, or design patterns, the focus of this course is on types, which gives many possibilities for constructing correct and abstract code, based on sound theories.
In the course we will discuss generic programming by means of a number of example problems. You will also see some basic lambda calculus, which can be used to type-check and specialize generic programs. We will use a couple of generic programming libraries for Haskell, such as EMGM, SYB, and Multirec.
|Literature:||The literature consists of a number of articles that will be distributed during the course.|
|Course form:||In the first part of the course we will discuss what generic programming is about, we will revisit datatypes and kinds, and you will learn how to write generic programs in a couple of generic programming libraries for Haskell. After the introductory lectures, you will take an existing application, and turn it into a generic application. We will take some real-life projects from hackage, analyse them, and (partly) turn them into generic programs.
You will be divided into small groups. Each group selects a particular package to turn into a generic program. You will have regular project meetings with the teacher or other assistants.
|Exam form:||During the course we will hand out a couple of sets of exercises (say n), which you have to solve individually (E1, ..., En, EF=(E1+... = En)/n). Furthermore, you will receive a grade for the project that will have to be presented and handed in (P). Finally, there will be an exam at the end of the course (E). Your final grade will be: if EF>=5 and P>=5 and E>=5 then (EF+P+E)/3 else min (EF,P,E). If any of the subgrades is missing you will not receive a final grade.|
|Minimum effort to qualify for 2nd chance exam:||You need to pass with at least a 4 to qualify for the 2nd chance exam|
|Description:||We will discuss the following topics. Minor changes might be made before the course starts.