Bachelor courses

  • Reasoning and Logic (CSE1300/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

The current master courses offered by our group are the following (also see the study guide for more detailed information):

Besides this, there are many relevant and interesting courses offered by other groups that can help you if you are interested in doing your thesis project in our group:

  • IN4150 Distributed Algorithms
  • IN4391 Distributed Computing Systems
  • IN4010(-12) Artificial Intelligence Techniques
  • IN4320 Machine Learning
  • CS4180 Deep Learning
  • IN4085 Pattern Recognition
  • IN4178 Optimization (Swarm-based Computation with Applications in Bioinformatics)
  • WI4062TU Transport, Routing and Scheduling
  • WI4051TU Introduction to Operation Research
  • WI4207 Continuous Optimization
  • WI4410 Advanced Discrete Optimization
  • SEN1141 Managing Multi-actor Decision Making
  • Mastermath/Diamant3 Algorithms Beyond the Worst Case
  • Mastermath/LNMB3 Scheduling


 Previous masters elective courses offered included:

Course year 2017/2018 was the last time these seminars were offered in this form. If you are interested in these topics, we refer you to CS4210-A and CS4210-B. You may then indicate your interest, and in particular in CS4210-B there is the possibility to choose topics related to one of these seminars.