Projects

GP

Current Projects

  • Using data kinds for Multirec - Wout Elsinghorst and Stijn van Drongelen - Johan Jeuring
  • XML, HTML, XHTML, HTML5 - Liewe van Binsbergen, Joao Alpuim, João Paulo Pizani Flor - Johan Jeuring
  • XMonad - Andreas Nikas, Nikos Savvidis - Sean Leather
  • hlint - Laurens van den Brink, Jaap van der Plas - Sean Leather
  • Parsec2 - Tom Tervoort - Johan Jeuring
  • sifflet, hamusic, pandoc - Cas Plattel, Joseph Tsun Kiet Man, Paul Staats - Sean Leather

Procedure

  1. Choose a team.
  2. Choose a library to analyze.
  3. Discuss and implement.
  4. Meet regularly with supervisor. Your supervisor will be either the lecturer or someone else.
  5. Present your results. We will hold a workshop during the exam time for every team to present.
  6. Submit a report. See below.

Choosing a Team

These criteria can help you find other students who might be compatible with you.

  • Similar interests
  • Similar background

A team preferably consists of two people. Discuss with the lecturers if you want to have a team of three people or one person.

Choosing a Project

This year, we propose the following project for all students:

  • Analyse a library or an application on Hackage.
  • Determine if it uses generic programming techniques.
  • If not, could it use generic programming techniques to good effect? Which generic programming technique?
  • Implement (some of) the generic functionality.
  • If there are no opportunities for generic programming, move on to the next library.

You write a report about what your work. We intend to collect your report and write a single paper for the Workshop on Generic Programming, Boston, 2013.

You can pick any hackage library you like, but we think a library or application that is downloaded a lot is most interesting. Here are the most recent download statistics. Examples:

  • XMonad
  • transformers
  • haskell-src-exts
  • ...

Email the team and the chosen library to J.T.Jeuring@uu.nl by October 2.

It is not uncommon that the results of your project (which is sometimes followed by a Master's thesis project) will end up in a research publication. For examples, see:

  • [From the course in 2007, followed by a Master's thesis:] Martijn van Steenbergen, José Pedro Magalhães, and Johan Jeuring. Generic selections of subexpressions. WGP 2010.
  • [From the course in 2006, followed by a Master's thesis:] Thomas van Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring, and Bastiaan Heeren. A Lightweight Approach to Datatype-Generic Rewriting. WGP 2008.
  • [From the course in 2006:] Patrik Jansson, Johan Jeuring, and students of the Utrecht University Generic Programming class. Testing properties of generic functions. IFL 2006.
  • [From the course in 2006:] Johan Jeuring, Alexey Rodriguez, and Gideon Smeding. Generating generic functions. WGP 2006.

Your Own Ideas

Do you have some interesting idea for a research project on generic programming? We are certainly open to suggestions. Talk to the lecturer to see if your idea would fit the intended goal and scope of the course project.

Report and Presentation

The main focus of the project report and presentation should be the following:

  • Research question. Identify a clear and motivated question to answer.
  • Research contribution. Develop an implementation or new knowledge to answer the research question.
  • Research method. Discuss how you arrived at your answer.
  • Related work. Compare your answer with other contributions.

Your report has to be handed in on Friday, November 2 to J.T.Jeuring@uu.nl. The projects will be presented on Monday, November 5.

Grading

Project content:

  • Goal achievement
  • Novelty
  • Independent work
  • Compares well to related work
  • Clear and thorough explanation

Report:

  • 70% content
  • 30% style

Presentation (see Papers#Grading):

  • 70% content
  • 30% style

Total: 80% report, 20% presentation