Teaching

Bachelor Thesis Topics

Algorithm selection is a research field of increasing relevance, in which the idea is to develop a meta-algorithm that can determine for a given problem which other algorithm to chose in order to obtain the best performance. As there is increasing interest on this topic, the Algorithm Selection Library (ASlib) is a repository with various problem instances for algorithm selection that is growing in size.

In this thesis, the required format by the ASlib should be determined and already exisiting data should be converted to the required format.

Program Dependence Graphs (PDG) can be used to identify plagiarism in software to a certain extend by determining the similarity between portions of code. In this thesis, some of the methods to detect similarities based on the PDG of programs should be investigated and one or several of the implemented for simple programs. This work can be extend to a master project / diploma thesis in the future.

In this thesis different of algorithms covered in the course software maintenance should be visualized (for example the Hitting Set Algorithm by Reiter, Slicing with the PDG, …). As part of the work, suitable concepts to visually represent the algorithms have to be developed and subsequently, those visualizations should be implemented.

Different tools are to be identified and compared, which allow to analyze procedural or object priented programs (e.g. the Slicing Plug Kaveri. As part of the work different tools should be identified and compared in relation certain objectives such as capabilities, scope, performance etc.

Delta Debugging is a divide-and-conquer strategy that returns a 1-minimal erroneous input. QuickXplain is an algorithm that should find minimal explanations for over-constrained problems and is also based on a divide-and-conquer strategy. These two approaches should be compared on the one hand theoretically and on the other hand practically with each other. The goal is to define a unified framework to compare these different methods and examine whether the algorithms return the same result for the same input or how the results differ.

There are various slicing techniques beyond the usual suspects of static and dynamic slicing. For instance, quasi-slicing tries to balance between the two extremes that are static and dynamic slicing by only considering a portion of the input variables. Also extension to dynamic slicing such as simultaneous slicing exist, that explore several dynamic slices in conjunction. In this thesis, those and other approaches should be compared in regard to their capabilities to determine root causes for abnormal behavior in programs.

Master Thesis Topics

Code optimization during program compilation is performed on an intermediate representation (for example, AST, three address code) of the program. And the effects of these optimizations are only visible in the code generation part. However, we now want the results of the optimization to be displayed on the AST, Three Address Code, … such that the effects of local and global optimizations can be directly seen.

In the scope of the thesis an application should be developed that makes code optimzations (e.g. dead code elimination, copy propagation,…) visible make not only on the target code but also on intermediate representation. The application should allow the user to apply these optimizations in different orderings using a GUI.

Current Teaching

  • WS 2019WS 2018

    Principles of Informatics (FH Joanneum/Campus02) - Instructor

    Content

    Introduction: Computer Science, Information and Computer Science
    Efficiency and complexity
    Church-Turing Thesis and Von Neumann Model
    Logic, automata and language
    Programming: object-oriented, functional

  • WS 2019WS 2018

    Operating Systems Basics (FH Joanneum/Campus02) - Instructor

    Content

    Instruction Set Architecture: instruction set, programming model of a CPU
    operating systems
    file systems
    I / O subsystems
    Main memory management
    processor management

  • WS 2019WS 2019

    Code Quality (Advanced Software Quality Assurance for Technical Management)) - Instructor

    Co-Instructor

    Martin Pinzger

    Content

    Subject area know-how preparation and development of the level model, exchange about working methods in the company with the following contents:

    Definition of terms and history

    Advantages and expenses, prerequisites

    Coding Standards

    Clean Code

    Code Reviews, Pair Programming

    Code Refactoring

    Static and dynamic program analysis

    Software metrics

Past Teaching

  • SS 2019SS 2019

    Data Structures and Algorithms (FH Joanneum/Campus02) - Instructor

    Content

    – Introduction and basics

    – Elementary data structures: lists, stack, queue, heap

    – asymptotic runtime analyses: O, theta and omega notation

    – Basic Algorithmic Principles: recursion, divide and conquer,  backtracking

    – Sorting: Insert, Quicksort, Mergesort, Heapsort, Radixsort,…

    – Hashing

    – Search: sequential, binary, interpolative, quadratic binary search

    – Tree structures: definition and basics, binary trees, (a-b)-trees, amortized restructuring costs, balanced search trees

  • WS 2018WS 2018

    Web Technologies & Usability (FH Joanneum/Campus02) - Instructor

    Content

    – Introduction to Web & HTTP
    – HTML (Hypertext Markup Language) & Websites
    – CSS (Cascade Style Sheets) & Design
    – Introduction to Human-Machine-Communication, Psychology of Human-Machine-Communication
    – User Experience (UX)
    – Usability engineering
    – Usability Benchmarking
    – Prototyping and Tools
    – Evaluation of usability and user experience

  • WS 2018WS 2018

    Software Maintenance (Graz University of Technology) - Instructor

    Content

    The software maintenance course introduces the principles of software maintenance. Practical problems regarding maintenance activities as well as theoretical aspects are presented and discussed within the course. In particular, we will have a look at the maintenance processes, software re-use, reverse engineering and foundations of software maintenance. Moreover, we will discuss methods for software analysis like slicing and techniques based on object-flow graphs.

    Course Description

    Previous Course Website

  • SS 2018SS 2018

    Modelling of Technical Systems (Graz University of Technology) - Instructor

    Co-Instructor

    Gerald Schweiger

    Content

    In the course “Modelling Technical Systems” we discuss modeling for simulation and diagnosis of systems comprising components and their connections.  The objective of the course is to introduce the modeling language Modelica and its application to automated diagnosis where a modified language is used.

    Course Description

    • SS 2018SS 2018

      The Twin Peaks Model: Software Architecture and Lifecycle (Value-Network Sued - IT enabled Eco Systems) - Instructor

      Co-Instructor

      Bernhard Peischl

      Content

      This course deals with the basic concepts of modern architectural concepts and teaches the participants the central characteristics of different architectures. Concepts such as components and connetors will be introduced and how they can be used to design complex software systems. Software architecture as a consistent concept in the product life cycle and the potential influence of the organizational structure / team structure on the software architecture (Convey’s Law) are discussed.

    • SS 2018SS 2018

      Data as a Service: Technologies and Architectures (Value-Network Sued - IT enabled Eco Systems) - Instructor

      Co-Instructor

      Bernhard Peischl

      Content

      This course focuses on limitations of centralized approaches and requirements for distributed and parallel data processing, including big data applications. In the big-data context, very high volumes of data  have to be processed very quickly or in real time, as well as a multitude of different data (structured, semi-structured, unstructured data). The validity and usefulness of the data is essentially determined by high credibility. In addition, high quality of the data (i.e., elimination of erroneous values, elimination of duplicates, etc.) should be ensured. These requirements demand the implementation of complex data processing pipelines.

    • SS 2018SS 2016

      Compiler Construction Pratical /Lecture (Graz University of Technology) - Instructor

      Co-Instructor 

      Franz Wotawa (2016-2017)

      Content

      The lecture gives an overview of the structure and the functionality of a compiler for a programming language. The focus is on the analysis of languages including lexical analysis, parsing, and type checking using attributed grammars. Intermediate code generation, the runtime environment and code generation are also part of this lecture.

      The practical part of compiler construction comprises two units. In the first unit, exercises based on the content of the lecture are given and have to be solved. In the second unit the students have to implement a simple compiler in Java using AntLR for a defined small programming language.

      Course Description

      Previous Course Website

    • WS 2017WS 2015

      Software Maintenance (Graz University of Technology) - Instructor

      Co-Instructor (2015-2017)

      Franz Wotawa

      Content

      The software maintenance course introduces the principles of software maintenance. Practical problems regarding maintenance activities as well as theoretical aspects are presented and discussed within the course. In particular, we will have a look at the maintenance processes, software re-use, reverse engineering and foundations of software maintenance. Moreover, we will discuss methods for software analysis like slicing and techniques based on object-flow graphs.

      Course Description

      Previous Course Website