BSc Research Projects

Most BSc projects carried out at the FMT research group are part of the student conference series Twente Student Conference on IT.

Some of the BSc projects carried out at FMT fall outside this student conference series. In the list of completed BSc projects, below, the latter ones are grouped under "Non-TSConIT BSc projects". These include for example those that were carried out by students of other programmes than Computer Science.

LITERATURE

For the BSc Research Project course we recommend that you read the following documents:

(We are translating these files to English shortly.)

Ongoing BSc Projects

For the upcoming 35th Twente Student Conference, projects for the track Software Technology and Formal Methods will be listed below after students have selected their topics.

Vishva Sundarapandian Raani - Modelling and analysis of board games
Ruiyuan Li - How to Win Friends and Influence People with Probabilistic Grammars
Marten Voorberg - There Can Be Only (the Fastest) One
Aamir Farooq - How to Zen Your Python
Jan Douwe Beekman - Grammar Check Your Dungeon with Probabilistic Grammars
Jeffrey Bakker - Risk Assessment of Water Supply Networks

Available Project Proposals

Students of the BSc Research Projects course in the Software Technology and Formal Methods track are invited to choose topics from the following list. If you are interested in a certain topic, please do not hesitate to make contact with the person responsible for that topic, even if you just want to ask a question and are still deciding.

Algorithms and Data Structures

Correct and efficient algorithms and datastructures for concurrency and model checking.

Projects related to Probabilistic Model Checking: Theory, Algorithms, Implementation, Modelling (Dr. A. Hartmanns)
Best-fit dynamic behaviour: can fault tree upgrades be machine-learnt? (Doina Bucur, Prof.dr. M.I.A. Stoelinga)
Rule-based game strategies (prof.dr.ir. A. Rensink)
Parity game algorithms (dr. Tom van Dijk)
Prove your (functional) Algorithm in Isabelle/HOL (dr. Peter Lammich)
Assessment of Informal Software Designs (dr. A. Fehnker)
How complex is you model? Model metrics (Prof.dr. M.I.A. Stoelinga, D. van der Wal)

Case studies and Applications

Application of formal methods to practical examples.

Testing of Probabilistic Robotics (Prof.dr. M.I.A. Stoelinga, Dr. M. Gerhold)
Kwirk (Puzzle Boy) editor and solver (Dr.-Ing. E.M. Hahn)
Projects related to Probabilistic Model Checking: Theory, Algorithms, Implementation, Modelling (Dr. A. Hartmanns)
Learning Analytics for Atelier (dr. A. Fehnker)
Assessment of Informal Software Designs (dr. A. Fehnker)
A long awaited marriage: investigating safety/security interactions in real-world scenarios (C. Kolb, S.M. Nicoletti)
Modeling medical protocols with UPPAAL (dr.ir. R. Langerak)
What modelling language? (dr. A. Fehnker)

Creative

Creative Technology

Visualization of risks (Prof.dr. M.I.A. Stoelinga)
Kwirk (Puzzle Boy) level generator (Dr.-Ing. E.M. Hahn)
Learning Analytics for Atelier (dr. A. Fehnker)

Dependability, security and performance

Analysis of dependability, security and quantitative aspects.

Stressed systems: reliability of physical systems under varying loads (Dr. E.J.J. Ruijters, Prof.dr. M.I.A. Stoelinga)
Visualization of risks (Prof.dr. M.I.A. Stoelinga)
Bringing ATTop to the Top (Prof.dr. M.I.A. Stoelinga, dr. S. Schivo)
What security questions to ask? (And how to reply?) (Prof.dr. M.I.A. Stoelinga)
Projects related to Probabilistic Model Checking: Theory, Algorithms, Implementation, Modelling (Dr. A. Hartmanns)
Best-fit dynamic behaviour: can fault tree upgrades be machine-learnt? (Doina Bucur, Prof.dr. M.I.A. Stoelinga)
Speeding up parametric model checking using GPGPU computation (Dr.-Ing. E.M. Hahn)
Reliability in an imperfect world: inspecting critical systems (Prof.dr. M.I.A. Stoelinga)
A long awaited marriage: investigating safety/security interactions in real-world scenarios (C. Kolb, S.M. Nicoletti)

Graphs

Graph and graph transformation related research.

Projects related to Probabilistic Model Checking: Theory, Algorithms, Implementation, Modelling (Dr. A. Hartmanns)
Rule-based game strategies (prof.dr.ir. A. Rensink)
Parity game algorithms (dr. Tom van Dijk)
Graph algorithms (prof.dr.ir. H.J. Broersma)
Who says your model is correct? Automatic algorithms needed (Prof.dr. M.I.A. Stoelinga)

Languages

Formal languages for specification, modelling and programming.

Projects related to Probabilistic Model Checking: Theory, Algorithms, Implementation, Modelling (Dr. A. Hartmanns)
Scenario editor for probabilistic model checking (Dr.-Ing. E.M. Hahn)
Design Your Own PL (dr. Peter Lammich)
Program Responsibly for Arduino (dr. A. Fehnker)
The Scent of Python (dr. A. Fehnker)
What modelling language? (dr. A. Fehnker)

Logics and semantics

Program logics, Semantics, Temporal and Modal logics.

Improved support for non-linear arithmetic (prof.dr. M. Huisman, Bob Rubbens)
Verification of Concurrent Software (prof.dr. M. Huisman)
What security questions to ask? (And how to reply?) (Prof.dr. M.I.A. Stoelinga)
A library for atomic operations in VerCors (prof.dr. M. Huisman)
Projects related to Probabilistic Model Checking: Theory, Algorithms, Implementation, Modelling (Dr. A. Hartmanns)
Termination checking support in VerCors (prof.dr. M. Huisman, Petra van den Bos)
VerCors support for SecCSL (prof.dr. M. Huisman, S.A.M. Lathouwers)
Parity game algorithms (dr. Tom van Dijk)
Prove your (functional) Algorithm in Isabelle/HOL (dr. Peter Lammich)
Assessment of Informal Software Designs (dr. A. Fehnker)
VerCors support for quantitative separation logic (prof.dr. M. Huisman)
Improving the rewrite system for expressions of VerCors (prof.dr. M. Huisman, Ömer Şakar)
Who says your model is correct? Automatic algorithms needed (Prof.dr. M.I.A. Stoelinga)
Bounded numbers support for VerCors (prof.dr. M. Huisman, Ömer Şakar)
Program Responsibly for Arduino (dr. A. Fehnker)
The Scent of Python (dr. A. Fehnker)

Software Technology

Test coverage, Software Desgin patterns, Software Modeling, Software Architecture.

Bringing ATTop to the Top (Prof.dr. M.I.A. Stoelinga, dr. S. Schivo)
What security questions to ask? (And how to reply?) (Prof.dr. M.I.A. Stoelinga)
Rule-based game strategies (prof.dr.ir. A. Rensink)
Learning Analytics for Atelier (dr. A. Fehnker)
Assessment of Informal Software Designs (dr. A. Fehnker)
Program Responsibly for Arduino (dr. A. Fehnker)
The Scent of Python (dr. A. Fehnker)
What modelling language? (dr. A. Fehnker)

Testing

Formal testing techniques.

Testing of Probabilistic Robotics (Prof.dr. M.I.A. Stoelinga, Dr. M. Gerhold)

Other

Projects that don't fit any other category

Software fault trees (Prof.dr. M.I.A. Stoelinga)
Visualization of risks (Prof.dr. M.I.A. Stoelinga)
Passive learning with logging frameworks (Dr. M. Gerhold, Prof.dr. M.I.A. Stoelinga)
An empirical study for teaching verification using Snap! (Dr. R.E. Monti, prof.dr. M. Huisman)
Program Responsibly for Arduino (dr. A. Fehnker)

Students who like the area of Formal Methods & Tools, but did not find a suitable project in the list above, are encouraged to propose their own project on the topics of (software/hardware) verification, testing, concurrency (& algorithms), program analysis, compilers, virtual machines, etc..

More information about the track is available from the track chairs.


Completed BSc Projects

Tom Veldman - Learn the deviations: functionality-loss detection in real data (June 2021)
Frank Groeneveld - Benchmarking and Optimisation of Engage!-based XML Parsers (January 2021)
Michael Mulder - Ye Olde Blazon Compiler (January 2021)
Daniël Huisman - Generating Specifications to Verify the Correctness of Sanitizers (January 2021)
Joël Ledelay - Retrofitting Memoisation (January 2021)
Ewout van der Wal - Rosetta ANTLR: the Ultimate Grammar Extractor (January 2021)
Yoeri Otten - Adapting, analyzing and benchmarking transportation routing algorithms for realistic real-time environments (January 2021)
Niels Benen - Using Gravitz to create aesthetically pleasing LaTeX drawings of graphs (July 2020)
Floris Breggeman - Graph isomorphism with pathfinding algorithms (July 2020)
Ahn Tuan Nguyen - Visualization of risk fault trees (2) (July 2020)
Karlijn Wiggers - Physcalization of Fault Trees (July 2020)
Jarik Karsten - Faster analysis of attack trees (July 2020)
Eduard Constantinescu - Fitting probability distributions using Evolutionary Algorithms (July 2020)
Jan van den Berg - Visualization of Fault Trees (1) (July 2020)
Matthijs Roelink - Encoding Deadlock-Free Monitors in the VerCors Verification Tool (June 2020)
Leon Alberts - Static verification for Snap! (March 2020)
Thomas Stein - Uniform Random Samples for Second-Order Restricted k-Compositions (January 2020)
Lars van Arkel - Demonstrating program verification using Snap! (January 2020)
Casper Plentinger - GUI for FIG: Visualising simulation results (January 2020)
Coen van Kampen - Formal Automated Verification of a Work-Stealing Deque (January 2020)
Frank Stapel - A Heuristic Approach to Indoor Rock Climbing Route Generation (January 2020)
Dré van Oorschot - Let's sort this out: GPGPU Verification of Radix Sort (January 2020)
Yernar Kumashev - GPGPU Verification: Correctness of Odd-Even Transposition sort algorithm (January 2020)
Jan Smits - Breadth-First Search: Verifying GPGPU Programs (July 2019)
Varun Sudhakar - Topological Value Iteration: the future of VI (in the Modest Toolset) (July 2019)
Remco Abraham - Termination of Zielonka (July 2019)
Zarimir Mitev - Measures for Interaction Complexity (July 2019)
Martijn Verkleij - Programming education off the shelf. (July 2019)
Daan Kooij - Parity games and Groove (July 2019)
Ilja Rozakov - A Modest Bitcoin model (July 2019)
Lindsay Kempen - A fair grade: assessing difficulty of climbing routes through machine learning (February 2019)
Max Hendriks - Can machine learning automatically choose your best model checking strategy? (February 2019)
Wouter Bos - Software Metrics as Indicators for Effort of Object-Oriented Software Projects (February 2019)
Wijtse Rekker - Designing a property language for a model checker (July 2018)
Han Hollander - Using Software Metrics as Indicators for Agility of Object-Oriented Projects (July 2018)
Jerre Starink - Recovery of Control Flow Graphs of Native Binaries using Register Value Inference (July 2018)
Tom Leemreize - Tracking Code Elements Through Program Updates in Java Applications (July 2018)
Pieter Jan Roelofs - Determining Long Run Properties of Complex Models using Statistical Model Checking (July 2018)
Tim Kerkhoven - Extending the Functionality of Sequences in VerCors (July 2018)
Joshua de Bie - How safe is your system? (February 2018)
Dennis Eijkel - Analysing the Use of Selfish Mining Among Bitcoin Miners and Mining Pools (February 2018)
Frans van Dijk - Implementing ROBDD algorithms on FPGA using CλaSH (February 2018)
Victor Lap - Introducting RAS: A domain specific language for trading card games (February 2018)
Pim van Leeuwen - Lambda Calculus Syntax’s Definition and Completeness As Graph Database Querying Language (February 2018)
Jasper van Rooijen - Sensitivity and Optimisation of Uncertain Parameters in UPPAAL (February 2018)
Rick Fontein - Comparison of static analysis tooling for smart contracts on the EVM (February 2018)
Tycho Braams - Modelling Degradation of Physical Objects in Fault Maintenance Trees (February 2018)
Jan Boerman - Verification of JML specifications: a comparison between KeY and OpenJML (February 2018)
Matthijs van Helden - Better than Batman (February 2018)
Antoine Veenstra - Edit Distance on GPU clusters using MPI (July 2017)
René Boschma - An algebra of repositories (July 2017)
Sven Konings - Manipulating Java states as graphs (July 2017)
Hans van der Laan - Automatic Learning of Java Models (July 2017)
Joran Honig - Autonomous Exploitation of System Binaries using Symbolic Analysis (July 2017)
Lukas Miedema - Optimistic Concurrency Control in Geographically Distributed Databases for Concurrent OLTP Transactions (July 2017)
Erwin Everts - Verification of the shortest pathfinder algoritm (March 2017)
Wim Florijn - How Well Can You Plan? (July 2016)
Ruben Haasjes - FASTER TESTING of FASTER CARS (July 2016)
Dennis de Weerdt - Can a tool learn its own optimal settings? (July 2016)
Jeroen Brinkman - Visualisation of Permission flow in Concurrent Programs (July 2016)
Sophie Lathouwers - Automatic Maintenance and Storage Optimization for Lazy Functional Databases (July 2016)
Pieter Bos - Logic for Hardware Description Languages (July 2016)
Michiel Bakker - Make biologists work faster with ANIMO (July 2016)
Erik Steenman - Code generation from Formal Specifications (July 2016)
Willem Siers - Correct and Efficient Concurrent Hash Tables in Java (July 2016)
Tim Blok - Automated Program Analysis for Novice Programmers (July 2016)
Bram Kamies - Solving Sokoban with Code Generation and Model Checking (July 2016)
Raymon Onis - Hacking Continuous Probability Distributions into Pieces (July 2016)
Sven Santema - Insight in Scheduling Choices: A Visualisation Tool for SDF Graphs (July 2016)
Jacco Brandt - Understanding Attacks: Modelling the Outcome of Attack Tree Analysis (July 2016)
Mitch de Vries - Visualisation of fault trees (April 2016)
Richard Gankema - High-level definitions of control-flow semantics (January 2016)
Luuk Verkleij - Performance improvement of state compression on GPU (January 2016)
Robert Maaskant - Visualization of Fault Trees (January 2016)
Dennis Aanstoot - Better Fault Tree Analysis using Sylvan (January 2016)
Lars Stegeman - Testing of concurrent programs (January 2016)
Wybren Kortstra - Java(Script) Application Performance on Android (January 2016)
Wander Nauta - Visually Representing and Manipulating Hardware Descriptions in Viskell (January 2016)
Frank Wibbelink - Visual programming with Haskell: pattern matching and conditionals (January 2016)
David Stritzl - Statistical Analysis of Continuous Degradation Processes in Fault Trees (January 2016)
Bart van den Pol - Smarter semantics for maintainable fault trees (January 2016)
Henk Mulder - Implementation of dynamic data structures on GPU (June 2015)
Thijs Wiefferink - Parallel Prefix Sum: A Case Study for GPGPU Program Verification (June 2015)
Twan Coenraad - Verifying Functional Behaviour of Concurrent Programs (June 2015)
Jip Spel - Smart Semantics of Fault Trees (June 2015)
Thijs van Ede - Crunching algorithms: Verifying lockless deques (June 2015)
Marlène Hol - Modeling quiescence via timed automata (June 2015)
Erik Kemp - Bandwith reduction to find an optimal variable ordering (June 2015)
Martijn Bastiaan - Preventing the 51%-attack: a Stochastic Analysis of Two Phase Proof of Work in Bitcoin (January 2015)
Djurre van der Wal - Improving Symbolic Confluence Detection (January 2015)
Dennis van der Zwet - Specifying a Concurrent Program in Java using Separation Logic (January 2015)
Thomas Brus - Predicting the Outcome of Scrabble Games (January 2015)
Alexander Bakker - Energy Profiling Android Applications (June 2014)
Bas van den Brink - Implementation of an efficient state exploration algorithm in Java (June 2014)
Simon de Vries - Growing Bonsai Trees (June 2014)
Rick Hindriks - Graph Games (June 2014)
Peter van Dijk - Parsing and Code Generation using Graph-Based Rules (June 2014)
Wietze Beukema - How does the bitcoin protocol work? (June 2014)
Alexander Drechsel - Java Modeling Language Extensions for Android Applications (June 2014)
Michael Hannema - Using Continuations to express Control Logic (June 2014)
Martijn Roo - Specifying Concurrent Programs: a Case Study in JML and Separation Logic (January 2014)
Thomas Neele - Implementation of a compression algorithm in a GPU (January 2014)
Steven de Heus - A Case Study for GPGPU Program Verification (January 2014)
Niels ten Dijke - Comparison of Verification Methods for Weak Memory Models (January 2014)
Jeroen Vonk - Puzzle solving using GPUs (June 2013)
Jochem Schutte - Designing a Library of (Parallel) Graph Algorithms (June 2013)
Martijn Heuvink - Understanding Algorithms through Visualisation and Simulation (June 2013)
Jelte Zeilstra - Full Graph-Based Java Semantics (June 2013)
Richard Heijblom - Potential of Integer Programming for Optimization Analysis of Extended Feature Models (June 2013)
Remco Swenker - Translating Hoare Logic To SMT, The Making Of A Proof Checker (June 2012)
Danny Bergsma - A Precise Way to Propagate JML Annotations for Security Automata (June 2012)
Ronald Meijer - PDDL Planning Problems and GROOVE Graph Transformations: Combining two Worlds with a Translator (June 2012)
Vincent Bloemen - Analyzing Old Games with Modern Techniques: Probabilistic Model Checking Using SCOOP and PRISM (June 2012)
Nils Klatter - Verifying Security Policies by using JML annotations (August 2011)
Jeroen Meijer - Formal Specification of LinkedBlockingQueue Using Concurrent Separation Logic (June 2011)
Ruud Welling - Finding Common Subgraphs (June 2011)
Cecill Etheredge - A Parallel Mass-Spring Model for Soft Tissue Simulation with Haptic Rendering in CUDA (June 2011)
Steven van de Vegt - A Concurrent Bidirectional Linear Probing Algorithm (June 2011)
Oguz Meteer - Interaction between SPH Fluids and Dynamic Particle-Based Objects using CUDA (June 2011)
Rick van Galen - Towards Verification of MPJ-based Java Programs (June 2011)
Marije de Heus - Towards a Library of Parallel Graph Algorithms in Java (January 2011)
Mark Florisson - Multi-Level Debugging for Cython (January 2011)
Erik Snippe - Using Heuristic Search to Solve Planning Problems in GROOVE (January 2011)
Freark van der Berg - Solving Parity Games on the Playstation 3 (June 2010)
Arjan Snippe - ToLERo: ToRX-tested LEGO Robots (June 2010)
S.H. van Schouwenburg - Automatic Parallelization of Automata (June 2010)
Ronald Burgman - Specifying Multi-Threaded Java Programs (A Comparison between JML and Separation Logic) (January 2010)
Pascal Kuyten - Rewrite Rules supporting Conditional Statements for Automatic Parallelization (June 2009)
Charl de Leur - Evaluation of Multi-Core Programming Models (June 2009)
Bas van Gijzel - Comparing Parser Construction Techniques (June 2009)
P. Jorrit Tijben - Improving a CellFS Implementation for the x86 Architecture (June 2009)
Jorne Kandziora - Playing Parity Games on the Playstation 3 (January 2009)
Emiel Mols - A CellFS Implementation for the x86 Architecture (January 2009)
Tom van Dijk - Analysing and Improving Hash Table Performance (January 2009)
Maks Verver - Evaluation of a Cache-Oblivious Data Structure (June 2008)