Research Group for Applied Software Engineering
Forschungsgruppe für Angewandte Softwaretechnik

Bachelor's Theses

Bachelorthesis 
Towards a declarative definition of Network configurations - Custom Terraform Provider for REST APIs
Advisor
Supervisor
Author
Open
Date
27.10.2021
Description

 

Infrastructure as Code (IaC) is the state-of-the-art method of managing resources both on-premise and in the cloud. It is an approach to automate the complete lifecycle of any resource utilizing software development practices. The main goal is a consistent and repeatable representation of the entire developed system. One of the most popular IaC tools is Terraform. With Terraform, infrastructure requirements are formalized as declarative configuration files consisting of providers and resources. A provider is a plugin that allows interaction with external entities like AWS or other APIs. Each provider defines a set of data sources and resource types. A resource, on the other hand, describes some infrastructure object like a virtual machine, DNS record, or Network. 
This thesis consists of two parts. First, you will develop and outline how REST APIs can be implemented in custom Terraform providers. During the second part, you will design and implement a REST API for an existing network stack and use your approach to implement the API in Terraform. 

Goals

 

  • Design a general approach how REST APIs can be implemented as Terraform Providers 
  • Design and implement a robust and secure REST API for an existing Python Library which controls DNS, DHCP, etc.
  • Design and implement a Terraform Provider for this REST API
Prerequisites

 

  • Compulsory 
    • Linux and networking knowledge
    • Comfortable with Python 
    • Willing to learn Go and Terraform
  • Preferred
    • Good Python Knowledge
    • Good Go Knowledge 
    • Experience in API design
    • Experience with Terraform and its workflow
Application

 

Email to This email address is being protected from spambots. You need JavaScript enabled to view it. with 

  • A short motivation letter
  • A summary of your projects/experience 
  • What ever you want to share with us 

________________________________________________________________________________________

 

Bachelor's or Master's Theses

Master / Bachelor
Step-wise exercises with interactive help tutorials in Artemis
Advisor
 
Many exercises include multiple tasks that depend on each other. Then it is impossible, difficult and/or demotivating for students to continue with the 2nd or 3rd task if they were not able to solve the 1st task. It is also misleading if the 1st task is finished and the student gets the feedback that e.g. 8 out of 12 test cases still fail. In this thesis, you will extend Artemis so that student can receive automatic help in form of live tutorials for exercise parts that they don't understand or cannot solve. Based on a template/solution diff, test coverage analysis and the connection between tasks, tests and code, Artemis will be able to automatically propose hints for tasks which can be further refined by instructors and linked to relevant lecture content. (Master thesis only) The thesis should also evaluate if these improvements help and motivate students to achieve a better learning experience. Artemis is open source and available on https://github.com/ls1intum/Artemis

 

Master / Bachelor
Further Development of Apollon (https://github.com/ls1intum/Apollon
Advisor
  Orion already works for students to participate in programming exercises and for instructors to setup programming exercises, but not yet for the code review of programming exercises by tutors. Inline hints, the support for team based exercises and automatic conflict resolution would be other possible enhancements. 

 

Master / Bachelor
Further Development of the IntelliJ Plugin Orion (https://github.com/ls1intum/Orion
Advisor
  Orion already works for students to participate in programming exercises and for instructors to setup programming exercises, but not yet for the code review of programming exercises by tutors. Inline hints, the support for team based exercises and automatic conflict resolution would be other possible enhancements. 

  

Master / Bachelor
Development of an Eclipse Plugin for Artemis
Advisor
  There is already an IntelliJ plugin for Artemis called Orion (https://github.com/ls1intum/Orion), it would also be interesting to develop an Eclipse plugin with the same feature set.

 

Master / Bachelor
Further Development of the Gitlab / Jenkins Integration in Artemis
Advisor
  Programming exercises in Artemis can be realized with Bitbucket and Bamboo or with Gitlab and Jenkins. Currently, the integration with Gitlab and Jenkins is limited and does not offer all functionality. In this thesis, the missing features would be implemented. In addition, the concept of build agents and dockerized builds should be realized within Jenkins.

 

Master / Bachelor
Communication and Discussions on Artemis
Advisor
  Discussions on Artemis are already context sensitive in Artemis, however their functionality is still limited. In this thesis, the features would be enhanced based on new functionility. Users should be able to link Artemis content (e.g. videos scenes, exercise tasks, specific lecture slides) in questions. There should be dedicated channels for tutor groups and internal communication (e.g. between instructors and tutors). In addition, the mechanism to prevent post duplication should be enhanced and the search for posts within a course should be improved.

 

Master / Bachelor
Templates for all Programming Languages in Artemis
Advisor
  With its VCS and CI architecture, Artemis supports any programming language for programming exercises. Currently, it includes templates for many popular languages, however templates for a couple of languages is still missing. In this thesis, new templates for programming exercises will be developed and tested with the Bitbucket/Bamboo and Gitlab/Jenkins. In addition, static code analysis should be integrated into more programming exercise templates.

 

 
Master / Bachelor
Learning Paths in Artemis
Advisor
  In this thesis, the learning analytics should be enhanced in Artemis to provide learning paths for students. It should be possible for instructors to define dependencies (prerequisite, conists of, duplicate) between learning goals. This information should be used to build individual paths based on the existing experiences of students and will provide first steps into adaptive learning.

 

Master / Bachelor
Improving the Communication with External Systems in Artemis
Advisor
  The communication with the external systems (Bamboo, Bitbucket, Jenkins, Gitlab) in Artemis can be further improved. Artemis should store the console log of failed builds in the database and not always fetch it from the CI system. It should be possible to sync all build plans of an exercise in case the template build plan is changed. Tutors should be able to download the student repository including the tests to simplify the local setup. The build queue and the history of all build times of an exercise should be used to indicate students and instructors how long they need to wait for the next build.

________________________________________________________________________________________

 

Master's Theses

________________________________________________________________________________________

 

Guided Research