Project in Software Engineering

339.018 Mössenböck + members of SSW/Oracle Labs Introduction: Mo 08.03.2021, 16:00, online Presentations: Tu 29.06.2021, 15:30, online

Due to Covid-19, this course happens online:


The goal of this course is to do a non-trivial software project over a whole semester and to go through all its phases (requirements definition, design, implementation, testing, documentation). The projects should be done in teams of 2, but can also be selected by a single student. At the end of the semester, the results should be presented in a 15 minutes presentation.

Available Topics

  • Interactive Visualization of Exam Data (JavaScript, D3)
    The goal of this project is to develop a web-based program in JavaScript (D3.js) that allows the visualization and the interactive exploration of data about exams. It should be used for the monitoring of things such as failure rates, number of registrations, and average marks per exam. The program should offer filtering and sorting options for iteractive exploration of the data. The data is provided in anonymized form by JKU.
    For details see here.
    Student: Oktay Akgül

  • Multi-Language Benchmarks for a New Dynamic Taint Analysis Platform (C/C++, JavaScript, Python)
    Dynamic taint analysis is a program analysis technique in which a program is instrumented to track the flow of sensitive data. This analysis technique can be used to prevent information leaks, to uncover security vulnerabilities, and it also has applications in several other fields. TruffleTaint is a novel dynamic taint analysis platform based on GraalVM, a multi-language virtual machine, and aims to track sensitive data across the language boundary with little overhead in execution time.
    The goal of this project is to use common benchmarks, such as those from the *Are we fast yet?* benchmark suite, to evaluate TruffleTaint's run-time overhead and data tracking capability. To this end, all benchmark programs must be implemented using combinations of C/C++, JavaScript and Python code by using GraalVM's APIs for language interoperability. Furthermore, each benchmark program must also use TruffleTaint's API to mark certain data which the benchmark operates on as sensitive and check that its flow is properly tracked.
    Student: ?

  • COCO/R Parser for IEC 61631-3 Structure Text (Java)
    IEC 61631-3 is a standard for languages for Programmable Logic Controller (PLC) Programs. One language within this standard is Structure Text, which is a language similar to Pascal. In this project a Coco/R parser for building an abstract syntax tree should be created.
    Student: ?

  • Data Flow and Call Graph Analysis for IEC 61631-3 Structure Text Programs (Java, optional Kotlin)
    IEC 61631-3 is a standard for languages for Programmable Logic Controller (PLC) Programs. One language within this standard is Structure Text, which is a language similar to Pascal. In this project, data flow and call graph graphs should be created for Structured Text programs. Data flow graphs represent the data dependencies between program statements. A call graph represents the call dependencies between procedures. The input is an abstract syntax tree of Structured Text programs (see project above). Remark: It is also possible to split the task into two independent projects, one for the data flow and one for the call graph.
    Student: ?

  • Evaluation of Machine Learning Models for Compiler Optimizations (Java)
    For a mere user, machine learning is often considered as a black box. From a pool of existing ML techniques - ranging from simple linear regression to more complex neural networks - often similar, yet slightly different results can be achieved for a given prediction task. For this project a sample machine learning task in the context of compiler optimizations shall be used to evaluate different ML models and parameter configurations. The goal is to find (near) optimal settings (model + parameters) for the given and similar prediction tasks, according to prediction accuracy and run time performance.
    Student: ?

  • New JavaScript Language features - ECMAScript proposals (Java, some JavaScript)
    JavaScript is specified in the ECMAScript language specification. It is an evolving language, and is improved by a "proposal" process. Each new or improved feature is specified by one proposal. Currently open proposals include Temporal (a date/time library), optional chaining (avoiding null value exceptions), decorators (similar to Annotations in Java), additional methods to the Set builtin, and many more. As the different proposals vastly differ in effort to implement them, we have topics for projects (project in software engineering), bachelor theses and master theses. The task is to fully implement the current state of the proposal in the GraalVM/Graal.js JavaScript engine.
    Student: ?

Final Presentation

The results of every project have to be presented by all team members in a 15 minutes presentation on Tuesday, June 29, 15:30-17:00 (probably online). The presentation should mainly consist of a demo, but you should also shortly explain the problems tackled in this project and how you solved them.


The mark is derived from the quality of the implemented software (functionality, user friendlyness, robustness, readability and maintainability, documentation) as well as from the final presentation and the commitment during the semester.