Computer Science at LIACS, Leiden Univeristy

Master thesis

I finished my Master Thesis titled Unique factors in the human genome in April 2005. Here is the presentation I gave (in Dutch). And here is a short presentation I gave on the same subject (in English).

My supervisors were Dr. Peter E.M. Taschner (department of Human Genetics, LUMC), Dr. Hendrik Jan Hoogeboom and Dr. Walter A. Kosters.

Many techniques in Bioinformatics use unique strands of DNA. Techniques like MPLA, PCR and micro arrays all profit from the unicity of markers. We have made a program suite that implements the following:

  • comb: Convert FASTA input files to binary, also reserves space for the output of the mpass program.
  • dcomb: Convert binary files back to ASCII.
  • mpass: Seach for unique primers of a specified length.
  • repeats: Filter out some simple repeats.
  • search: Filters out primers for which the GC-count and/or temperature is not acceptable and makes primer pairs.
  • dcall: Convert binary files back to ASCII (for debugging).
  • getinfo: Extract information from a binary data file.
  • setinfo: Manipulate the information field of a binary data file.
  • statistics: Count how many factors are unique, present once, twice, thrice or four times or more.

An online version of the search program is also available. Here is the source for those who want to run this program on their own webserver.

Project studies

  • A project that focused on combining artificial intelligence with chess endgames titled Ideas regarding chess endgames.
  • A project that describes how to find small pieces of DNA with certain properties, see the MLPA page.

Projects done for a minor (Mathematics)


Numerical mathematics

Here are some programs that can be useful. The first one calculates the solution of an arbitrary equation. It can use three methods to do this: The bisection method, Newton's method or a hybrid method. This is a nice example of using pointers to functions (and using a function as an argument) as well.

The second one calculates the integral (or primitive) of a function. The functions to do this are the extended trapezium rule, the extended middle-point rule and Romberg extrapolation in combination with one of the two.

Artificial intelligence

These programs I made for a course named artificial intelligence.


The first one is about a game named chomp. The "intelligence" tries to solve the problem in a number of ways: random, brute-force, with heuristic functions and with some simple strategies. The point of this program is to see how good every strategy performs. Here is the documentation.


Fortunately my docent needed someone to figure out how to get a particular operating system (LegOS) on a Lego robot. And that person was me. This was the paper I wrote about it.

Data Mining

This is a document about data mining. It it written in Perl and if I were the one who was correcting it, I would have sent it back. Anyway, here is the program.

A neural net

This is a document about a neural net. It simulates an arbitrary function. Here is the source.

A genetic algorithm

This is a document about a genetic algorithm. This particular algorithm tries to find a solution to a tiling puzzle. Here is the source.

Genetic programming

This is a very simple genetic algorithm I wrote just to see if it works. Here is the source.

Later I made an evolutionary algorithm that I still use as a basis for many of my genetic algorithms. It is a very fast, low-level program. This is the source.

Grid computing

Here is a document about how I distributed a chess program named Crafty onto a grid (or supercomputer). This is the source.