Teaching

Current Term

Bachelor Project: Maze Runner Robotics

Tutors: Carlos Medina, Alexander Golkowski and Simon Janzon

Are you ready to put your programming skills to the ultimate test in a high-stakes challenge? Enroll to our Bachelor Project course, where you’ll dive into the world of robotics and autonomous navigation in a Maze Runner-style competition. Your mission: to program a robot capable of navigating a complex labyrinth and finding the exit faster than any other team.

In this course, you’ll focus on the intricacies of robot programming, honing your skills in algorithm development, sensor integration, and real-time decision-making. Your task is to write the code that will enable your robot to think and act independently, overcoming obstacles and optimizing its path to escape the maze.

Working in teams, you’ll face the thrill of competition as you strive to refine your robot’s navigation abilities, pushing the limits of your programming expertise. This hands-on project not only deepens your understanding of robotics software but also sharpens your problem-solving, critical thinking, and teamwork skills—key assets in the tech world.

If you’re passionate about coding, love a challenge, and are eager to prove your skills in a competitive setting, this Bachelor Project is the course for you. Join us and see if your programming can lead your team to victory!

The goal of this Bachelor Project is to introduce students to the challenges of mobile robotics. You’ll work with a mobile robot as the platform for your implementations, learning the fundamentals of ROS (Robot Operating System): from navigating with a robot to gathering data from various sensors and using it to make decisions to escape the maze.

Participants in this course are expected to be highly motivated and must have a solid understanding of one programming language, knowledge of programming in Python or C++ are of advantage. Note that the number of participants in this project is strictly limited. If you want to participate in this course, please send an email to carlos.medina-sanchez@uni-due.de to indicate your interest. You will then be added to the Moodle course, where the procedures and the project material will be made available. The kick-off meeting will take place on 08.10. 2024 at 10:00 a.m. in room SA-215, further registration is not possible. Participation in the kickoff meeting is mandatory.

This course may be held in German and English depending on the participants. The project is suitable for students at the bachelor level. If you are not sure whether you fulfill the requirements or if you have any questions, please send an email to carlos.medina-sanchez@uni-due.de

Einführung in die Programmierung

Lecturer: Prof. Dr. Pedro José Marrón, Exercises: Bijan Shahbaz Nejad & Peter Roch
In dieser Vorlesung werden grundlegende Programmiertechniken in einer objektorientierten, modernen Programmiersprache (Java) besprochen.
Inhalte im Einzelnen:

  • Einführung und grundlegende Struktur von Programmen
  • Lexikalische Elemente, Datentypen und Variablen, Ausdrücke und Anweisungen
  • Objektorientierte Programmierung: Klassen, Methoden, Vererbung, Interfaces, Abstrakte Klassen, Polymorphismus
  • Standard und Utilityklassen
  • Ein- und Ausgabe mittels Streams
  • Ausnahmebehandlung
  • Rekursion
  • Datenstrukturen: Zeichenketten, Listen und Stapel, Suchbäume, Assoziative Datenfelder
  • Generische Datentypen – Anwendung von Standardtypen
  • Graphische Oberflächen – Einführung und Ereignisbehandlung

Die Übungen sollen die Studierenden anregen die in der Vorlesung gelernten theoretischen Konzepte praktisch anzuwenden. Dabei werden grundlegende Programmierkenntnisse erworben und die Studierenden in die Lage versetzt einfache Programmieraufgaben selbstständig zu bearbeiten. Zusätzlich zu den Übungen werden Tutorien angeboten, welche Studierende mit besonderem Lernbedarf weiter unterstützen und die Inhalte der Vorlesung frühzeitig wiederholen.

Weitere Informationen zur Organisation sind auf der Moodleseite des Kurses zu finden. Den Einschreibeschlüssel erhalten Sie in der ersten Vorlesung.

Zeit und Ort:

Vorlesungen: Freitags 8 – 10 Uhr, Raum R14 R00 A04 (Start 11.10.2024)
Übungen: Freitags 10 – 12 Uhr, Raum SH 601 (Start 11.10.2024)
Programmierberatung:
Mittwochs 8 – 10 Uhr, Raum SE 108
Donnerstags 8 – 10 Uhr, Raum SM 311
Testate: Detailierte Auflistung der Termine über Moodle

Eintrag in LSF: Vorlesung, Übungen, und Testate

 

Rechnerstrukturen und Betriebssysteme

Dozent: Prof. Dr. Pedro José Marrón, Übungen: Simon Janzon und Alexander Julian Golkowski

Die Vorlesung ist zweigeteilt. Die Vorlesungsinhalte mit dem Schwerpunkt Rechnerstrukturen werden vom Lehrstuhl HCI von Prof. Dr. Stefan Schneegaß vermittelt, die Inhalte mit dem Schwerpunkt Betriebssysteme vom Lehrstuhl NES von Prof. Dr. Pedro Marrón.

Folgende Qualifikationen werden in der Vorlesung vermittelt:

Die Studierenden

  • können den Aufbau und die Funktion von Rechen- und Betriebssystemen sowie die grundlegenden Konzepte erläutern
  • sind in der Lage, ein einfaches Hardwaresystem aus digitalen Basiskomponenten zu entwerfen und Grundfunktionen eines sehr einfachen Betriebssystems selbst zu entwickeln
  • können sich in vorgegebene Systeme einarbeiten, diese einordnen und ihre wesentlichen Eigenschaften erkennen
  • können die grundlegenden Aufgaben und Arbeitsweisen von Rechensystemen ebenso wie den prinzipiellen Aufbau aus digitalen Basiskomponenten erläutern
  • kennen kombinatorische Schaltungen, Bool’sche Funktionen, Schalter und einfache Gatter
  • sind vertraut mit der binären Arithmetik und Zahlendarstellung und können sie anwenden
  • verstehen, was Prozesse sind und können erläutern, wie sie verwaltet, ausgeführt und synchronisiert werden und wie eine Kommunikation zwischen Prozessen erfolgen kann
  • sind in der Lage zu erklären, wie Prozessor, Speicher und Ein-/Ausgabefunktionen verwaltet werden
  • sind befähigt, ein einfaches Hardwaresystem und Grundfunktionen eines sehr einfachen Betriebssystems selbst zu entwerfen
  • verfügen über die Fähigkeit, effizienzsteigernde Techniken in Hardware und Betriebssystem zu konzipieren
  • besitzen eine vertiefte Kenntnis von Rechnerstrukturen und sind in der Lage, diese praktisch anzuwenden
  • können maschinennahe Programme entwerfen, implementieren, diese auf geeignete Hardware portieren und ausführen, besitzen ein vertieftes Verständnis von Funktion und Aufbau von Hardware und zugehöriger Betriebssoftware, und können diese erläutern und zielgerichtet einsetzen

 

Ort und Zeit:

Die Vorlesungen finden statt:

Mittwochs von 18.00 – 20.00 Uhr im Raum SH 601

 

Die Übungen finden statt:

Freitags von 12.00 – 14.00 Uhr im Raum S05T Hörsaalzentrum – S05 T00 B08

 

Weitere Informationen zur Organisation sind auf der Moodleseite des Kurses zu finden. Der Einschreibeschlüssel wird in der Einführungsveranstaltung am 09.10.2024 bekanntgegeben.

 

Prüfung:

Zum Modul erfolgt eine modulbezogene Prüfung in der Gestalt einer Klausur über die gemeinsamen Ziele von Vorlesung und Übung (in der Regel: 90 bis 120 Minuten). Die erfolgreiche Teilnahme an der Übung ist als Prüfungsvorleistung Zulassungsvoraussetzung zur Modulprüfung.

Einträge im LSF: Vorlesung und Übung.

 

Seminar: Computer Vision and Deep Learning

Tutors: Bijan Shahbaz Nejad, Peter Roch

Computer Vision is an emerging technology with numerous applications. Since computers and GPUs became more powerful, neural networks could be applied to an increasing number of existing problems.

The goal of this seminar is to familiarize students with central challenges and state-of-the-art technologies in the area of computer vision and deep learning. Students will choose one topic out of:

  • Architectures of Convolutional Neural Networks in Computer Vision
  • 3D Model Datasets and their Applications in Computer Vision
  • Classification and Analysis of Large Scale Image Datasets
  • Generative AI in Computer Vision
  • Evolution of the YOLO Model
  • Optimization and Regularization Techniques for Deep Learning

Each student then gains expert knowledge on their topic by reading relevant literature, prepares a scientific survey and holds a presentation.

Note that the number of participants in this project is strictly limited. If you want to participate in this course, please send an email to peter.roch@uni-due.de or bijan.shahbaz-nejad@uni-due.de to indicate your interest. You will then be added to the Moodle course, where the procedures and the seminar material will be made available. The kick-off meeting will take place on 09.10.2024 at 10:00 am in room SA-126, further registration is not possible. Participation in the kickoff meeting is mandatory. This course may be held in German and English depending on the participants. The seminar is suitable for students at the bachelor student level. If you are not sure whether you fulfill the requirements or if you have any questions, please send an email to peter.roch@uni-due.de or bijan.shahbaz-nejad@uni-due.de.

 

Systemnahe Informatik (Systems Programming)

Lecturer: Prof. Dr. Pedro José Marrón, Exercises: Sayedsepehr Mosavat, Bijan Shahbaz Nejad, Peter Roch

In contrast to application programming whose focus is to develop software providing services to the user, systems programming addresses software that interacts with computer systems on a low-level. In this sense, systems programming uncovers the dependency between software and the hardware executing it and forces the programmer to deal with low-level system knowledge. This knowledge is relevant not only to developing efficient software but also in systems with limited resources, e.g., embedded systems like robots, vehicles, and IoT devices. This lecture and the exercises provide the basis to understand and develop such system programs. In this course, the following topics will be discussed:

  • Basics of computer systems
  • Machine-level representation of programs
  • Optimizing program performance
  • Memory hierarchy
  • Linking
  • System-Level I/O
  • Network programming
  • Concurrent programming

The exercises will provide hands-on experience in systems programming to understand the interdependence between software and the computer system executing it. Basic knowledge of the C language is required.

Place and Time:

At the present time, we are planning on offering this course in presence for every student that can and wants to participate. In addition, we will provide access to video recordings prepared during the previous semesters via the Moodle page of this course.

The lecture will take place on Thursdays from 10:00 to 12:00 in Room S-E 407.
The first lecture takes place on October 10th, 2024.

The exercises will take place on Wednesdays from 12:00 to 14:00 in Room S-A 215 and on Thursdays from 16:00 to 18:00 in our Online Lecture Room.
The first exercise session takes place on October 16th, 2024.

Please make sure to register at the Moodle of the course so that we can inform you about changes.

The password for the self-enrollment (valid until the end of October) is: SysProg-WiSe2425
If you have any questions or problems with enrollment, please contact sayedsepehr.mosavat@uni-due.de.

Exam:

The module is accompanied by a corresponding examination in the form of a written exam on the common goals of lecture and exercises (usually 90 minutes). Successful participation in the exercises is a prerequisite for admission to the module examination. The students collecting 80-89% of the points in the exercises receive a grade bonus of 0.3/0.4, for 90% of the points or more a grade bonus of 0.6/0.7.

The lecture and exercises will be held in English. For more information about the course, feel free to contact Sayedsepehr Mosavat.

Moodle page: Link.
Registration to the Moodle course will be possible near the start of the lecture period.

LSF entry: Lecture and Exercises