Preliminaries
Rules of the game
The programming exercises are a great way to understand and apply what you learn in class.
There will be four types of exercises:
- Warm-up exercise(s), not graded;
- Weekly individual exercises, graded (will account for 30% of the final grade);
- Finals group exercises, graded (will account for 70% (30 + 40) of the final grade).
- Extra exercises from previous years, not graded.
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 relative short programming task related to the topics covered in class. You will submit your solutions via your private repository on Github (detailed instruction on the submission procedure can be found later on).
Important information:
- Each exercise has a limited submission window, typically 2 weeks.
- A missing submission (or failing to meet the deadline) will count as 0. The score will be based on some performance metrics (how correct is your solution, how fast it is, how much memory it uses, etc.) which will be declared in the exercise description. Note that we will not provide in advance the mapping score -> grade.
- Only the last valid (i.e., processed by the server irrespectively of the outcome) submission within the exercise time window will account for your exercise grade.
- Only your best N-1 exercise results contribute to the 30% of your final grade. Where N is the total number of weekly exercises.
- For each exercise you will have a limited number of possible submissions to the server. You will be able to test locally as much as you want though. Consider this as a learning experience for robotics, field tests are expensive.
- Here you can see a temporary schedule (will be completed on the fly):
Exercise ID | Topic | Evaluation opens | Evaluation closes | Deadline status | Available Submissions |
---|---|---|---|---|---|
02 | Graph Search | 25th of September | 15th of October (23:59 CET) | confirmed | 10 |
03 | Informed Graph Search | 25th of September | 15th of October (23:59 CET) | confirmed | 10 |
04 | Dynamic Programming | 2nd of October | 22nd of October (23:59 CET) | confirmed | 10 |
05 | Steering (Dubins) | 16th of October | 5th of November (23:59 CET) | confirmed | 10 |
06 | Collision Checking | 23rd of October | 12th of November (23:59 CET) | confirmed | 10 |
- Most of these exercises are already accessible before the official evaluation opens. You are free to engage with them earlier, but be aware that changes may occur up until the official opening. After the evaluation opens the exercise is “frozen” and you can solve it and submit it.
Finals exercises, graded.
These will be solved in small groups of 3 people maximum but the modality is the same as the weekly exercises. They will be a bit more involved content-wise. Instructions on the group forming modality are provided via Piazza.
Exercise ID | Topic | Evaluation opens | Evaluation closes | Deadline status | Available Submissions |
---|---|---|---|---|---|
11 | Spaceship | 13th of November | confirmed | 10 | |
12 | Highway Driving | 4th of December | 23rd of December (23:59 CET) | confirmed | 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 | - | - |
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).”
Getting started
We will use:
- Git as version control system;
- Python as programming language;
- Docker as environment containerization (but you won’t see it);
If they all sound completely new to you do not panic. We will require a very basic use of most of them, but it is a good time to start learning these tools since they are all widely adopted in modern robotics.
If you get stuck, try to pair with experienced colleagues for help. When this still does not solve the problem, try to reach out to the instructors on XXX or at the office hour.
If you are using a Linux-based OS the process should be straight forward. Windows and Mac can give some more hiccups in the setup, but they are supported as well.
Git
Git is a version control software. Please find more explanation under the “Resources” paragraph if you have never heard of it before. You will need Git on your computer and a GitHub account.
Installing Git
Simply follow the steps for your OS at this link
Creating a GitHub account
If you do not have already a GitHub account create a new one here
Resources
Checklist
- I have Git set up on my computer
- I have a GitHub account
- I know how to clone a repository
- I have cloned the GitHub repository
Docker
We will run the exercises in a virtual environment (or better, in a container). Read the “Resources” section to get a better understanding of it, containerization is ubiquitous in modern software development. Now let’s install it on your computer:
- (Mac, Linux) installation instructions
- (Windows) the procedure is slightly more complicated, we suggest to start from here. Make sure to install WSL 2 and Ubuntu 22.04 LTS as recommended distro.
Resources
Checklist
- I have installed Docker on my computer
- I can run without errors the Docker hello-world (
docker run hello-world
)
Python
Python will be the programming language adopted in this course.
Resources
- Official documentation
- Python Tutorial, in particular make sure to go through the basic data structures (tuples, lists, dictionaries, sets,…), loops (while, for,…), conditional statements (if-else), functions, classes and objects.
VS Code
Using an IDE is not necessary. But it provides a good set of tools that speed up the development (code navigation, debugging,…). Moreover, we will provide environment configurations that will make your life easier.
Install VS Code
There are many other good IDEs for python (PyCharm, Atom, Spyder,…), they should work just fine if you know how to
replicate exactly the development environment in .devcontainer/
but 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.