Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
Project in Software Engineering
339.018 |
Weninger + members of SSW/Oracle Labs |
Introduction: Mo 04.03.2024, 16:00, SP3 218 |
Presentations: Mo. 06.05.2024, 15:30-17:00 (no Master's Thesis Seminar on this day), SP3 218 Mo. 24.06.2024, 15:30-17:00 (no Master's Thesis Seminar on this day), SP3 218 |
The kickoff meeting as well as the final presentation meeting are both happing in person in room SP3 218.
Goal
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 can be done in teams of 2 (with doubled workload), but can also be selected by a single student.
At the end of the semester, the results have to be presented in a 15 minutes presentation.
Topics
Open Topics
The following list contains open thesis topics that might have to be adjusted in size to fit
as topic for Project in Software Engineering.
You might also find an interesting open master thesis topic that
could be adjusted to a Project in Software Engineering.
If you are interested in working on one of these topics, please contact the respective supervisor and discuss the scope of the work.
Once you have done this, please inform Dr. Markus Weninger (markus.weninger@jku.at)
to mark your topic as assigned.
If you did not choose a topic before the introduction meeting (which has mandatory participation for everybody), you have to select
one of the remaining open topics during that meeting.
Assigned Topics
-
Aborted: Fixed Memory Marking for G1 (Technologies: C++)
Summary: Implement a marking algorithm that uses (small) constant memory and compare with the existing.
The G1 garbage collector is the current default garbage collector in the OpenJDK Hotspot VM. Its algorithm to determine reachable objects is a straightforward implementation of the Tri-Color abstraction. The drawback of this algorithm is that mark stack, a helper data structure, memory requirements is only bounded by the number of live objects which can be a very large number (in the MBs).
There is an algorithm that bounds only needs a very small mark stack and a small helper table to complete marking.
The task for this work comprises:
- Implement the mentioned algorithm in the G1 garbage collector
- The description only describes single-threaded operation, extend it to use multiple threads.
- Compare its performance and memory consumption to the existing algorithm on benchmarks.
Student: Pilz Tobias
-
Aborted: Automatic Dynamic Optimization of Remembered Sets (Technologies: C++)
Let the G1 collector automatically determine remembered set container options for either reduced memory usage or improved performance.
The G1 garbage collector is the current default garbage collector in the OpenJDK Hotspot VM. It uses remembered sets to store locations of incoming references to a particular region of the heap. This data structure is basically an implementation of a sparse set of integers: the entire range of possible values is split into evenly sized areas. A top level concurrent hash table stores values in areas that are "in" the set in a so-called remembered set container. Such a container is represented, depending on the number of values to be stored in that area it covers, by different kinds of data structures, e.g. arrays, bitmaps, or even single special integers.
The remembered set implementation switches between containers on the fly depending on current remembered set entry occupancy of an area.
G1 currently sizes these containers statically, i.e. independent of actual distribution of values in a given remembered set. So a particular container has a fixed size being able to hold a fixed amount of values, eg. an "array" remembered set container always has 128 entries, regardless of what the typical occupancy of such an array container is. This wastes memory, because different types of applications (and remembered sets for different areas of the heap) exhibit different occupancy characteristics.
The task is to change G1 to let it reconfigure the remembered set containers based on statistics that need to be gathered while an application is running to optimize for the particular goal, and evaluate the effectiveness of these optimizations on several benchmarks.
Student: Naçar Alpay
-
Implementation of several Python Core Modules in GraalPy (Technologies: Java, Python)
...
Student: Aliyev Yalchin
-
A Run-time Profiler for Java (Technologies: Nice language, cool framework)
To optimize programs, it is helpful to know which methods consume the most run time. This project therefore aims to develop a profiler that instruments a Java source program in such a way that the time (in nanoseconds) at the start and end of each method is measured and the resulting run time per method is saved. The results are then to be visualized per class (aggregated run time of all its methods) and within a class per method.
Contact: Prof. Hanspeter Mössenböck
Student: Hofstadler Andreas
-
A Web-Based EBNF Railroad Diagram Visualizer (Technologies: HTML/CSS/Typescript)
...
Student: Alexander Voglsperger
-
Visual Teaching in Compiler Construction through a Dynamic Operand Visualization (Technologies: Java (Agent), HTML/CSS/Typescript (Visualization))
Currently, the compiler construction course at the JKU intensively uses unit tests to help students to find problems in their compilers.
Nevertheless, having visual learning tools instead of just reacting textual error messages of failing unit tests would further help students to write correct code from the get-go.
In this project, Daniel is provided with a trace file the contains information about
- all method calls (i.e., which language productions the parser enters, for example
Expression , Term , or Factor ),
- scans (i.e., information about tokens read by the parser),
- as well as operand changes (e.g., switching an operand's kind from
local to stack once it has been loaded)
in a program run.
His task is to provide a web-based visualization that provides the students with a easy-to-understand visualization that makes operand handling more tangible for students.
The visualizations should allow the students to step back and forth through the recorded data, i.e., one should be able to explore how the input is read token by token in the various productions and how this creates new operands and changes existing ones.
The goal is to use these visualization live during lectures, as well as to provide them to students for learning at home.
Student: Daniel Jaburek
-
Visual Teaching in Compiler Construction through Dynamic Visualizations of Scanner Tokenization and Parse Trees (Technologies: Java (Agent), HTML/CSS/Typescript (Visualization))
Currently, the compiler construction course at the JKU intensively uses unit tests to help students to find problems in their compilers.
Nevertheless, having visual feedback instead of just textual error messages would further help students to more easily find a problem's root cause in their implementation.
This project's aim is to a.) write a tool/agent to inject code at the correct locations in a student's implementation to record all necessary data and to b.) provide helpful visualizations based on this data.
As a first step, two visualizations should be implemented: a.) A visualization of the scanner's tokenization process (i.e., a graphical representation of all tokens returned by Scanner.next() and b.) a visualization of the (top-down) parser's parsing process by showing the parse tree (i.e., a tree-based visualization of the scan() , error() and recursive descent methods called).
The visualizations should allow the students to step back and forth through the recorded data, i.e., one should be able to explore the building of the parse tree step by step.
The goal is to use these visualization live during lectures, as well as to provide them to students for learning at home.
Student: Tobias Herber
Already started before SS24
-
Basic GDB Debugging Support for GraalVM
Contact: Christian Wirth
Student: Dominik Mascherbauer
-
Sparse conditional constant propagation for Graal IR
Contact: Hanspeter Mössenböck (Technical supervisor: Gergö Barany (Oracle Labs))
Student: Christoph Aigner
-
Moodle Feedback Visualization
The students of the software development 1 course at JKU are actively encouraged to give weekly feedback about the lecture and its assignments via Moodle.
However, Moodles capabilities regarding analysis of the feedback is limited.
Analyzing all Feedbacks individually is a tedious tasks for lectureres.
For example, grouping and filtering answers based on the selection in a multiple choice question, e.g., calculating the average required hours for all people that selected that the assignment was "very easy" needs to be done manually.
Additionally, identifying trends across assignments is hard using only Moodle.
Therefore the goal is to reduce the effort and mental load for lecturers by implementing a tool that visualizes correlations between the answers to questions of a single assignment and allows a visual overview of all assignments at once.
Contact: Lukas Makor
Student: Adrian Vinojcic
Final Presentation
The results of every project have to be presented by all team members in a 15 minutes presentation
at the end of the semester.
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 (no bullet point presentation - rather use
graphics and examples to demonstrate your problem and solution).
Grading
The grading is performed based on 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.
|