Robot Programming (PLV 2) syllabus#

2 SWS, 3 ECTS, in degree program KI Bachelor

Intended learning outcomes#

The purpose of the course is for you (the student) to learn to:

  • design and compare different solutions for a robotics problem

  • model and implement a solution in a given robot programming framework

  • relate the behavior of an implementation in simulation and real world

  • structure their ideas and document their solutions in a reproducible way using a modern documentation framework


  • Fundamental programming tools (e.g, control flow, data structures, functions)

  • Beneficial: experience with Python or C++

Content (What we do to reach the learning outcomes)#

  • Programming using ROS (Robot Operating System) framework and Turtlebot3

  • Various robotics challenges including navigating through a maze

  • Collision avoidance using Q-learning

  • Documentation using Sphinx

  • Reproducible results using Docker

Didactic methods#

Seminar-like with mini projects each solving a different problem.

  • The instructor gives the required introductions during the contact hours.

  • The students self-study the tutorials and work on the mini projects optionally in a peer programming setting.

  • The results are demonstrated and discussed during contact hours.


The examination is based on the intended learning outcomes.

Project work (PStA, marked with 1 to 5) comprising:

  • the solutions (code) to the challenges

  • code documentation and project report using GitLab and Sphinx

  • solution presentations

There will be a deadline for each challenge. After the deadline each group will present their results on the robots, which will be graded.

The written reports will be submitted after three weekends after the end of the course. The written report must include a link to your code repository and documentation.


You can work on the challenges in groups of two or one. Groups may not help each other and must not exchange any code. The goal is that every group/student goes through the process of problem solving separately which is part of the course learning goal.

Even you collaborated with someone for the challenges, each student is responsible for writing a separate report so that every student can practice writing.

Mention the name of your partner in your report if you have collaborated.

The submitted codes may be checked with a software plagiarism software by the instructor.


Time & Room#

This course usually takes place in the two weeks before the summer semester starts.

Presence is required, because we will be working with physical robots. For room details refer to Moodle.

Feedbacks from students and action items#

I include the feedbacks from participants to (1) make myself accountable to improve the course and (2) give you a picture of my teaching style and course.

You find my takeaways/action items in the end.

Feedbacks from WS22#

I copied all of the feedback with the consent of the students and corrected minor spelling mistakes:

I liked: - the ready-to-go Ubuntu environment. Setting up a ROS install is time-consuming, and I’m grateful we get to skip that step. It’s also nice to have familiar IDEs preinstalled so that it takes very little time to get productive on an unfamiliar machine. - the discussions. Prof. Aydos makes an effort to engage with his students, and provides helpful suggestions. - the documentation. Everything one needs to make progress during the course is well documented and formatted, both in the repositories and on the course page itself. - the CI/CD for documentation, it’s cool to see the report live on Joan. I disliked: - the long hours, but I doubt much can be done about that.

I liked how the infos were structured and that everyone had an opportunity to share their work and get feedback. But it was hard to work with just one robot for the whole class and the deadlines for each part of the work were confusing.

Working with the robots can be fun and frustrating at the same time. A bit more guidance for some of the challenges would be appreciated, also with the setup or usage of some of the systems. All in all it was a enjoyable experience!

I enjoyed the basic outline of the course. The free exploring and the open challenges. I disliked the setup phase. It was quite a mess and would have been better if it was tested on the newest versions or the best versions written down. Since it is much better for after the course to have a working system on your private machines, rather than relying on the TH to enable the PCs. We should get access to the room 24/7, it was quite annoying to have to leave and not be able to finish once the building got locked down.

Inhaltlich gut, allerdings würde ich die Vorlesung nicht mehr in der Vorlesungsfreien Zeit halten.

I wasn’t allowed to attend this class online the last year, as I can see this year, the mandatory presence aspect doesn’t seem that crucial, as most of the challenges can only be done in simulation and all of the robots stopped functioning at some point. I’d suggest considering to offer this class online too for some folks that couldn’t come in lecture free time. I’d also love to have dome tipps before starting working on the challenge, to find out more about interesting practices and algorithms rather than trying to reinvent a bicycle. The workload for 8 days seems okay for me though. And I like how professor is friendly and always willing to help.

Everything was good, but it’s a lot of work for just 8 days.

Problems and action items#

  • Physical robots failed until the end of the course.

    Preparing more reliable physical robots by testing all of them before the class. One of the learning goals of the course is to see the difference between simulation and real world. Moreover seeing a physical robot act motivate some students more compared to only-simulation setting.

  • The gap between the last challenges was too high.

    I will add additional challenges for touching the wall (gradual de-acceleration) and moving between the cells (for navigating a labyrinth).

  • More algorithmic tools for the challenges vs reinventing the wheel.

    This is an introduction to robot programming which ends with a competition that can be solved with trivial algorithms. To spark creativity I don’t want to present potential algorithms. On the other hand some students struggled with some of the challenges. I will present practical algorithms after the deadline of each challenge so that struggling students can catch up.

  • Almost no one volunteered for presentations.

    I had to hand pick students which took a lot of energy. Everyone should present once their approach to motivate discussions. Next time presentation will be obligatory.