teaching
Courses taught at Vrije Universiteit Brussel (VUB).
Courses
Bachelor
-
Interpretatie van Computerprogramma’s — Bachelor course, taught since 2015–2016.
-
Software Engineering — Bachelor course, taught since 2015–2016.
-
Programmeerproject I — Bachelor course, taught 2014–2015 through 2017–2018. -
Structuur van Computerprogramma’s II — Bachelor course, taught 2011–2012 through 2014–2015. -
Evolution of Programming Languages — Bachelor course, taught since 2024–2025.
Master
-
Software Quality Analysis — Master course, taught since 2013–2014.
-
Software Architectures — Master course, taught since 2015–2016.
-
Advanced Topics in Software Engineering — Master course, taught since 2021–2022.
-
Declarative Programming — Master course, taught 2010–2011.
PhD alumni of the group are listed on the group page.
Master’s Theses Supervised
- Mikhail Korotych — Empirical Study on OpenAPI Server Implementations (2024-2025)
- Arman Kolozyan — Language-Agnostic Detection of Computation-Constraint Inconsistencies in ZKP Programs via Value Inference (2024-2025)
- Bríter Andrés González Daza — Automating the Optimization of Dockerfiles for Incremental Docker Builds (2024-2025)
- Cédric Collette — Identifying Infrastructure Security Vulnerabilities through Information Flow Analysis (2024-2025)
- Ilyas Saïd Makari — Is Your Software Supply Chain Safe? Evaluating the Reachability of Vulnerable APIs in JavaScript (2024-2025)
- Taha El Hihi — Predicting Software Performance Degradation using Machine Learning (2023-2024)
- Ruben Crokaert — Mutation-Based Fuzzing of AWS Lambda Applications (2023-2024)
- Sarah Verbelen — Abstract Slicing for Static Program Analysis (2023-2024)
- James Stoels — Security Weaknesses in GitHub Actions Workflows (2023-2024)
- Wietse Van den Hove — Heuristic-Based Guided Concolic Testing (2023-2024)
- Andes Van Lancker — Modular WCET Analysis of Dynamic Higher-Order Programs (2022-2023)
- Ian Angilis — Follow Your Nose - Consolidating and detecting Dockerfile smells with a focus on bloaters and layer optimization (2022-2023)
- Mathias Mallinus — Symbolic Execution for Reasoning with Separation Logic (2022-2023)
- Christophe Van den Eede — Error Ranking for Higher-Order Programs Using Static Profiling (2022-2023)
- Achiel Vandevivere — Resilience Testing in Spring - A Resilience Tester for the Java Framework Spring (2022-2023)
- Milan Mancel — Setting the Facts Straight - Automated Fix Suggestions for Dangerous Variables in Ansible Infrastructure as Code (2022-2023)
- Jonas Lesy — The DockerHub Inheritance Network - An Empirical Analysis (2022-2023)
- Turgut Reis Kursun — Time and Space Efficient Delta Debugging for Scheme (2022-2023)
- Arne Van Quickelberghe — Graph-Based Security Smell Detection for Infrastructure as Code (2021-2022)
- Cindy Wauters — Transforming Analysis Results According to Source Code Change Patterns (2021-2022)
- Diederik Roelandt — Identifying Bug-Inducing Changes Using Cross-Project JIT Defect Prediction in Infrastructure Configuration Code (2021-2022)
- Bram Vandenbogaerde — Iterative Collaborative Analysis: Improving Soft Contract Verification using Unsound Assumptions (2020-2021)
- Bert Van Mieghem — Detecting Data Races in Dynamic Web Applications via Concolic Testing (2020-2021)
- Patrick Gakuo — Heuristics-Guided Resilience Testing of Persistent Actor Implementations (2019-2020)
- Emile Sonneveld — Detecting Code Smells in Scala (2018-2019)
- Ruben Opdebeeck — Exploring Static Inter-Procedural API Misuse Detection Using Graph Inlining (2018-2019)
- Sébastien Vansomeren — Exploration Heuristics for the Dynamic Symbolic Execution of Event-Driven Web Applications (2018-2019)
- Olivier Pirson — Parallélisation d’un interpréteur abstrait au travers du modèle acteur — Application à l’interpréteur abstrait Scala-AM (2018-2019)
- Jens Van der Plas — Incremental Thread-Modular Static Analysis for Concurrent Programs with Futures and Atoms (2018-2019)
- Joachim Maes — Soft Contract Verification in SCALA-AM (2017-2018)
- Dylan Meysmans — Horizontal Tier Splitting to Micro-Services (2017-2018)
- Noah Van Es — Incrementalizing Abstract Interpretation (2016-2017)
- Silke Verhaege — Untangling Fine-Grained Source Code Changes Using Program Slicing (2016-2017)
- Jolien Declerck — An Empirical Study into Commit Types Resolving Merge Conflicts (2016-2017)
- Douglas Horemans — Static Verification of Dynamic Security Policies (2016-2017)
- Jonas De Bleser — Static Taint Analysis for Event-driven Programs: An Abstracting Abstract Machines Approach (2015-2016)
- Valentijn Spruyt — Static Detection of User-specified Security Vulnerabilities in Client-side JavaScript (2015-2016)
- Sara Mohamed Samir Mohamed — Expressing and Verifying Structural Software Change Obligations (2015-2016)
- Angeliki-Ionna Katsiampouri — Reasoning about Common JavaScript Mistakes (2015-2016)
- Arvid Demeyer — Mining Change Histories for Unknown Refactorings (2014-2015)
- Ward Muylaert — Function Summaries in Concolic Testing of JavaScript (2014-2015)
- Diel Caroes — Towards Failure Handling in Tierless Web Applications (2014-2015)
- Xinran AI — Tier Splitting using Static Analysis (2014-2015)
- Zahra Ahmadi — An Empirical Study of the Dynamic Behavior of JavaScript Programs (2014-2015)
- Maarten Vandercammen — The Essence of Meta-Tracing Just-in-Time Compilers (2014-2015)
- Quentin Stiévenart — Static Analysis of Concurrency Constructs in Higher-Order Programs (2013-2014)
- Siltvani — A Workbench for Template-driven Program Transformation (2012-2013)
- Kevin De Valck — A Logic-based Refactoring Framework for JavaScript (2012-2013)
- Reinout Stevens — Source Code Archeology using Logic Program Queries across Version Repositories (2010-2011)
- Wouter Amerijckx — Language Support for Programming Interactions among Wireless Sensor Network Nodes (2010-2011)
- Ruben Vandamme — Implementing Concurrency Abstractions for Programming Multi-Core Embedded Systems in Scheme (2009-2010)
- Jens Nicolay — Automatic Parallelization of Scheme Programs using Static Analysis (2009-2010)
- Karlien Mollemans — Fuzzy Intensional Views (2006-2007)
- Kim Gybels — Een Declaratief Metaprogrammeer Platform voor Domein-specifieke Run-time Verificatie van Imperatieve Programma’s (2004-2005)
Bachelor’s Theses Supervised
- Seppe Wyns — Leveraging Program Dependence Graphs to Assist Ansible Developers (2022-2023)
- Louis Verstraeten — Type Checking Ansible Infrastructure Code (2022-2023)
- Mats Van Molle — A Debugger for Abstract Interpreters (2022-2023)
- Thomas Vandermotten — Optimizing Scheme Programs using Static Analaysis (2022-2023)
- Abdullah Sabaa Allil — Optimising Static Program Analysis using Scala Native (2022-2023)
- Arman Kolozyan — Dependency-Driven Worklist Heuristics for Modular Analyses (2022-2023)
- Maxim Brabants — Towards Human-in-the-Loop Concolic Testing (2022-2023)
- Niels Koops — Input type inference for concolic testing of JavaScript (2022-2023)
- Mehdi Sarrouk — Soft contract elimination for higher-order dynamic programming languages (2022-2023)
- Wim Hulsmans — Automated Test Case Generation for JavaScript Functions via Concolic Testing (2021-2022)
- Lennert Saerens — Neural Lego: Generating Neural Networks with Reactive Building Blocks (2021-2022)
- Turgut Reis Kursun — RacketLogger: Logging Changes from the DrRacket Code Editor (2020-2021)
- Wietse Van den Hove — Visualising a Static Analysis (2020-2021)
- Ilyas Saïd Makari — On License Compatibility in Dependency Network of OSS Package Repositories (2020-2021)
- Ruben Crockaert — Extending Stackful - Implementing Input Objects to Improve Automated Testing of JavaScript (2020-2021)
- Florian Van Belleghem — Tracking Performance Regressions in Git Repositories (2020-2021)
- Cindy Wauters — Mining Stack OverFlow to Recommend Solutions for GitHub Issues (2019-2020)
- Corneel Soete — Managing State in First-Class Machine Learning Models: a Racket Study of the Language Construct Called Worlds (2019-2020)
- Dries Van de Steen — Exploring the Smart Contract Co-Dependency Network on Ethereum Blockchain (2019-2020)
- Erinn Van der Sande — Uncovering the Hidden Patterns of Source Code, One Commit at a Time (2019-2020)
- Lin de Huybrecht — Technical Lag on Stack Overflow (2019-2020)
- Bram Vandenbogaerde — Empirical Evaluation of Object-Oriented Software Metrics for Solidity Smart Contracts (2018-2019)
- Maxime Gilles Coene — ConfCrawlendar: Extractie van Conferentie-informatie uit mailing lists (2018-2019)
- Bert Van Mieghem — Automatisch Testen van Dynamische Websites - Uitbreiden van een Concolic Tester (2018-2019)
- Sjors Dekkers — An Interactive Abstract Interpreter (2018-2019)
- Jelte De Proft — Visualizing Program Execution Traces in JavaScript (2016-2017)
- Jens Van der Plas — Ondersteuning voor R5RS-Sceme in het Scala-AM framework (2016-2017)
- Ruben Opdebeeck — Towards Template-Driven Source Code Transformations in C++ (2016-2017)
- Thibaut Deweert — Detecting Code Clones in PL/SQL-queries used by CaLi (2016-2017)
- Bjarno Oeyen — Extending tierless JavaScript with an HTML templating system (2015-2016)
- Francis Reynders — PeopleCode Scanner: Scanning CaLi Code for Style Violations and Bug Patterns (2015-2016)
- Badreddine Hachoumi — Detecting Code Clones in the Implementation of CaLi (2015-2016)
- Jo De Neve — A Visualisation of Distributed Dependencies in Tierless Programs (2015-2016)
- Silke Verhaege — A Clojure Library for Design Assessment of PHP Software (2014-2015)
- Noah Van Es — Performant Scheme Interpreter in asm.js (2014-2015)
- Evgeni Ivakhnov — Javascript Extractor 2.0 (2012-2013)
- Brecht De Rooms — A Tangible Programming Platform for Live Coding (2009-2010)
- Dennis D’Hooge — Educational Platform for Programming Embedded Systems in Scheme (2009-2010)
- Dries Harnie — A Polyglot-backend for Irish (2006-2007)