Skip to the content.

Preliminaries

Table of contents
  1. Rules of the game
    1. Warm-up exercises, not graded
    2. Weekly individual exercises, graded
    3. Finals exercises, graded
    4. Extra exercises from previous years, not graded
  2. Plagiarism and dishonest conduct
  3. AI usage
  4. Getting started
    1. Python
      1. Resources
    2. Docker
      1. Resources
      2. Checklist
    3. Git & GitHub
      1. Creating a GitHub account
      2. Setting up Git
      3. Resources
      4. Checklist
    4. VS Code
  5. Support

Rules of the game

The programming exercises are a great way to understand and apply what you learn in class.

There are four types of exercises:

Warm-up exercises, not graded

Just ensuring everything is working as expected.

Weekly individual exercises, graded

The weekly exercises must be solved individually. They will involve relatively short programming tasks related to the topics covered in class. You will submit your solutions via your private GitHub repository. Detailed submission instructions are provided later.

Important information:

Exercise ID Topic Evaluation opens Evaluation closes Deadline status Available Submissions
02 Graph Search 23rd of September 20th of October (23:59 CET) confirmed 10
03 Informed Graph Search 23rd of September 20th of October (23:59 CET) confirmed 10
04 Dynamic Programming 30th of September 27th of October (23:59 CET) tentative 10
05 Steering (Dubins) 14th of October 3rd of November (23:59 CET) tentative 10
06 Collision Checking 21th of October 10th of November (23:59 CET) tentative 10

Finals exercises, graded

These are solved in small groups of up to 3 people, with the same modality as the weekly exercises. They will be a bit more involved content-wise. Instructions on group formation are provided via Piazza.

Exercise ID Topic Evaluation opens Evaluation closes Deadline status Available Submissions
13 Satellite Docking 11th of November 1st of December (23:59 CET) tentative 10
14 Multi-agent Goal Collection 2nd of December 22nd of December (23:59 CET) tentative 10

Extra exercises from previous years, not graded

You can have a look at the finals from last year and challenge yourself.

Exercise ID Topic Evaluation opens Evaluation closes
07 Optimization - -
08 Driving Games - -
09 PDM4ARocket Explorer - -
10 Robot Runners - -
11 Spaceship - -
12 Highway Driving - -

Plagiarism and dishonest conduct

We take plagiarism and dishonest conduct very seriously. The exercises are meant to be solved individually. We will check for plagiarism with automated software and human help. Violating the ETH plagiarism etiquette will result in disciplinary actions as per ETH regulations.

“C. The consequences of plagiarism Pursuant to Art. 2 Para. b of the ETH Zurich Disciplinary Code (RSETHZ 361.1) plagiarism constitutes a disciplinary violation and will result in disciplinary procedures. Detailed information regarding these procedures and their jurisdiction may be found in the ETH Zurich Disciplinary Code (RSETHZ 361.1 / www.rechtssammlung.ethz.ch).”

AI usage

AI coding assistants are becoming a legitimate part of a modern robotics workflow. Therefore we encourage you to learn how to use them to accelerate your development.

The following assistants are preinstalled in the development environment:

Each of these requires your own account, and we unfortunately cannot provide any paid quota. We recommend starting with the free plans and only then deciding whether a subscription is worthwhile for you. You are also free to use any other assistant.

What is acceptable. Using an assistant for the supporting parts of the work: looking up documentation and APIs, writing tests, debugging, and profiling or optimizing an implementation you have already designed.

What is not acceptable. Delegating the design and implementation of an algorithm to an AI assistant. The purpose of these exercises is that you can reason about, implement, and debug planning algorithms.

We will check for excessive reliance on AI and for a lack of familiarity with the content of the exercises.

Getting started

We will use:

If these tools are new to you, do not panic. We require only very basic use of most of them. It’s a good time to start learning these tools, as they are widely adopted in modern robotics.

If you get stuck, pair up with experienced colleagues. If that doesn’t solve the problem, reach out to the instructors on Piazza or during office hours.

If you are using a Linux-based OS, the process should be straightforward. Windows and macOS may have more hiccups, but they are supported as well.

Python

Python will be the programming language adopted in this course. You don’t need to install Python on your local machine because you’ll work in a Docker container with Python preinstalled (more information below).

Resources

If you want to learn Python basics, here are some resources to get you started:

Docker

We will run the exercises in a containerized environment, a technique widely used in modern software development. Read the Resources section for more information on Docker.

Now let’s install it on your computer:

If you are using Linux, you can choose to either install Docker Engine or Docker Desktop, but NOT both. Docker Engine is the core container runtime and is bundled with the Docker CLI docker, while Docker Desktop is Docker Engine + GUI + extra tools.

👉 For Linux users of this course, Docker Engine is recommended for its simplicity and lower resource usage.

If you are using Mac, follow the instructions below to install Docker Desktop:

If you are using Windows, follow this YouTube video to install Docker Desktop:

Resources

If you want to learn more about Docker, check out the following resources:

Checklist

Git & GitHub

Git is a version control software. GitHub is a cloud-based platform that hosts Git repositories. Please see the Resources section if you are new to them. You will need Git on your computer and a GitHub account.

Creating a GitHub account

If you do not already have a GitHub account create a new one here.

Setting up Git

For Linux or Mac users:

For Windows users,

Notes for Windows users:

Resources

Checklist

VS Code

Using an IDE is not necessary. But it provides a good set of tools that speeds up development (code navigation, debugging,…). Moreover, we will provide environment configurations that will make your life easier.

We recommend using VS Code. You can find installation instructions here. After installing VS Code, also install the Dev Containers extension from here.

There are many other good IDEs for Python (PyCharm, Atom, Spyder,…) that should work just fine if you know how to replicate the development environment in .devcontainer/ exactly. We won’t support them officially.

Support

Use the forums on Piazza for general questions: this way, you can help other students who experience the same issues.