Welcome to your project at the DISCO Group. This guide covers logistics, expectations, and resources for Bachelor/Master theses and semester projects. This guide only concerns project guidelines. For specific writing and formatting advice, see the paper writing guide and the reference formatting guide.
Getting started
- Register in the TIK database and ping me when it’s done.
- Log in to ETH GitLab and send me your username. I will create a repository for your project. Also send me your GitHub username.
- Activate your ETH Microsoft account using these instructions (if you haven’t done so yet). Make sure you have access to the teams channel that I set up for you.
- Let me know if you want a key for a non-personal desk in our student room.
Resources
Below are a list of tools and paradigms you should/must use for your project:
Editor
- Overleaf: Collaborative LaTeX editing platform.
IDE
- Cursor (paid): best-in-class AI integration for coding. Recommended if you can afford the pro plan.
- VS Code (free): with GitHub Copilot, which is free for students via the GitHub Student Developer Pack. Available with your ETH credentials.
Agentic development
- Claude Code: CLI-based agentic coding tool. Can also be used from within Cursor. Useful for scaffolding, refactoring, and automating repetitive tasks.
Experiment tracking
- Weights & Biases: log metrics, hyperparameters, and artifacts. Free for academic use.
Communication
- Microsoft Teams: most communication happens on a dedicated Teams channel for your project. Make sure to activate notifications so you do not miss messages.
Containers
- Apptainer/Singularity: container manager that works well on shared clusters (often better than conda).
Compute
We have access to a GPU cluster. If your project needs it, I just need to send an email to get you set up. Otherwise, Google Colab is the easiest option for lighter experiments.
- Compute cluster guide (access required; I will add you if needed)
- ISG cluster guide (might need VPN or ETH network to access)
AI-assisted development
Using AI is not optional. From auto-completion to agentic coding, these tools will make you significantly more productive. However, you must remain in charge. AI generates code; you own it, understand it, and are responsible for it.
A good workflow for larger tasks (sometimes called “vibe coding”):
- Plan first. Describe what you want to build at a high level. Use the AI’s plan mode (e.g., Cursor’s Composer or Claude Code’s plan mode) to outline the approach before writing any code.
- Review every change. Read the generated code. If you do not understand a line, ask the AI to explain it or rewrite it more simply.
- Iterate in small steps. Give focused instructions (“add logging to the training loop”) rather than vague ones (“make it better”). Commit after each working increment.
- Test continuously. AI-generated code can be subtly wrong. Run your code and verify outputs at every step.
Weekly expectations
Meetings
- Frequency: weekly, in person by default (Zoom/Teams if necessary).
- Duration: 30 minutes for BT/ST/Practivat work, 1 hour for MT.
- Preparation: bring slides or a document with your progress (plots, tables, results). It does not need to be polished.
- Meetings are for high-level discussion: progress, blockers, next steps, and research direction. We should not be looking at code together unless I specifically ask to. You are expected to debug code on your own.
Work log
Keep a running work log (e.g., on Overleaf, Notion, or Google Docs) shared with me. Spend five minutes at the end of each work day noting what you did. This will also help when writing the report. At a minimum, update it weekly after each meeting.
Project deliverables
We always work with the aim of publishing: whether at a workshop or a conference. The report can reflect this goal and take the form of a submission-ready paper. See the paper writing guide for structure and formatting.
- Report: a comprehensive document detailing methodology, experiments, results, and discussion. Let me know when you want to start writing and I will share a template (through an overleaf project linked to a GitHub repository, see below).
- Midterm presentation (MT only): ~15 minutes, after 2-3 months.
- Final presentation: ~15 minutes, summarizing the entire project.
Positive results are not necessary for a good grade. We evaluate methodology, ideas, initiative, and presentation quality.
Presentation guidelines
- DISCO presentation template (PowerPoint) (latex presentations are also possible).
- Target 14-15 minutes (not more than 16). Practice to stay within this window.
- After your talk, there will be a Q&A of 15-30 minutes. Expect at least four people in the audience (including me and Prof. Wattenhofer).
- I will always do at least one mock presentation with you before the real one. You should treat this Mock presentation as the final one, come prepared.
- Follow the presentation and report guidelines.
Best practices
- Back up your results. Save experiment outputs (JSON, CSV, etc.) and push them to GitLab. Lost results mean rerunning expensive experiments.
- Repeat experiments to establish uncertainty. Always report variance or confidence intervals.
- Log everything. Use Weights & Biases or similar. It is better to log something and not use it than to have to rerun an experiment because you forgot to track a metric.
- Create a figure notebook. Maintain a Python notebook that regenerates all tables and figures from saved data. This is required at the end of the project.
- Start writing early. You cannot write the full report from day one, but sections like the data description or related work can be drafted early. See the paper writing guide for more.
Repositories
Your project will use up to three repositories, each with a distinct purpose:
- ETH GitLab: the group’s internal archive. Everything related to your project goes here: thesis/report PDF, presentation slides, and all code. Think of it as the ETH arXiv for the group.
- Overleaf / LaTeX backup: source code for your paper or thesis. Linked to the student project template via GitHub.
- Public GitHub (optional): if we publish a paper, we will create a clean, minimal public repository on the DISCO GitHub account for maximum visibility.
Finishing up
Repository
Push to your GitLab repository:
- The latest version of your code.
- The presentation slides and report as PDFs.
This must be ready by the day of your presentation.
Submission
The requirements below are those of our group. It is your responsibility to check for any additional requirements from your department or study program. Double check the D-INFK official guidelines or the D-ITET official guidelines.
- Generate a PDF of your report. Ensure the first page shows the correct project type (e.g., “Bachelor’s Thesis”, “Master’s Thesis”, “Semester proect”, “Practical work”, etc.).
- Fill in and sign the declaration of originality. The title must match exactly.
- Email both files to:
- Me (your supervisor)
- Prof. Wattenhofer (wattenhofer@ethz.ch)
- The assistant (beatfu@ethz.ch)
- For D-INFK students: the studies office (studiensekretariat@inf.ethz.ch).
- Before doing so, ask me if the project should be confidential or not (in which case it should be mentioned in the submission mail). Typically, we keep the thesis confidential if we submit a paper.
Additional resources
- A Practical Guide to Writing your First Paper(s): structure, writing heuristics, figures, tables, and more.
- A Practical Guide to Format Your References: BibTeX conventions, citation keys, and entry templates.