Fourth Project: Contribution of Your Choice

The Task

In this project, you will develop and implement a tool of your choice. Your project should focus on techniques not covered by the previous projects, notably:

Task Suggestions

To get an idea on what the expectations are, here are some suggestions for concrete project ideas. You can pick one of these ideas or suggest one of your own.

Enforcing Flows

Set up a system that asserts that specific data flows should (or should not) take place (“There should be no data flow from password to output”). Combines assertions and slices.

Statistical Dependencies

Associate the presence (or absence) of data flows/dependencies with failures (“This program fails when there is a flow between A and B”). Combines slices and statistical debugging.

Statistical Invariant Properties

Using the invariant templates (say, X < Y) from dynamic invariants, find out which properties correlate with failure, as in statistical debugging: “middle() fails when x < z < y”.

Exploring Flows

Add commands to the interactive debugger such that one can track where a particular value came from, using slicer: “enter 'origin x’; get ‘from y in Line 35’)

Mining Co-Changes

Pick some git project. Which files are most frequently changed together? Visualize. Uses mining changes: “Sitemap.html and 404.html are always changed together”.

Project Proposal

Before you start, we ask you to hand in a project proposal. You can either build it on top of the suggestions mentioned above or pursue your own project idea.

A project proposal should be a concise one-paragraph description of your idea. It should briefly address the problem at hand and how you want to approach it. Furthermore, it should indicate whether or not you plan to do your project alone or together with a partner.

To be able to work on your own project idea, you need to hand in the proposal by Wednesday, February 10, 23:59. We will then notify you, whether your project idea is approved, is approved with changes, or is rejected. If we approve it with changes, you need to agree to the changes we proposed. If we cannot achieve an agreement on the included features, you can still continue with one of the aforementioned project ideas.

Working in Pairs

For this project, you can work alone or form a team of two persons. If you form a team, please consider these additional rules:

  • The above suggestions list the expectations for a single-person project; your pair project thus should be sufficiently sophisticated for two persons. A team can use the above suggestions as starting points, though. The project proposal of a team must detail why it cannot be done by one person.

  • If you want to work in teams, you are required to build teams in the CMS until Tuesday, February 23, 23:59. You can either create or join a team on your personal page in the CMS.

  • Once the team building phase is over, you cannot change your team any longer. If you want to work alone, there is no need to create a team in the CMS.

Your Submission

The time frame for this project is 4 weeks, and the deadline is March 12, 23:59.

The submission should be in form of a Jupyter notebook and you are expected to hand in the submission as a .zip archive.

The notebook must include (but not limited to)

  • the personal information,
  • the project proposal with a list of features,
  • an "Implementation" section; and
  • a "Demo" section.

The "Implementation" section must contain not only the implementation (part of it can be placed in auxiliary python modules), but also explanations and reasoning (in markdown cells) behind the decisions that lead to the solution. The "Demo" section should demonstrate how to interact with the tool, its features, and the use cases.

Projects that lack explanations cannot get more than 15 points.


For this project, you can get a total of 30 Points. We will assess your submission with respect to

  • originality of the idea;
  • concept;
  • functionality;
  • usability; and
  • presentation.

Please double check that your submission satisfies the submission format, as listed above.