Seminar (BSc/MSc) Software Engineering
This is a seminar for Masters students in the Swiss Joint Master of Science in Computer Science as well as Bachelors, Masters and PhD students completing their project work or thesis in the Software Engineering Group. Seminar students will work on a small, supervised project during the semester, and present their work at the end of the semester. The course is offered in both fall/spring semesters.
The seminar typically starts with a few scheduled talks revolving around different contemporary topics in advanced software engineering. The talks are given by members of the Software Engineering Group, who will also serve as mentors during the seminar and guide the student’s work on a practical and focused problem in the field of software engineering.
Learning outcomes
The Software Engineering Group aims at understanding the problems and challenges that software developers are faced with in often times highly interdisciplinary environments, and at devising novel software engineering methods, techniques and tools addressing their needs. An essential result of the research are novel development tools in order to evaluate the developed approaches in the context of practical case studies and experiments.
Within this seminar, students are invited to participate in the group’s research, e.g., by contributing to the prototypical implementation of new development tools and their evaluation, delving into state-of-the-art software engineering techniques and methods, but also experimenting with cutting-edge tools from other parties. This way, after the successful completion of this course, students will be able to, e.g.:
- Use a sophisticated tool supporting software verification at different levels of abstraction, or
- build an Eclipse or other IDE plugin supporting developers in their daily development tasks, or
- write a crawler that analyzes open source software repositories to answer a specific research question, or
- train a machine learning model predicting quality attributes of a given program or software project, or
- create a new method of visualizing static and dynamic aspects of a software system, or
- work on the design and implementation of programming or modeling tools, etc.
As all the works will be presented in a research seminar at the end of the semester, students will also learn to:
- Read and critically analyze scientific publications in the area of software engineering;
- Discuss methods, techniques and tools supporting advanced and automated software engineering;
- Relate the work during the seminar to their own scientific work, if applicable;
- Give a scientific presentation, in terms of structure, level of content, and presentation techniques;
- Manage their time during the preparation of their work, when operating in teams or independently.
Organization (Fall Semester 2024)
- Materials: ILIAS
- Start: Tuesday, 17th September 2024, 10:15-12:00 (Seminarraum 107, Engehalde, E8)
- Language: English, German
- Course Repetition: Spring Semester 2025
Schedule (Fall Semester 2024)
Introduction and presentation of topics:
- Tuesday, 17th September 2024, 10:15-12:00 (Seminarraum 107, Engehalde, E8)
- Tuesday, 24th September 2024, 10:15-12:00 (Seminarraum 107, Engehalde, E8)
Throughout the semester:
- Work on individual projects, supervised by members of the group
Final presentations:
- TBA
Good to know
- What should my scientific presentation/talk look like? Some DOs and DON’Ts..
Examples of former project topics
- Pattern-based Characterization of Evolving Variable Software
- Developing a Software Bills of Materials for Android Apps
- Git Cherry Picks in the Wild: Improvements on Cherry Harvest
- Exploring Semi-Automated Conflict Resolution: The Impact of Structured Merge
- Dynamically Generating Code Contract Contracts with Daikon
- Layering Kanban over Lepiter Notebook Pages
- Migrating Dr. Geo to GT
- Model Reverse Engineering with LLMs
- What is a Feature? Lessons Learnt from Mining GitHub
- Visualizing the Provenance of Test Cases Generated by EvoSuite
- Challenges and state-of-the-art solutions to online Multiplayer (RTS) Games
- Generating Unit Tests from System Executions
- Test Generation for Python
- Diversity-guided Search Exploration for Self-driving Cars Test Generation through Frenet Space Encoding
- Prototype Development for Android Dynamic Analysis
- Simulation-based Test Case Generation for UAVs
- Co-simulation Support for (Mutation Testing in) Simulation-based test suites of Self-driving Cars
- TLA+ and its application in industry
- GitHub Action Code Ownership
- Runtime CAN-Bus translation with Simulated Data for Self-driving Cars
- Model-Based Development using an AI Language Model
- Mutation Testing for Simulation-based Test Suites of Self-driving Cars
- MWE Generator: Automated creation of Minimal Working Examples
- The role of software documentation in sustainable software engineering process
- How do code documentation efforts spread over class hierarchy?
- Documentation practices of developers in Polyglot environments
- Software Model Checking with CBMC
- Distributed Systems and TLA+
- Software Model Checking C Source Code
- Early validation of system requirements and design through BIP
- Runtime Verification with Metric First Order Temporal Logic
- Monitoring Spatially-Distributed Systems with Spatio-Temporal Logics
- Software Modeling with Alloy