feat!: restructure erstie guide, expand

Expanded the erstie guide massively (added guide for each semester),
restructured to new URLs, added summaries details
This commit is contained in:
2026-08-17 11:42:25 +02:00
parent 9b6af4e8cb
commit 27560cd448
23 changed files with 208 additions and 25 deletions
+28
View File
@@ -0,0 +1,28 @@
# Buildings
Below you can find some information on the most important buildings. They are also shown to you at Erstie-Tag
## HG (Hauptgebäude)
HG is one of the most complicated buildings in terms of layout.
When looking towards Rämistrasse (where the main entrance is located),
to your left are all rooms from X1 (excluding X5 and X7) to X30, where X is the letter for the current floor.
On your right all rooms from X30, as well as X5 and X7. This is the south side, where most first semester courses are taught
## CAB
Important locations:
- VIS
- CS library
- Many exercise classes
- VSETH
## ML
This is the (fairly ugly) building right opposite HG along Rämistrasse.
ML D28 is the lecture in which for example EProg are taught.
## ETA
This building can be found by walking along the USZ (Unispital Zürich) up the road perpendicular to Rämistrasse, turning right at the first road, then up the stairs on the left.
There you will reach the ETZ building, to which ETA is connected.
ETA pretty much only houses the Paul-Scherrer-Hörsal, ETA F5, in which Discrete Maths takes place.
You find it by walking along the corridor and turning left at the first opportunity through the doors.
+72
View File
@@ -0,0 +1,72 @@
# Exam Preparation, Exams, Grading
Each course at ETH works slightly differently in this regard. Some courses offer a grade bonus for completing assignments during the semester,
while others don't. Others still have parts of the grade determined by project work or similar, while there is one course in particular that has exam-like optional quizzes twice
in the semester, which can be 10% of your final grade, each, if they improve your grade.
The most important platform is VIS Community Solutions (typically referred to as ComSol), the online platform for old exams, summaries and Cheat Sheets,
available at https://exams.vis.ethz.ch
## Bonus
During the semester, you hand in assignments, solve quizzes or do coding tasks to get a score. The graded assignments are a subset of the weekly (or bi-weekly)
assignments in the course (typically a *strict* subset).
For those assignments it is important that you *absolutely do NOT* collaborate with other people, as this is viewed the same as cheating at exams by ETH,
of course unless explicitly stated otherwise, as it should be the case in Algorithms and Data structures. Giving someone a hint though *could possibly* be considered acceptable.
Grade bonuses typically are either up to 0.25 or 0.5 grades, often linearly interpolated between 0 and the maximum, depending on the achieved score during semester.
All first semester courses work this way.
I highly recommend that you do these assignments not just for the bonus, but to get feedback from your TA on your solutions.
It also forces you to do the exercises, which helps you prepare for the exams.
## Exam Preparation
Studying for the exams can be a daunting task, but it is not that bad, if you plan properly.
The most important tip I can give you here is to also factor in a day off each week, because you will likely not be able to keep going at eight or more hours a day, seven days a week
for too long. Thus, factor in a slower day, or completely ETH-free day during the Lernphase.
It is thus important that during the semester you really try to solve the exercises on your own, completely without the help of AI.
As tempting as it may seem to use AI for the bonus, don't. Not only won't you learn much from it, it's also illegal.
Even using it for sanity checks is not strictly okay and should thus be avoided.
Using AI during the Lernphase to get different explanations for concepts on the contrary *may* be a better idea, but make sure to *always* double check.
Also see the [page on AI here](/guide/pretendintelligence).
### Summaries, Cheat Sheets
In the first semester in both subjects in which you can bring a summary, you need to be the author and in Discrete Maths, it even needs to be handwritten.
Thus, I recommend that during the semester you write your Cheat Sheet as you go along.
I would *not* recommend risking it by using a Cheat Sheet from ComSol, you can however take them as inspiration or adapt one,
if people have shared the LaTeX source files in case of Linear Algebra in the first Semester.
All my summaries that are on ComSol (apart from the one for DDCA) have the source code available [here](https://github.com/janishutz/eth-summaries)
### Old Exams
While studying with summaries is good to get an understanding of the topic, you should also practice using old exams, to familiarize yourself with the mode of exams
and to get a feeling for the difficulty of the exams.
It is also great practice, as you have more topic-agnostic tasks in many cases here.
Also make sure to occasionally solve one with a timer to experience time pressure, as that is also a major factor in many of the exams.
However, first solve at least one older exam without the time pressure, making sure you understand what you are doing, then add the time constraints.
Don't put off solving one for too long, as exams can very much expose weaknesses rather brutally, so be prepared to not do well in your first exam.
It is of utmost importance to consider that normal, don't be put off by it (this happens to a large part of students at ETH), take the learnings, update your Cheat Sheets
or your notes, maybe go back to the exercises from the semester, and solve these exercises again that you struggled with.
On ComSol, many people put in a lot of effort to properly explain how they got to a given solution, many of which ended up being (or are currently) TAs in the course,
so take their advice and see how that could apply to your understanding.
## Exams
ETH exams typically take place on Hönggerberg (in the HIL building) and in the ONA building in Oerlikon.
Make sure to arrive especially early for the first exams in each of these locations to account for having to search for the rooms,
or trains or buses not running for some reason.
While it is possible to get into an exam after it has already started, this won't help your cause and if somebody has already left, you won't be let in anymore,
so being there at least one train rotation earlier is a good idea.
Make sure to bring some food (that doesn't make much sound!), water and enough pens to the exams and don't forget your ***LEGI*** and Cheat Sheets, where you are allowed to bring them.
::: details Note on the HIL building
HIL can be a bit confusing. The HIL F41 and G41 rooms are best accessed through the main entrance,
which is the many doors to the right when walking from the bus stop into the atrium of HIL.
:::
+59
View File
@@ -0,0 +1,59 @@
---
title: Erstie Guide
---
# Welcome to ETH!
::: warning DISCLAIMER
**This website is *NOT* affiliated with or endorsed by ETH Zurich**
:::
## Getting Started
Arriving at ETH can be a lot to take in within a short amount of time.
If you feel overwhelmed, don't stress it, many, if not most, people feel that way.
To help you getting started at ETH more quickly, this website provides you with an overview of the things you can expect,
as well as bringing together resources for you in one place.
## Material Access, Communication, etc
Not all ETH courses use the same platforms for communication, material access, etc.
All course materials are typically provided either via [Moodle](https://moodle-app2.let.ethz.ch) or the course's website.
Hand-In for tasks in many cases is handled via Moodle, some courses use the [D-INFK GitLab](https://gitlab.inf.ethz.ch),
some courses taught by D-MATH use [SAM-UP](https://sam-up.math.ethz.ch) (Note that to access this platform, you need to either be at ETH physically (connected to the WiFi)
or connected via VPN) and others use different tools still (if they do, they will tell you).
Some courses use clicker questions, to access those, you can use the [EduApp](https://eduapp.ethz.ch).
For the VPN, WiFi, Email, GitLab, Moodle, CodeExpert and EduApp, there is a usage guide [here](./infra)
Links to the course materials can always also be found on [MyStudies](http://mystudies.ethz.ch).
## Legi
The Legi is your ETH card that you should always have with you. It gives you a discount in all the ETH and UZH Mensas, access to the libraries and more.
Remember that it is only ever valid for a single semester, so head to one of the validation terminals, which you can find in many places,
such as outside Zweistein, above Polymensa, behind Einstein.
This validation only works after you have signed up for the next semester via MyStudies.
## MyStudies
MyStudies is ETH's platform to manage your studies.
This includes signing up for the semester, courses, exams and more and can be accessed [here](https://www.lehrbetrieb.ethz.ch/myStudies/login.view).
## Bachelor's Programme Structure
Most students need between six and seven semesters to finish their bachelor's degree, followed by a further four to five semesters for the master's degree.
For more information on the studies and things to keep in mind, see [here](./semester-planning).
All first year courses (and most later courses, with some exceptions) follow a structure of having:
- Some lectures (denoted `V` for "Vorlesung" in VVZ, EduApp and MyStudies)
- Some exercise classes (denoted `U` for "Übungsstunde" in VVZ, EduApp and MyStudies)
- (Occasionally) some kind of project work (denoted `A` for "Arbeit")
- (Rarely, mostly GESS and Seminar) Group classes (denoted `G` for "Gruppenstunde", similar to High school classes)
In the first semester, you have one course with an `A`, which is Algorithms and Datastructures (short A&D) where the CodeExpert tasks are the project work.
This of course means that the effort needed to put into CodeExpert can be quite a bit more than the normal assignments.
+105
View File
@@ -0,0 +1,105 @@
# Git & GitLab
::: details {open}
If you are already familiar with this, all you need to know is that the D-INFK GitLab can be found at https://gitlab.inf.ethz.ch
:::
Git is a Version Control System, short VCS. It enables you to *version* your code, allowing you to effectively, safely and efficiently work on software together with other people.
While EProg teaches you how to *use* Git... well... sort of, this guide is designed to give you a much deeper understanding, while also covering what is taught in EProg.
::: tip Why learning Git is so important
Git is the predominant VCS system in the industry and has been for a very long time.
If used properly, it can save you hours of headaches, preventing loss of progress.
But, to get these benefits, you need to know how to use it. And that takes time, but it is well worth investing the time to learn it!
:::
## The basics (Terms, etc)
First a few terms to remember:
- Repository (= Repo): Can be thought of as a folder, with some metadata.
- Commit: The act of making changes "permanent" in a git repo. Permanent in quotes, because this can be undone
- Remote: A Remote is a computer different from the local one (typically referred to as server) that has a copy of the repo and is connected to the current repo
- Stage: The act of preparing changes for commit. This is used to decide which changes to commit together or not to commit yet
- Diff: Short for difference, a comparison of two versions of a file
- Pull: Pulls commits synced to the remote into the current tree
- Push: Pushes local commits to the remote
- Rebase: If you have committed changes to the repo locally and somebody in the mean time has pushed changes to the remote, your own copy needs to be *rebased* on that version
to make sure that there are no conflicts. If there are, you need to resolve them using a diff viewer / merge tool.
- Conflicts: Conflicts happen if changes to the same line in the same file were made on the remote and locally before the local copy was synchronized.
- Branch: If you envision the commit history to be a tree (which it in fact is), then you can create a new branch to make for example a larger, breaking change
that can't yet be added to `main` due to possibly needing to fix issues in `main`, etc.
- Merge: The act of combining two development histories, typically of two branches
- Dirty tree: If there are uncommitted changes in your file tree.
- Stash: A stack on which you can store changes that are not ready to be committed, for example to pull in changes without having to a rebase straight away,
or if you are working on something, then notice a different issue, but your changes are not ready to commit.
You download a new repo (called cloning) using `git clone <url to repo>`, or use your IDE (see below)
## The art of Commits
Many people, even EProg TAs (trust me, I asked one) would tell you that what you write as your *commit message* doesn't matter much.
They'd be right that for EProg, it doesn't matter much, but if you work in a larger project yourself, or worse still, together with other people,
writing proper commit messages is VERY important.
I myself have been doing it wrong for years and still am not doing it right in my summaries repo (because there it doesn't matter as much).
In early 2026 I have finally learned how to write proper commit messages,
according to the [Conventional Commit V1.0.0 Specification](https://www.conventionalcommits.org/en/v1.0.0/#pecification).
You don't need to take it to that extreme straight away, but I would recommend following the following format:
- `feat(<component>): <description>` (or `feat: <description>` if you can't find a simple component name) to describe new features.
- `fix(<component>): <description>` for a bug fix (again also `fix: <description>` possible)
- Append a `!` to descriptor if there are breaking changes (like `feat!(cli args): argument x renamed to y`)
- Use `docs(<component>): <description>` for updating docs
- Use `chore(<component>): <description>` for updating things like CI/CD, etc
This of course means that you have to commit regularly, which is a good practice, as it allows you to more easily roll back changes if something goes wrong.
Furthermore, the description mentioned everywhere should be a brief description of your changes,
then a more detailed description in the commit description.
## Syncing changes (push, pull, etc)
One of the biggest sins in git is to use `git push --force`, i.e. a Force Push.
This IRREVERSIBLY deletes any commits made to the remote and makes the upstream an exact copy of your local repository.
Other than that, remember to always pull changes in before you start work to not accidentally get a merge conflict on rebase.
For EProg that is unlikely to ever happen, but you aren't just learning git for EProg, you will be using git more in the future.
## Branches
Git branches are very often underused, even though they are very useful.
Ideally, when developing software, you only ever touch the main branch when you have a *complete* implementation of a new feature.
This means that the main branch *should* always compile, work (mostly) as expected and there won't be any unfinished features.
It further means that if there is an issue with the existing version of some feature, you can fix that easily by going back to the main branch,
creating a new branch from it, fixing the feature and merging it back.
This is also where *pull requests* come in. This is a GitHub / GitLab / Gitea / Forejo / etc feature that allows other people to merge changes of their *forks*
(modifiable copies of your repo) into your repo, called the upstream, without you granting them write access to your repository.
You have the chance to review their changes, comment on them and finally merge them into a branch.
You switch branches typically using `git switch` or `git checkout`.
## The Git CLI
The git CLI is very nice to use and its docs are great, so I only point you to `man git`.
## Git GUIs
Most IDEs (Integrated Development Environments) have a built in Git user interface. It typically has a tree-like icons with dots.
You can also use them to do the git commands using an inefficient device, commonly referred to as a mouse.
They often also allow you to `clone` repos.
Alternatively, you can use a Git TUI such as `lazygit`.
I would however advice against *only* using git GUIs, as typing a short git command is often quicker than reaching for a mouse.
Of course, if you need to resolve merge conflicts, go to your graphical mergetool.
Also note that NeoVim, etc can be used as a diff viewer and mergetool.
## Authentication
If you use an IDE, chances are that it has its own authentication manager.
If you use the CLI, you can use `git-credential-manager` if you want to use HTTPS authentication,
or you can create an SSH key using `ssh-keygen -f ~/.ssh/gitlab`, then copy the public key to your GitLab account's SSH key settings panel.
This is much more secure.
+52
View File
@@ -0,0 +1,52 @@
# Infrastructure
ETH's infrastructure has some quirks that you should be aware of.
For example, you have two different passwords, one for network stuff, called the Radius Password,
and one for everything else, called the Active Directory (AD), or LDAP password (such as Email, Moodle, MyStudies, etc).
Your ETH username is also sometimes referred to as your NETHZ username.
Since `git` and GitLab are this important to understand and get used to, there is a [separate page about them](/guide/infra/git)
## Email
You can access emails online at https://outlook.office.com (yes, I don't like it either), your email address is `<nethz>@ethz.ch`
and you log in using the normal application (Active Directory) password.
## WiFi
ETH has a number of WiFi networks available, namely `eth`, `eth5` and `eduroam`.
You should connect to either `eth5` or preferrably `eduroam` using the following credentials:
- Username: `<nethz>@student-net.ethz.ch`
- Password: Radius Password (note that Radius Servers are authentication servers for WiFi that allow more granular WiFi access, thus the name)
If on Linux you are using NetworkManager via its CLI, TUI or applet directly, you should use WPA/WPA2 Enterprise for Security field,
tick "No CA certificate is required" and for Inner authentication, set it to `MSCHAPv2 (no EAP)`.
## VPN
The official guide for the VPN is useful for MacOS and Winslop: https://unlimited.ethz.ch/en/help/network/vpn
For Linux, you may use [my script](https://git.janishutz.com/janishutz/dotfiles/src/branch/main/scripts/ethz-vpn). For it to work, you need to have `openconnect` installed
For the credentials you need both your radius password, as well as a two-factor code from your authenticator.
The username is the same as for the WiFi.
## EduApp
The EduApp is a PWA (Progressive Web App) to see your schedule, access clicker questions, a map of the campus and more.
You can access it at https://eduapp.ethz.ch and you can log in using your AD password.
If you want to have it as a PWA on your phone, you can add it to your phone's home screen by navigating to the EduApp in the browser, hitting share and something along the lines of
"Add to Home Screen", "Create Webapp" or similar.
## CodeExpert
CodeExpert is ETH's all-in-one browser-based coding platform. You log into it using Switch EduID, which only works once you have linked it to your ETH account.
You can do that by going to https://eduid.ch, logging in, then heading to Organisations and hitting "Add an organisational identity", then selecting ETH and logging in using
`AAI`, the single-signon service of ETH using your LDAP/AD password.
You can then access CodeExpert via https://expert.ethz.ch. Note that you won't have access to any courses yet, each course that uses CodeExpert will provide you with an
access link to join the course. Be sure to do that as soon as possible for each course, as there are two first year courses that use CodeExpert for the bonus.
<small>Fun fact, in the code expert docs you remove the git ref slug from the URLs, a `418 - I'm not a Teapot` response status code is returned!</small>
+36
View File
@@ -0,0 +1,36 @@
# Things to consider / try
## LaTeX / Typst
While handing in hand-written notes is accepted in almost all cases, it is still a good idea to hand things in that are typeset using LaTeX or Typst.
For LaTeX, you may use my LaTeX helpers, found at https://github.com/janishutz/latex
## Linux
Development is *much* easier on Linux compared to Windows in about 95% of cases. There even are some courses where you absolutely *need* to use Linux (though you can use WSL also).
Installing new dev tools is as easy as running a single command (such as `pacman -S <pkgname>` or `apt install <pkgname>`), or updating a config file (in case of Nix),
no need to click "Next" a lot of times, it all *just works*.
Docker is also a first-class citizen, Virtual Machines are much faster, etc.
## Tiling Window Managers
Using a mouse is *objectively* slow if you use things on a regular basis.
Always fighting to put windows into the correct position using a mouse can get annoying and time consuming if you use them all day, every day.
This is where tiling window managers come into play. They automatically split your screen and you can navigate between windows entirely using a keyboard.
Good examples include `bspwm`, `i3` (an `sway` for Wayland), `Hyprland` (albeit that isn't *necessarily* a full-blown tiling WM), `dwm` and more.
## NeoVim (or Emacs)
Using a good text editor will massively improve your developer experience and speed.
Thus, choosing a fast editor is important. VSCode, JetBrains IDEs or Sublime Text are the "easy", slow and boring options, which are called "user friendly" options.
User friendly in general refers to applications that are easily approachable, by providing a legible, good looking graphical interface, while sacrificing usability,
speed and customizability, thus meaning that the user isn't *really* in control of the software.
User focused software on the contrary is meant to be easily and extensively configurable and (typically) highly extensible.
This means that the application is minimal by design, only providing features that the greatest portion of users will use.
In the case of NeoVim, this means that things like AI completion are not included at all and need to be added using plugins.
Language Servers on the other hand can be added natively because it is an entirely optional feature, as is syntax highlighting,
which most, if not all developers use.
If you are to give NeoVim (or Vim, or Emacs or another terminal editor) a try, just be aware that they have a *very* steep learning curve compared to things like VSCode.
However, if you push through, you will gain superpowers, and your IDE won't use half a gigabyte or more of RAM just sitting there.
+50
View File
@@ -0,0 +1,50 @@
# Use of Artificial Intelligence
::: details My bias in this topic {open}
Note that I am a biased in this topic, I very much like my freedom and I advocate for free and open source software and very much detest anything from Big Tech companies,
especially the current RAM crisis. I also don't use any Pretend Intelligence ***at all***
This may also sound a bit like I am a parent telling you what to do - I am not. It's just that I have seen quite a few people fail that did some of these exact things.
:::
***In general, you should avoid using Pretend Intelligence (PI from now on) at all costs.
However, I cannot deny its usefulness in having it reframe problems you find difficult to grasp.***
You are attending ETH to understand complex topics. PI is only going to get you *this far*.
As topics get harder, which they fairly rapidly will, PI is going to be able to solve them less and less.
## What you *should* not do with AI
- Solving exercises with PI (you won't learn anything and nobody forces you to do the exercises, so please (!!) solve them yourself, or not at all)
These points below are what *I personally* think are good tips for PI usage
- Letting it correct exercises or old exams that you have solutions to without first looking at the solutions yourself
- Letting it correct old exams to which detailed, human (often TA) written solutions exist on ComSol
Remember that this is ETH, not high school, so nobody will complain if you solved exercises using PI (apart from Bonus).
High school is typically easily passable without much studying, when compared to ETH.
This is not meant to scare you, if you are good at STEM subjects, are willing to invest time and are aware that it is likely that you will have to,
you can pass ETH, but for that you need to work on the exercises yourself!
::: details Notes on the above statement
Of course, you may be one of the very rare exceptions that can pass ETH without much effort.
I can personally vouch for this statement, I passed high school without that much time investment, but now have to invest a LOT of time to pass here.
:::
## What you must not do with AI
These are things that can get you expelled from ETH (and are illegal)
- Handing in bonus assignments that were fully (or partially) PI generated
<small>
(violates the [ETH Disciplinary Code](https://ethz.ch/content/dam/ethz/main/eth-zurich/organisation/rechtssammlung/361.1en.pdf) in (almost) every case,
except otherwise stated (Numerical Methods for Computer Science (NumCS) being the notable exception in many cases as of HS2025)).
</small>
- Trying to use Pretend Intelligence during the exams
<small>
(if you do, it most likely also violates the disciplinary code and if you are caught, you may be expelled. They patrol the exams, especially in early semesters)
</small>
## What is okay to do with AI
- Any non-performance assessment related assignments that you still don't understand after looking at the solutions
- Letting it correct your solutions to **non-bonus** assignments
- Letting it explain a topic you don't understand, just be sure to check that the definitions line up
- ...
+34
View File
@@ -0,0 +1,34 @@
# Quick Reference / Useful links
Find below a list of important links and other short info to get started at ETH more quickly
## My Links + Discord
- My Summaries: https://eth.janishutz.com/summaries
- Contact Email (for ETH-related things): school@janishutz.com
- My profile on ComSol: https://exams.vis.ethz.ch/user/jahutz
- Discord: @janishutz
- ETH D-INFK Discord: https://discord.com/invite/eth-dinfk
## VIS (Verein der Informatik Studierenden)
<!-- Links are automatically anchored -->
- Website: https://vis.ethz.ch
- VIS Erstie Guide: https://vis.ethz.ch/en/current/info-first-year-students/
- Exam Collection (ComSol): https://exams.vis.ethz.ch
- Grade Statistics: https://vis.ethz.ch/en/services/gradestatistics/
- VIS Events: https://vis.ethz.ch/en/events/
## ETH & Department
- VVZ (Vorlesunsverzeichnis): https://vvz.ethz.ch
- Department Website: https://inf.ethz.ch
- Department GitLab: https://gitlab.inf.ethz.ch
- Moodle: https://moodle-app2.let.ethz.ch
- Mail: Via [Outlook online](https://outlook.office.com)
### MyStudies
MyStudies is the Platform where you register for courses, exams and more.
You can find it at http://mystudies.ethz.ch, which redirects you to https://www.lehrbetrieb.ethz.ch/myStudies/login.view
Course registration typically opens early December for the Spring Semester and early July for the Autumn Semester.
Be sure to be quick if you do anything outside the normal courses, as some courses have limited capacities!
+4
View File
@@ -0,0 +1,4 @@
# Masters
::: info
This section will be expanded once I reached the masters myself
:::
+31
View File
@@ -0,0 +1,31 @@
# Semester Planning
Whenever the course registration opens, make sure that you know what you want to do next semester,
and ideally what you want to do the next few semesters.
For planning, [StudyPlanner](https://www.studyplanner.ch/) may come in very handy, as it helps you keep track of what you still need to do and what you already have done.
For picking courses, you may want to read reviews of courses, which you can do on [CourseReview](https://coursereview.ch).
## Requirements for Bachelor
The CS Bachelor can be a bit confusing in terms of its requirements. I explained it as I would have hoped it had been to me when I started in HS24:
- **Semester 1 and 2**: You need to pass both, each *on average*. You either get all 28 credits, or none at all for each of the semesters.
You have two attempts for each semester.
The average is the raw average (i.e. 3.99 fails) and taken *after* rounding for each of the courses.
- **Semester 3 and onwards**: You need to pass each exam and they award you the credits individually. This means that you can take just three of the typical four courses
in semester 3.
- **Basic Courses**: The basic courses are the eight mandatory courses in semester three and four. You need to pass seven out of them within two attempts each.
If you failed one, you can *compensate it* with a *core course*, but only if you have *attended and failed* said course.
Failing two or more basic courses twice and you are out of the programme and blocked from this programme.
- **Core subjects**: These courses are typically taken in Semester 5 and 6, and you need to pass *at least* four of them.
If you failed a basic course twice (or once and decided not to retake it), you have to pass *at least* five of them.
- **Ergänzung**: This is a course from a different department, and it needs to be worth at least 5 credits. You can pick any from the approved ones on VVZ.
Failing one twice isn't a big deal, just pick another one.
- **GESS**: GESS courses are things like history, philosophy and more and you need 6 credits in this category (any excess won't contribute to your total).
Three of these credits can be obtained through language courses.
- **Bachelor's Thesis**: Should be self-explanatory, is worth ten credits.
- **Seminar**: You need to participate in at least one seminar, worth two credits.
- **Electives**: These are extra subjects you can take (and you will most likely have to take a couple of them) to fill in the remaining credits.
Note that for courses that have a bonus, that bonus is *generally* added *before* rounding.
+100
View File
@@ -0,0 +1,100 @@
# Semester 1
Chances are that if you are reading this, you are starting with ETH, so here a few important remarks:
- Make sure to keep up with the course content. Catching up after the semester ended is hard
- In D-INFK, for most people, the lectures are not very helpful, however the exercise sessions are
- Make sure to switch exercise classes if you don't like a TA's teaching style. You don't have to change the registration on MyStudies, you can go to any class you like.
- Don't hesitate to ask questions in exercise classes
::: warning DISCLAIMER
Semester 1 is *not* indicative of the workload in later semesters. It is (by far) the highest workload semester.
:::
## Discrete Maths (DM)
<small>Managed via Moodle</small>
This is the course most people fear in this programme, for a reason. For the longest time, it has had pass rates of below 50% and as far as I am aware,
this has not improved with the new professor.
Fear not however, as this exam is part of an exam block and you will pass or fail the entire block, so if you are good enough in the other courses,
the grade of DM doesn't matter too much if your goal is just to pass.
The reason that this course has this poor of a pass rate is that most students had not previously done proofs much, if at all, and if they have,
most likely nowhere near as formal as is required in this subject.
Thus, be aware that this course will, if you are trying to pass it and have not done much proving (and it doesn't come naturally to you),
most probably be the highest effort course of this semester.
Thus, at least factor in a whole day outside the lectures and exercise classes per week for this course if you fall into that category.
Make sure to follow the course in any case!
The exam is very time constrained for probably about 90% of the people and is almost entirely proofs.
To prepare for this, solve as many old exams as you can, but especially the more recent ones
(maybe apart from FS25, that one had a 0% pass rate because it was the last one from the old professor)
::: details Remark
I had to take that one due to being sick at the winter exam, so you can see what I mean with the point that you don't need to pass it to pass the first semester
:::
## Linear Algebra (LA)
<small>HS 26 link: https://ti.inf.ethz.ch/ew/courses/LA26/index.html</small>
This probably is the most *straight forward* course in this semester, which doesn't mean it's necessarily the easiest (though it arguably is due to the predictability).
Its lectures are good while Prof. Gärtner teaches and not all too great when Prof. Weissmantel does (may have improved since HS24, he teaches the second half of the course).
This is why it's important to find a good TA.
Furthermore, it's important that if you *think* you are good at LA (because you have covered it in Schwerpunktfach at High School), don't go into this course overconfident.
It is much more proof-oriented than you are probably used to, so don't just go and skip the first three weeks, or you may find yourself in major trouble later on.
The SpF will of course help you in this course, but you won't have covered nowhere near all topics of this lecture.
## Introduction to Programming (EProg)
<small>HS26 link: https://lec.inf.ethz.ch/infk/eprog/2026/</small>
EProg is a very interesting course in that the content isn't necessarily hard, but the written exams can even catch out proficient Java developers
due to them asking edge cases and the like.
::: details If you have **(fairly) extensive programming experience** {open}
especially in Java or another object oriented programming language,
you may *possibly* safely skip most of the lectures (but not the first ones, as they teach EBNF, which you probably haven't seen),
if you at least do the bonus exercises each week.
Then, during the exam preparation phase, solve a few of the theoretical exams and coding exams such that you know what kind of questions they may ask.
:::
::: details If you have **little to no programming experience** {open}
then it is important that you follow this course along closely, as you will be programming quite a bit in Java not only here, but also in A&D.
While this programme is definitely manageable without programming knowledge, you need to be aware that it will need more effort, because
for people with previous experience, EProg is a fairly low effort subjects up to the exam preparation phase.
That should not deter you, I am sure you will manage just fine, just as a heads-up and to remind you that the exercise sessions exist,
which are likely to be very quite empty (because a large portion of people already have coding knowledge, so will skip these classes),
so the TAs can help you much more with your own questions.
:::
For the bonus, there (typically) are two timed bonus exercises, where you have two hours on a specific day to solve the exercises.
In those weeks, I would recommend that you solve, or at least have a look at, the normal exercises.
All hand-in happens via GitLab, and you should (ideally) an SSH key for the Git CLI, as that is more secure.
See the [git guide](/guide/infra/git) for more details on that
The exam is split into written and programming parts, both happening right after each other.
For the programming part, you will have access to IntelliJ, a Java IDE by Jetbrains.
<small>Consider yourself lucky, because my year was the last one to use Eclipse...</small>
## Algorithms and Data structures (A&D)
<small>Managed via Moodle</small>
A&D has partner work with randomly assigned partners from your exercise session. Make sure to coordinate a meeting during the session.
In this partner work, you solve the exercise sheets, and you also correct and give feedback to other groups,
which is known as "Peer Grading".
These assignments, as well as the peer grading and the mini quizzes all contribute to bonus.
Then, there are the programming tasks via Code Expert.
See the [infra guide](/guide/infra) for more details on how it works and how to log in.
In these tasks, you are asked to implement algorithms seen in the lectures to solve problems, all within given time complexity constraints.
The provided tests are excellent, and you can also write your own, if you like.
The exam works similarly, you have one part written, the other part coding.
+36
View File
@@ -0,0 +1,36 @@
# Semester 2
Semester 2 is in my opinion (and the one of many people) the easiest semester in the entire Bachelor's programme for Computer Science.
This is why I would highly recommend doing at least a GESS subject in this semester already.
It may also be advisable to pick another course, as you can always drop it if you feel overworked.
Below some notes on two subjects that are a bit out of the ordinary in this semester.
The other two courses, Algorithms and Probability (A&W), as well as Analysis I, are well taught, well organized courses,
pretty much as you would expect. A&W retains the CodeExpert plus written tasks model with Peer-Grading, but now you are on your own.
## Parallel Programming
This course course is an example of a poorly taught course at ETH. The exercises during the semester, while interesting, aren't really worth doing
(in my opinion, as they don't really help much with either the exam or understanding the topics)
and the entire course can be studied using a summary in just a few full days of work.
This is also the reason why taking an extra course with a semester end exam is feasible, as there is barely any work that needs to go into this course for most people.
Furthermore, the slides, especially by Professor Torsten Höfler, are utterly unusable.
I had used [Azurios' summary](https://azurios.gitlab.io/page/summaries/) for studying PProg and passed easily, without ever reading Prof. Höfler's slides.
Reading a summary obviously won't suffice, you should also practice using old exams, as the content and difficulty has stayed fairly consistent over the last few years.
They provide the questions in both German and English and you may also answer in either language.
**However**: Be sure to still follow this course along to see if you understand things.
## DDCA
DDCA is a course with a professor that is quite famous in the programme, due to his energetic lecturing style.
Furthermore, the entire course is live-streamed on YouTube.
The course consists of lectures and mandatory (with *sort of* attendance (they don't check that you were there, but you have to be there to get your lab results graded)) labs,
where you work with a Field Programmable Gate Array (FPGA) to develop *small parts* of a full MIPS processor using the Hardware Design Language `verilog`.
They are quite fun, typically take about 2 hours and account for 30% of the entire course's grade.
Thus, be sure to always do the labs, as passing this course is quite easy if you get (close to) the full grade in the labs.
For the exam, make sure to start solving old exams early, as the exam has some interesting exercise types which you need to learn.
The optional homework also has some of these tasks and they also upload a video explaining how to do many of these tasks.
+64
View File
@@ -0,0 +1,64 @@
# Semester 3
Semester 3 is an interesting semester in terms of the courses, ranging from well taught (Analysis II and TI) to atrocious (NumCS).
The same applies also to Semester 4, but the courses there are easier for many people.
## Numerical Methods for Computer Science (NumCS)
This is about as bad of a course as courses ever really get.
::: details The rant about the course {closed}
The course was entirely reworked for HS2025, where I took it, switching from C++ and Eiger to Python with NumPy and SciPy,
as well as changing the course structure and curriculum pretty significantly. The former of which really is an improvement,
as most data science happens in Python using NumPy. However, since the professor is from the Maths department teaching a CS course,
you can kinda see where this is going.
While the content is interesting, the poor teaching really made this course a chore.
Due to this, many people have stopped attending the lectures and simply went to the exercise classes, where TAs were working hard to explain the content in a more approachable way.
The weekly CodeExpert exercises also were a massive chore, with it not rarely taking longer to understand what the task was than implementing it,
due to the very poor way in which things were phrased. This is one of the few cases where using AI is absolutely essential, as it can save you so much time
cutting out the paraphrasing of the assignment.
The script also either suffers from poor language or from being "sloppified", since he used Google Gemini to correct the grammar.
This more often that not lead to swallowed equations, turning the whole script into a big mess.
:::
Thus, to make your life as easy as possible in this course:
- Use AI to rewrite the assignment's description if you don't understand the task within a few minutes (DON'T let it solve the task tho!)
- Skip the lectures after the first week if you still have to go through everything again to understand it
- Absolutely *always* go to an exercise class. Switch TAs quickly if your initial one doesn't do a good enough job for you
- Know that the exam was very easy for us (there is a chapter on the exam in my summary/script)
Finally, I want to mention here that I together with a friend have written an entirely new, much shorter script for the course.
It covers pretty much everything that is needed to pass this course, combining the lecture notes, script and notes from our TA (Nils Müller) into a single
script. It is available on ComSol, or on the [Summaries Repo on GitHub](https://github.com/janishutz/eth-summaries/blob/main/semester3/numcs/numcs-summary.pdf).
## Analysis II
This course is pretty much your box-standard, well-taught maths course at ETH.
Not much else is to be said other than do your practice for the exam and you should be fine.
## Systems Programming and Computer Architecture (SPCA)
This course, while not *technically* bad is very underwhelming. The topic frankly is too broad for just a seven credits one semester course,
which also doesn't help it much. Don't however be concerned that it would be very hard, it isn't.
Having a good understand of many of the concepts taught in DDCA certainly won't hurt in this course.
You will be learning to program in C, but not *really*. This is the primary problem with the course:
There is no incentive for you to do the exercises (which in fairness, are pretty cool to do), but so many great opportunities for making the course great were left on the table.
To pass this course, you don't need to solve any of the tasks really, though they certainly do help.
Simply practice writing C a bit and you're good pretty much.
This you can do by solving old exams, or doing your own little project (or doing some Advent of Code tasks in C).
## Theoretical Computer Science (TI)
By far the most unique course this semester, it is known for having a mid and endterm exam, which, if passed on average makes you pass the entire course.
Yes, you heard that right, if you pass these, you won't have to do the session exam!
TI is a lot about learning to do certain kinds of proofs in a certain way.
You learn that automatically by solving the exercises that you need to hand in weekly.
If you achieve more than 50% of the points over the sheets prior to each midterm, you are allowed to participate in them.
The exercise classes are also typically taught well, so the amount of effort required for this course is pretty low, apart from the weeks before each midterm.
To pass, solve a few old exams for each of the midterms and make sure to always hand in your exercise sheets!
+13
View File
@@ -0,0 +1,13 @@
# Semester 4
Semester 4 is typically considered the second easiest semester and I agree.
While FMFP can be a bit of a challenge initially, the exams are very predictable.
What you should *potentially* worry about more is DMDB, as it in my opinion is the worst course I have *EVER* had,
yes, even including NumCS
## Data Modelling and Databases (DMDB)
## Formal Methods and Functional Programming (FMFP)
## Computer Networks (CN)
## Probability and Statistics (W&S)
+4
View File
@@ -0,0 +1,4 @@
# Semester 5 and onwards
::: info
Will be expanded in the future, when I have completed this part of my studies
:::
+22
View File
@@ -0,0 +1,22 @@
# Student Life
## Food
On the ETH Zentrum Campus, there are *many* different restaurants and mensas to choose from.
Note that especially early in the semester, especially Polymensa is VERY crowded at 1200h, it may thus be advisable to leave some lectures early,
or to postpone lunch break to a later time.
Always be sure to have your Legi and money ready when queuing, especially at Polymensa to reduce wait times at the payment stations.
You have student discounts in all ETH and UZH mensas if you present your Legi.
Make sure to check where to eat to not crowd up the entrances using the Android or iOS ETH Mensa apps, which aggregate the menus of all the mensas of UZH and ETH.
The cheapest mensa historically has been Untere Mensa of UZH, which serves Asian food, but it tends to be very crowded.
Bringing your own food to warm also tends to be an equally large nuisance due to extensive queues in front of the microwaves.
Often the microwaves provided by VIS are less crowded.
## ASVZ
ASVZ is a sports association that offers affordable access to many kinds of sports and a gym.
More info [here](https://ethz.ch/en/campus/getting-to-know/discover/sport-and-leisure-asvz.html)
## Events
VIS regularly organizes events, you can find all of the current ones at https://vis.ethz.ch/en/events