Department of Information and Computing Sciences

Departement Informatica Onderwijs
Bachelor Informatica Informatiekunde Kunstmatige intelligentie Master Computing Science Game&Media Technology Artifical Intelligence Human Computer Interaction Business Informatics

Onderwijs Informatica en Informatiekunde

Vak-informatie Informatica en Informatiekunde

Generic programming

Onderwijs:Het vak INFOGP wordt in 2020/2021 niet aangeboden.
Nota bene:Er is geen recente vakbeschrijving beschikbaar.
Onderstaande tekst is een oude vakbeschrijving uit collegejaar 2012/2013
Inhoud: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.

The intended learning outcomes for the course on generic programming are:

  • Explain the role datatypes and generic programming (GP) play in programming
  • Solve programming problems and improve programs using GP
  • Evaluate GP methods/approaches, and describe their merits and problems
  • Critically analyse GP research articles
  • Perform research on a GP-related problem, and present your results both verbally and on paper

Literatuur:Kan veranderen!
AFP 2008 lecture notes and published research articles
Werkvorm:There are 3 main components:
  1. Lectures, exercises, and quizzes relevant to generic programming: datatypes, advanced types, and libraries
  2. Student presentations on research papers
  3. Course project
  • Quizzes = q = (q1 + q2 + q3) / 3
  • Research paper presentation + two exercises: p
  • Research project: r
  • Final exercise set: e
  • Subgrade: s = (2*q + 2*p + 4*r + 2*e) / 10
  • Final grade: g = min s 10
Inspanningsverplichting voor aanvullende toets:Om aan de aanvullende toets te mogen meedoen moet de oorspronkelijke uitslag minstens 4 zijn.
Beschrijving:We will discuss the following topics. Minor changes might be made before the course starts.
  • Interpretations of `generic'
  • Datatypes and kinds
  • Type-indexed functions
  • Kind-indexed types
  • Type-indexed types
  • Fixed-points, folds, maps, zips
  • Libraries for generic programming: EMGM, SYB, Multirec
  • Applications of generic programming: XML tools, Model-driven development, Exercise assistants