Skip to topic | Skip to bottom


Main.AvailableOpenProjectsr1.106 - 02 Dec 2016 - 20:35 - AndyZaidman

Start of topic | Skip to actions

Available Open MSc Projects

SERG Internal

One possibility is to conduct your MSc project in direct collaboration with one of our research projects. This will usually mean that you do your work at the EEMCS faculty. Most research projects are done in collaboration with industry, so working with one of our industrial partners is possible as well.

The actual internal SERG projects vary month by month -- so the best thing to do is to contact us and see what is currently hot in our research. Check our homepages for our latest papers, have a look at our Research Projects, and see what you find interesting. Contact the respective researchers for more information.

Below is a list of specific projects that are currently open.

Software Language Design and Engineering

There are many opportunities for projects in the area of software language engineering related to the Language Designer's Workbench NWO VICI project of Eelco Visser. There are three main directions:

  • language engineering: the automatic derivation of efficient, scalable, incremental compilers, fast interpreters, and effective IDEs from high-level, declarative language definitions
  • semantics engineering: verification of language definitions
  • language design: systematic design of domain-specific languages; linguistic abstractions for web programming

Some of our students do an internship at Oracle Labs (see below).

Contact Eelco Visser or Guido Wachsmuth for more information.

Generating Web IDEs with language-aware editors

Integrated Development Environments (IDEs) provide strong support for editing programs much beyond plain text editing. Syntactic editor services such as syntax highlighting and syntax checking help in writing syntactically correct code and recognizing the code structure. Semantic editor services such as reference resolution and code completion assist the programmer using semantic knowledge about the program.

IDEs are still primarily desktop applications. However, like anything else, programming is moving to the web. For example, in the online learning applications such as WebLab. Creating Web IDEs requires redoing all the work of developing IDEs in a new architectural setting. It would be attractive to generated both desktop IDEs and Web IDEs from a single declarative language definition. In the paper Software development environments on the Web we have described a first experiment in generating Web IDEs from Spoofax language definitions. This raised many research questions about the architecture for a Web IDE. In this project you will systematically investigate these research questions.

Contact Eelco Visser for more information.

Several projects around spreadsheets

when you think about programming, you often think about source code: C#, Haskell or maybe even Fortran. But there is a large group of people making code while not trained or employed as developers: 'end-user programmers'. Spreadsheets are a very successful example of a tool that helps people to perform calculations and manipulate data, in other words create programs. At SERG, we help end-user programmers by giving them the full potential of programmers: with IDE like tools support such as testing and refactoring. Watch this video to learn more.

We have several open projects, but we also love to hear your ideas! Contact Felienne Hermans for more information.

Several themes around JavaScript

JavaScript, the well-known scripting language that is frequently used for web applications has become very popular over the last few years. There is almost no web application that doesn't use JavaScript (or Ajax). Even at the server side it is becoming more popular through node js. Strangely enough there are currently not that many tools that allow to give insight into JavaScript code. There are specific IDEs, like JetBrains' WebStorm, but actual tools that give insight into the structure or quality of JavaScript software are not there yet.

This assignment revolves around JavaScript and can be further discussed with your supervisor. The assignment might be to create a program comprehension tool, e.g., through visualizing JavaScript code, or it might be a tool that maps the quality of JavaScript code. Very important for this assignment is that you first perform a literature and/or tool survey.

This assignment can be combined with an internship at M-Industries, a startup located in Delft. For more information, contact Andy Zaidman.

Empirical software engineering: a framework for longitudinal analysis

Many new software engineering techniques are being developed in research environments. These techniques also have to be evaluated, which is frequently done using case studies. However, there is a trend towards more realistic used studies, amongst others pre/post-test experiments or controlled experiments. One category of empirical experiments that is not so frequently done is the so-called longitudinal analysis. Instead of creating an artificial environment in which you put subjects and let them work with your new tool or technique, you bring the technique to the everyday working environment and you monitor how the person uses the technique.

Your mission in this area would be to first survey already available initiatives in the area, after which you start building an Eclipse plug-in that would allow to monitor how users use new Eclipse plug-ins.

If you are interested in this line of research, please contact AndyZaidman

Code clone management

Literature is full of papers warning software engineers against the dangers of introducing code clones and subsequently editing these code clones with the risk of introducing unwanted bugs. In past research, CloneBoard was developed, which is a code clone management plug-in for Eclipse that helps to manage code clones and that offers the ability for linked editing of all code clones (i.e., all clones in clone family are edited together).

Many new opportunities still exist in this line of research, amongst others extending the CloneBoard functionality or doing empirical research on how code clones evolve over time through software repository mining. If you are interested, send an email to Andy Zaidman.

Mining Software Repositories

Software repositories and versioning systems (e.g. CVS, Subversion) contain a wealth of (implicit) data about a project. Mining such versioning systems can lead to the discovery of "logical coupling", i.e. coupling that might not be immediately noticeable from the source code, but that has a meaning nevertheless. Currently, we are investigating a number of directions in the context of this topic.

Contact Andy Zaidman for information on projects concerning:

  • mining software repositories to determine the testing strategy, i.e. is a test-driven development cycle employed or are test added just before a major release.
  • mining software repositories to determine whether developers are also responsible for the test, or whether a separate test-team is responsible for this
  • mining software repositories to see when/why a test was changed (what triggered the change in test)
  • mining software repositories to see how database queries and the underlying data model (co-)evolve

Programming language ecosystem evolution

Software ecosystems are large collections of software packages that depend on each other and co-evolve. Examples include the Java Maven repository, the Ruby Gem repository and SqueakSource?. However, one might consider that software ecosystems are formed implicitly through the sharing of resources; when a developer contributes to more that one repositories of the same language, he is effectively creating a dependency link between those projects. The link is the participation to the project's team.

The purpose of this work is:

* To conduct a large scale evolutionary analysis for language ecosystems, including visualization

* To identify key moments in an ecosystem's lifetime, through visualization or using automated means

* To assess through a survival analysis what would happen if key projects in the ecosystem were abandoned

For more information about this project, contact Georgios Gousios.

Improving pull request handling on Github

During the last few years, GitHub? has emerged as a popular project hosting, mirroring and collaboration platform. A unique characteristic of Github is the way it facilitates and automates the submission of patches through forks and pull requests. Different projects employ different processes to accept and analyze pull requests, which leads to very different patterns of pull request usage. Recent has identified several weakness on how pull requests are being handled by projects.

The purpose of this project is to develop with tools that will help developers evaluate, prioritize and apply pull requests, based on machine learning and automatic content classification algorithms.

For more information about this project, contact Georgios Gousios.

Socio-technical analysis of Github's data

During the last few years, Github has emerged as a popular project hosting, mirroring and collaboration platform. Github provides an extensive Rest API, which enables researchers to retrieve both the commits to the projects’ repositories and events generated through user actions on project resources. The GHTorrent project has created an infrastructure to collect and process Github's event stream and all data linked from it. The purpose of this project is to perform socio-technical analysis on the data provided from Github.

For more information about this project, contact Georgios Gousios.

A metric of code functional-ness

Functional programming has long been known to enable economy in programming expression. The use of higher order functions for processing data in collections and immutability enable a very terse way of writing code. Less code usually leads to less bugs and better understandability.

But how much does a method use techniques originating from functional programming? Is a method immutable? Does a method use higher order functions for all data processing? Does a method rely on immutable or mutable data structures? Does a method use advanced features such as monadic comprehensions? Does a method use functional-like constructs such as anonymous inner classes?

The purpose of this study is to come up with a metric of code functionalness by statically analyzing code for the presence of functional programming patterns. The analysis should initially target Scala, but should be generic enough to be ported to any other language. Then, the metric will be used to empirically study whether more functional code has less bugs or is easier to test.

For more information about this project, contact Erik Meijer?.

Master's Thesis: Evaluating the Stability of a Plugin-based Application

As the importance of software grows, so do the requirements on its reliability and stability. At the same time, users want to tailor software as best befits their needs. One way for software developers to support this is by implementing a plugin mechanism. Plugins system allow third-parties to contribute to the original software through modifying or adding functionality. Famous examples of such extendable products include web browsers like Google Chrome, Mozilla Firefox, and Microsoft Internet Explorer, but also developer tools, like Eclipse. Despite their unrestricted use in practice, it is still unclear how plugins affect the stability of these program. Intuition -- and, unfortunately, sometimes also bad experience in practice -- suggests that plugins must have adverse effects on the stability of the host program. On the other hand, new strategies to execute plugins in a sandboxed environment might disarm this assumption. Therefore, further investigation on the stability of software with a plugin infrastructure is indicated. Open questions in this domain include:

  • How does the application react in case of an error or exception caused by a plugin (does the host program crash, does the plugin crash, ...)?
  • Is there a difference in the effects of a plugin crash during different phases of its execution (on startup, during runtime, on termination)?
  • Is there a difference in stability between the blank main program and a main program with many deployed plugins?
  • How do more plugins affect the stability in comparison to only one plugin?
  • If there is an official market place for plugins, is there a quality difference wrt. stability between official plugins and plugins installed from elsewhere?

One famous example of such a framework is Eclipse. The Eclipse Framework is an advanced ecosystem with a vivid plugin culture, making it an ideal candidate to study. The aim of this master thesis is to answer the aforementioned open research questions in the Eclipse ecosystem.

Characterization of your work: This master thesis combines hands-on engineering and empirical research parts. For the technical part, you will create a framework that allows the execution of an Eclipse instance with a number of pre-installed plugins for a predefined timespan. Your framework should do a rigorous, randomized UI testing, also known as “fuzzy testing”. From a set of possible actions at any given time, one should be randomly chosen, as long as the program has not produced an error and not reached its runtime requirement. Ideally, the trace of actions leading to a crash should also be reported and could be included to prevent future regressions. Concretely, our group develops its own Eclipse plugin, whose stability in interaction with other plugins your framework should investigate. But there are many more plugins worth investigating.


  • Strong technical skills
  • Interest in UI (Smoke-)Testing
  • Preferable: Experience with Eclipse plugin development, SWTBot

For more information about this project, contact Moritz Beller.

International Internships

There are several opportunities for doing an internship abroad as part of your MSc thesis project. If you want to go abroad, you should be proactive in organizing your own stay abroad, and start planning it well in advance.

Several companies, such as Google or Microsoft, have their own internship programmes, for which you have to apply explicitly (but which can be part of an MSc thesis project).

Internships can also be conducted in collaboration with universities abroad, in the United States (Stanford, UC Irvine), Canada (e.g., University of Victoria, University of British Columbia), or in Europe.

Software Engineering Internships at Google

Google has technical internship opportunities available at locations across Europe. In previous years, SERG MSc students have worked on testing and Ajax at Google in London. Options vary from staying a few months as part of your Bachelor to doing your full MSc thesis work at Google.

To apply for an internship at Google as part of your MSc, first contact Arie van Deursen for an appropriate topic. Then you need to email your CV and transcripts to 'delftinterns[at]'.

More information is available at

As an example of work that can be done at Google, have a look at the theses of Stefan Lenselink and Danny Roest, who both worked on the Crawljax tool in the area of automated testing of Ajax applications.

Software Language Engineering Internships at Oracle Labs

The Software Language Design and Engineering group of Eelco Visser and Guido Wachsmuth has a ongoing collaboration with Oracle Labs in the area of domain-specific language engineering with the Spoofax Language Workbench. A number of TUD master's students and PhD students have done an internship at Oracle Labs already, where several Oracle engineers are actively working with Spoofax. An internship can be combined with a Master's thesis project. But it is also possible to do an internship afterwards.

To qualify for such an internship you should have passed the Compiler Construction course with high grades and you should take the Language Engineering Lab course (IN4308, formerly known as Model-Driven Software Development).

If you are interested in the possibility of an internship, contact Eelco Visser.

Dutch Internships

Test Automation at Stabiplan, Bodegraven

Stabiplan is a software company offering Computer-Aided Design solutions specialized for in-house technical installations. The development team is working at two sites, one in Bodegraven (The Netherlands) and the other in Romania.

As quality is a key concern for Stabiplan, it includes rigorous testing at various levels throughout the product's life cycle. Exploratory testing as well as (C++ and C#) unit testing is intensively deployed. Test artefacts are managed in Microsoft Team Foundation.

The object of this project is to investigate how the testing approach can be improved. To that end, current testing practices are to be investigated, analyzed, and possibly optimized. This analysis will result in a number of test patterns, including positive and negative experiences. Furthermore, the applicability of a range of new test strategies will be explored, and evaluated in the specific Stabiplan context. Proposed strategies will include a dedicated fault model, specific models of the software under test, testing steps to be taken, as well as a test adequacy criterion.

Specific emphasis will be put on strategies that can increase the level of test automation at Stabiplan.

For more information on this project, contact Arie van Deursen

Various assignments at Avanade

Various assignments are available, see the pdf. For more information from the TU Delft side, contact Andy Zaidman: AvanadeinternshipsTUDelft20122013.pdf

Software Improvement Group, Amsterdam

The Software Improvement Group is a company specializing in software renovation, analysis, and risk assessment methods and tools. There are usually several openings for MSc projects. See their pages describing internship openings. Contact Arie van Deursen for more information.

End-User Computing at Robeco, Rotterdam

With Robeco, Rotterdam, we collaborate in the area of end-user computing.

Spreadsheets One MSc project that we have available is in the area of spreadsheets. Robeco is a large financial company in Rotterdam and as such uses spreadsheets for several important processes within the companies. These spreadsheets are good examples of 'end-user programming'. While the spreadsheet builders often reach their (business) goals, the spreadsheets could use some software engineering in the form of refactoring, testing and quality measurements. In a project at Robeco, you could help users achieve this.

Contact Felienne Hermans for more information.

Software architecture and testing in .NET The Robeco End-User Computing team is responsible for developing, testing, and evolving .NET applications for a range of groups within Robeco. Various opportunities for master projects are available.

One project relates to testing: A substantial amount of the acceptance testing is done by end-users. In this project you will analyze current testing practices of these end-users (through interviews, observations, and instrumentation), develop acceptance testing guidelines, and propose and evaluate approaches to strengthen the testing approach.

Another project relates to software architecture and repository mining: How do changes over time to the various applications affect the architecture of the shared (domain-specific) framework, how can the impact of changes be determined, and how can the quality of the applications be monitored.

Contact Arie van Deursen (testing) or Felienne Hermans (Robeco context) for more information.

Exact, Delft

Exact is a software development company with head office located in Delft. Exact has more than sixty subsidiaries and twenty distributors in Europe, the Middle East, North &America, Asia and Australia providing global solutions to small and medium-sized businesses, and subsidiaries of multinationals.

Exact Research & Innovation is a research team focusing on research of technologies for developing software system platform and new business software solutions. Exact Research & Innovation has sites in Delft, The Netherlands, and Silicon Valley, California USA. Corporate product development takes place at the Exact Asia Development Centre in Kuala Lumpur, Malaysia.

With Exact several MSc opportunities are available, with a list of frequently changing subjects in a number of domains (see below).

  • Continuous Delivery - In this fast moving world we want to be able to quickly go from an idea to an actual piece of working software in the hands of our users. How would you optimize a deployment pipeline enabling one to release quickly without compromising quality?

  • Behaviour-driven development - How to implement automated tests specified in natural business language and how does it affect collaboration between stakeholders?

  • Test-driven development - In modern software development, you can’t get away with writing code without unit tests. But how much, and when, do developers actually test in practice? And how to take the next step and really drive your development by writing tests first? Is it really the holy grail?

  • Code reviews - What insights could we get from code reviews (data analysis)?

  • Angular client-side development - Offers quite some interesting research directions, e.g., how to test Angular code efficiently?

  • Measuring code quality - The data that we get from measuring our code quality with SonarQube? presents interesting research opportunities.

  • Infrastructure-as-code - How to build reusable and repeatable infrastructure code that can easily be deployed on any cloud.

If you are interested, contact Andy Zaidman from the Software Engineering Research Group at TU Delft.

In 2008 the Delft Software Engineering Research Group (SERG) and Exact entered into a strategic collaboration. Follow what is happening at this page.

Integration Testing at Rabobank, Utrecht

Rabobank ICT is an organization responsible for the information systems of Rabobank, one of the leading banks of the world. A key enabler for high quality IT systems is software testing, and Rabobank is continuously seeking to innovate the ways in which it is testing its software systems. At the facilities conveniently located at Utrecht Hoog Catherijne, Rabobank is looking for enthusiastic students wishing to contribute in such areas as test automation, integration testing, and end-to-end testing of software services.

Contact Arie van Deursen for more information.

Social Media for Software Development at ASR, Utrecht

ASR is an insurance company offering a range of insurance products. Its portfolio of information systems is diverse, ranging from Cobol to .NET. In order to encourage teams to share and document knowledge, ASR is exploring the use of social media such as Twitter or Stackoverflow. If you are interested in helping ASR on this journey, contact Arie van Deursen

Repository Mining at Sogeti, Amsterdam

Sogeti is a leader in the area of software testing and development. For its Java development factories, it is seeking for new ways for further optimization. An approach under consideration is repository mining, trying to learn from information Sogeti Java projects have stored in various repositories, such as version control and issue tracking systems. You will use some of our existing tooling, tailor it towards the Sogeti context, and investigate how Sogeti's processes can be further improved through your techniques.

Contact Arie van Deursen for more information.

Software evolution related assignments @ Cannibal Game Studios, Delft

Cannibal Game Studios specializes in providing custom gaming solutions to seasoned game studios and game development novices alike. Next to deploying technology for interactive 3d application and games, a major focus is customized game middleware for the creation of virtual worlds and video games. The MSc projects available at Cannibal Game Studios center around the theme of software evolution and deal with such issues as Software Configuration Management, Backwards Compatibility and Model Driven Development. If you are interested, have a look at this document or contact Andy Zaidman.

West IT Solutions, Delft

West, an IT company from Delft specialised in tailored IT-systems, wants to improve its knowledge and skills in this field.

Code reviews are becoming an integral part of the development culture at West. They are seen as a way to improve both the internal and external quality of the software. For the external quality, code reviews are complementary to testing, for the internal quality, there is a clear relationship with static analysis tools like CheckStyle?, RuboCop? etc. West is interested in getting more insight into how to best integrate its code reviewing with a pull based development methodology, thereby also considering the granularity at which to perform the code review (the commit or the pull request). In addition, West is interested in knowing to what extent static analysis tools can alleviate the code review process.

With this MSc thesis, you will dive deep into static analysis tools and what gains they can bring, modern code reviews and what kind of defects they find. In addition, you should have a good knowledge of the pull based development model as proposed by Git (or be willing to learn on the job).

More information can be obtained from Andy Zaidman or you can contact Nico Plat ( at West directly.

Two SOA-related Projects at Adyen Payment Services, Amsterdam

Adyen is a Payment Service Provider (PSP), started in 2006 by industry specialists. Adyen focusses on providing one online payment interface for the European and North America online market. Our role in the online payment process is that online shops (merchants) only have to connect to Adyen in order to support multiple payment methods, like credit cards and local payment methods like iDeal, bank transfers, et cetera. Adyen, with offices in Amsterdam, London and Boston (MA, USA), takes care of all the communication and money flows with all the payment method providers (acquirers) and offers her merchants just one type of reporting and money flow.

We have several research topics within Adyen, and we are looking for suitable candidates for MSc projects. Contact Arie van Deursen for more information.

Continuous Integration and Testing related project at Bunq

In order for bunq to keep up the pace and deliver new and improved features on a weekly basis it is important to integrate a testing methodology that helps us to achieve Continuous Integration on enterprise level. We currently write our own scripts and start test scenario’s to simulate certain functionalities and app behaviour. Due to the size and code base of our (custom) backend it is difficult to run parallel tests because most tests depend on each other. Furthermore, it is time consuming to test other functionalities when a dependent test fails. We would like to setup a delivery and test framework that conducts automated (independent) tests after new code is merged. It should cope with testing of each ‘individual’ feature and supports end-to-end testing. Possible research questions: - What is the impact of introducing continuous integration in an enterprise scale environment? (our goal is - to achieve Continuous Integration on enterprise level) What type of test methodologies are available and applicable given the conditions of our backend - structure and code language? Can we apply a standardised unit test to each of the repositories? (Due to scalability each database has their own repository. To reduce code duplication as much as possible, mocked models need to align with - our database structure.) - How can we reduce time for end-to-end testing? (running parallel independent tests) How could we ensure scalability for the chosen solution? (Scalability is currently an issue because of the long duration of our tests, which makes them inefficient. We would like to be able to run fully automated tests whereby occurring problems can be solved much earlier in our development proces.)

bunq is not an ordinary bank. Instead of making more money, we want to reinvent money itself with mobile technology. That’s why we built our own banking system from scratch, including an app that fits your entire bank in your pocket. And that's just the beginning! We’re working non-stop on futuristic payment methods and other innovations to make money and banking as easy, transparent, and fun as possible. As a student you will tackle a project that will keep you busy for anywhere from 3 to 8 months, under supervision. You are fully part of our international crew of 70+ smart and extremely dedicated people. You will use the unlimited power and possibilities of code to bring innovation to a place where stagnation is the status quo: the finance industry.

Contact Andy Zaidman for more information.


Edit | Attach | Printable | Raw | More topic actions
Revisions: | r1.106 | > | r1.105 | > | r1.104 | Page history | Backlinks
You are here: Main > MastersProjects > AvailableOpenProjects

to top

Copyright © 2003-2018, Software Engineering Research Group, Delft University of Technology, The Netherlands