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.
Algorithms are fundamental to computer science and software engineering. The real-world performance of any software system depends on: (1) the algorithms chosen and (2) the suitability and efficiency of the various layers of implementation. Moreover, the study of algorithms provides insight into the intrinsic nature of the problem, such as recognizing the possibility that no suitable algorithm may exist. Algorithms are essential in all advanced areas of computer science: artificial intelligence, databases, distributed computing, graphics, networking, operating systems, programming languages, security, and so on.
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.
Many important real-life combinatorial problems are NP-hard, for example planning train movements of scheduling power plants. For such problems no efficient (polynomial time) algorithms are known. In this course we study how to solve such problems using techniques such as heuristic search, constraint programming, mathematical programming, etc..
The current master courses offered by our group are the following (also see the study guide for more detailed information and the Course Guidelines Research Groups - booklet for details on the requirements):
- Advanced Algorithms (IN4301) by Karen Aardal, Mathijs de Weerdt, and Neil Yorke-Smith
- Algorithms for Intelligent Decision Making (CS4210-A) by Matthijs Spaan, Mathijs de Weerdt and Neil Yorke-Smith
- Intelligent Decision Making Project (CS4210-B) coordinated by Matthijs Spaan (while we offer no separate seminar course, you may use this as a seminar in your programme)
- Evolutionary Computing (CS4205) by Peter Bosman
- MSc projects (see Masters Projects)
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:
- IN4010(-12) Artificial Intelligence Techniques
- IN4150 Distributed Algorithms
- IN4391 Distributed Computing Systems
- CS4220 Machine Learning 1
- CS4230 Machine Learning 2
- CS4180 Deep Learning
- CS4015 Behaviour Change Support Systems
- 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:
- Seminar Algorithms: Economics and Computation (IN4335) by Mathijs de Weerdt
- Seminar Algorithms: Automated Scheduling (CS4175) by Neil Yorke-Smith
- Algorithms for Planning and Scheduling (CS4010) by Matthijs Spaan
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.