Teaching
Vision
The gap is growing between the abstract machine models used by programmers and the hardware machine models where accurate performance predictions are still tractable. This gap is growing due to unsolved divergences between technology developments in computer architecture, on the one hand, and on the other hand the growing demand for productivity in software engineering.
This gap also implies that it is becoming increasingly difficult to predict software performance, as well as other extra-functional behaviors of software (eg. latency, contention, etc.). This problem leads to measurable defects in the computing industry: excessive development costs, unscalable infrastructures, unjustified (and dangerous) lack of guarantees on mission-critical technology, etc. The growing diversity of hardware and software decreases the probability that a single theoretical breakthrough will bridge this gap; solutions will be developed iteratively, distributed across the field.
Unfortunately, our current computer science education does not reveal this situation, whereby IT experts and computer scientists spend years in their career to first discover then understand this gap.
My proposal: stimulate and prepare the next generation IT experts and computer scientists to bridge this gap. This preparation must occur during their early studies, so that they can carry out the necessary innovation during their “creative” years (20-30 years old).
Student supervision
I am habilitated to supervise graduation projects for BSc and MSc level students in computer science.
Looking for a graduation project? See here for a list of available project topics.
Are you registered as student in the Netherlands and interested in carrying out a MSc or BSc project in Amsterdam related to the following topics?
- programming language design and implementation,
- resource-aware functional programming,
- compilers and operating systems for embedded systems,
- computer architecture,
- static meta-programming,
- extra-functional coordination,
then feel welcome to contact me! I can propose project topics, or act as supervisor if you come with your own topic.
Past Courses
- 2017:
- Programming in C, BSc Informatics, Universiteit van Amsterdam
- 2014-2017:
- Operating systems, BSc Informatics, Universiteit van Amsterdam.
- Data structures, BSc Informatics, Universiteit van Amsterdam.
- 2012-2013, 2013-2014, 2015-2016: Computer Architecture, BSc Informatics, Universiteit Leiden.
- 2014-2015:
- Systems Programming, BSc Informatics, VU Amsterdam.
- Introduction to Programming, BSc Econometrics/Business Analytics, VU Amsterdam.
- 2011-2012: Advances in Computer Architecture, MSc Grid Computing, Universiteit van Amsterdam. In replacement of Chris Jesshope.
Ongoing and completed student projects
- Doctoral theses:
- Mike Lankamp, Design and Evaluation of a Multithreaded Many-Core Architecture, PhD thesis (co-supervised with prof. C. Jesshope), 2007-2015
- Dr. Jian Fu, A fault tolerance framework in a concurrent programming environment, PhD thesis (co-supervised with prof. C. Jesshope), 2010-2014
- Dr. Qiang Yang, On the exploration of the DRISC architecture, PhD thesis (co-supervised with C. Jesshope and M. Lankamp), 2009-2014
- Master theses:
- Tuba Kaya, Automatically detecting ORM performance anti-patterns on C# applications, MSc Thesis, 2015.
- Andrei Matei, Towards Adaptable Parallel Software - the Hydra Runtime for SVP Programs, MSc Thesis, 2009/2010
- Bachelor theses:
- Mark Laagland, Advanced virtual memory translation in a many-core architecture, BSc thesis (honours), 2015
- Ellen van Leeuwen, Availability Analysis of PostgreSQL under Fault Injection, BSc thesis, 2016
- Gerard Schröder, Robustness Analysis of distributed databases via fault injection, BSc thesis, 2016
- Max Grim, Consistency analysis of CockroachDB under fault injection, BSc thesis, 2016
- David Veenstra, Technologies and basic blocks for a modern educational operating system, BSc thesis, 2016
- Daan Siepelinga, VisualBlame - An interactive Git blame visualization, BSc thesis, 2016
- Thomas van Ophem, Geography-based selection of news items, BSc thesis, 2015
- Mike Trieu, Multi-touch visualisation of many-core simulations, BSc thesis, 2015
- Justin van Wageningen, Automatic collection and merging of bibliographic data, BSc thesis, 2015
- Patrick van der Pal, Automatic network layout using Moore and Hilbert curves, BSc thesis, 2015
- Tom Peerdeman, Minecraft-to-C compiler for Raspberry Pi, BSc thesis, 2014
- David van Erkelens, Multi-modal visualisation of resource consumption in computer systems, BSc thesis, 2014
- Laurens Verspeek, Trusting web sites using geographical consistency, BSc thesis, 2014
- Koen Koning, Trap handling with hardware multithreading, BSc thesis, 2013
- Kas van ‘t Veer, Music Based Quality Control in Software Engineering, BSc thesis, 2013
- Leendert van Duijn, Dynamic loading in a single address space operating system, BSc Thesis, 2012
- Stefan Kok, Concurrency management with S-NET, BSc thesis (co-supervised with C. Grelck and M. Verstraaten), 2012
- Ben de Graaff, Implementing Scheme in a massively concurrent architecture, BSc Thesis, 2011
Other teaching activities
- Virtual machines (BSc, guest lecturer 2014) The primary lecturer for this course is Dick van Albada.
- Extrinsically adaptable systems (MSc, guest lecturer 2013) The primary lecturer for this course are Jaap van Ginkel and Arno Bakker.
- Data Structures (BSc, guest lecturer 2012, 2014). The primary lecturer for this course is José Lagerberg.
- Compilers and Operating systems (MSc, guest lecturer 2010, 2011, BSc 2014). The primary lecturer for this course is Clemens Grelck.
- Concurrent Systems (MSc, guest lecturer 2010, 2011) The primary lecturer for this course is Chris Jesshope.
- Guest lecturer at the ACS3 Parallel Programming summer school (2012)
- Co-organizer and guest lecturer in the Multi-Moore summer school (Getting Moore from multi-cores, 2011)
- Teaching assistant in Functionele Talen (2010, 2011), Concurrent Programming (2009, 2010), Compilers and Operating Systems (2009).