Course: Software Engineering Lab

Course Description

SE Lab is a mandatory course for Computer Science (B.Sc. Informatik) and Applied Computer Science (B.Sc. Angewandte Informatik) students in their fourth semester. Participation is also open for students from other programs (e.g., IT Security, IT Engineering) on demand.

In this one-semester practical course, you will engage in a software project covering all important software-engineering activities from requirements engineering over system design/architecture and implementation, to testing and continuous integration. You will build a complex software — currently the focus is on Android apps — in a team with your fellow students. You will rely on the knowledge and skills you obtained in your computer science studies so far, especially from the software engineering and programming courses. At the end of the course, you will have not only honed your technical abilities, but also gained practical experience in teamwork, project management, and customer collaboration. You will face real-world challenges and problems, facilitating your technical and social problem-solving skills and deepen your knowledge — while hopefully having fun building the software!

Process, Teamwork, and Supervision

You will work in small groups of typically 5 students, simulating real-world software development teams. You will organize yourself and assign responsibilities as is typical in industry settings. Your team will follow the agile development process SCRUM, with multiple sprints planned throughout the semester. At the end of each sprint, your team will hand-in a deliverable, such as a requirements specification or a working increment of the software. This iterative approach mirrors industry practices and provides yous with invaluable experience in adapting to changing requirements and priorities, which often occur after presenting the deliverables and obtaining feedback from the customer.

At the beginning of the course, students will participate in an introductory session that includes topic presentations where customers pitch project topics, followed by some lectures on theory to provide a basic understanding of relevant concepts based on what students learned in the SE course, but tailored towards the SE lab (Android, version-control, code style, Android architectures, app testing). The course especially features a SCRUM coaching provided by professional SCRUM trainers. This coaching encompasses theoretical sessions to understand the SCRUM framework, process games designed to immerse you in different aspects of agile development, and hands-on discussions about the SCRUM process. We also aim for a Java recap crash course — also given by professional trainers — at the beginning of the course.

The actual software engineering will take place in several sprints, with sufficient planning before and after the sprints. Each team will perform 4 to 5 sprints, each having a duration of around 3 weeks. Members of the Chair of Software Engineering will supervise the teams during SCRUM review, retrospective, and planning meetings. The customer will participate in the review meetings to provide valuable insights into the importance of effective communication, understanding requirements, and delivering value to stakeholders. Towards the end of the sprint, there are hand-ins. Group hand-ins comprise a written report on a relevant topics and a working increment of your software. The written hand-ins comprise, at the beginning, the results of a market research for your topic, the requirements (e.g., epics, user stories, use cases), later a vision or demo video (to demonstrate a working increment of your software and to coordinate with the customer), the design/architecture of your software, and a testing strategy with working test cases. There are also a few individual hand-ins aimed at encouraging every student to contribute to the project in a fair manner.

Professional SCRUM Workshop

Two professional SCRUM trainers (and ‘Lehrbeauftragte’) from Agile Experts offer a professional SCRUM training and process games. Attending the training by all participants is important to learn details about SCRUM and about team dynamics. Another purpose of the workshop is for students to mingle, discuss the possible project topics, and to form groups interactively.

Agenda:

  • Scrum: Origin and background
  • Process games: Ubongo flow simulation, played in groups with moderation
  • When to apply agile processes? Advantages and limits.
  • The agile mindset
  • The Scrum Framework, events, and roles, explained in detail (time permitting, also eduScrum)

The training is in German. The trainers offer obtaining a professional SCRUM certificate with some additional training (costs around 50€), as an additional benefit of attending. This can be relevant for your future career.

Java Crash Course

The course targets students in the ITS (IT security) program and CS/AI students who do not have sufficient Java/OO expertise, or who want to update their expertise – to get up to speed with the SE Lab. Two professional trainers from viadee introduce the concepts of object-oriented programming and their implementation in Java using a consistent example. At the end of the course, participants will be able to develop and execute their own programs in Java.

The following contents are covered:

  • Introduction to Java
  • Development environment, debugging and development process with Gradle and IntelliJ IDEA
  • Data structures in Java
  • Object-oriented programming in Java
  • Creation of simple user interfaces
  • Testing and test-driven development

Follow-Up Courses

In the semester following the SE lab, we typically offer the lab course Android App Evolution, where participants of the lab can evolve their software, improve its maturity (bug fixing, refactoring), and add new features.

Material