Bachelor courses

  • Reasoning and Logic (TI1306) by Neil Yorke-Smith  
    When is an argument logically valid and when is it not? How can we determine whether an argument is logically valid? How can we derive a logically valid conclusion from the premises? So that we can accurately formulate problems and prove their solutions, this course studies formal models (including set theory) and proof techniques (such as induction and contradiction). These mathematical tools allow us, for example, to demonstrate the correctness of an algorithm. .
  • Algorithmics (TI2306) by Mathijs de Weerdt
    Sommige problemen vereisen hun eigen stappenplan. Bij Algoritmiek leer je zelf een algoritme bedenken en de correctheid ervan beargumenteren op basis van een viertal concepten:(1) greedy (letterlijk "hebberig") telkens de volgende keuze maken, (2) het probleem opdelen in kleine stukjes en dan de oplossingen voor de kleinere problemen combineren (verdeel en heers), (3) soms zelfs met hergebruik van deeloplossingen (dynamische programmeren), en (4) het modelleren van het probleem als een stroomnetwerk.
  • Automata, Languages and Computability (TI2316) by Matthijs Spaan
    This course is about elementary theory of: Finite State Machines, Regular Languages, Regular Expressions, the Pumping Lemma for regular languages, Pushdown Automata and their associated Context Free Languages, Context Free Grammars, Chomsky Normal Form for these grammars, Turing Machines (deterministic and non-deterministic), the notions of Turing-recognisable languages and decidable languages, countable and uncountable sets, Cantor's diagonalisation method, reduction and reduction techniques, undecidable languages and non-Turingrecognisable languages.
  • Complexity theory (TI3306) by Cees Witteveen
    In this course we study the complexity of some important problems for which algorithms are known. The major issue here is whether a problem can be characterized as tractable (there exists an efficient algorithm for the problem) or as intractable (no efficient algorithm can exist). The famous P = NP? problem will be discussed and reduction techniques will be discussed to show that a problem is NP-complete. Also approximation techniques will be introduced and evaluated. Time permitting, we will also explore some hot topics of research including cryptography, zero-knowledge protocols, and quantum computation.

  • Bachelor Seminar by Cees Witteveen (among others)
    In this seminar, groups of 4-5 students are assigned to topics in algorithmics, computability and complexity. Each group is given a number of papers, has to write an essay and to give a public presentation during a mini-symposium. As our subject we had the scheduling problem we are investigating at NedTrain Company.

Master courses

  • Advanced Algorithms (IN4301): by Cees Witteveen and Mathijs de Weerdt (among others)
  • Randomized Algorithms (IN4337) by Matthijs Spaan
  • Algorithms for Planning and Scheduling (CS4010) by Matthijs Spaan
  • Seminar Algorithms: Economics and Computation (IN4335) by Mathijs de Weerdt
  • Parallel Algorithms (IN4026-12) by Cees Witteveen
    The main methods for constructing parallel algorithms. The Work-Time presentation framework, Basic techniques: Balanced trees, Divide and conquer, Cascading, Pipelining, Partitioning, Algorithms for matrix operations, Sorting and Searching, Graph Algorithms. This is the second part of the in4026 course "Parallel Algorithms and Parallel Computers".
  • MSc projects (see here)