diff --git a/guide/buildings.md b/guide/buildings.md index 6c4a48d..a2ba359 100644 --- a/guide/buildings.md +++ b/guide/buildings.md @@ -8,7 +8,7 @@ Below you can find some information on the most important buildings. They are al 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 +On your right all rooms from X30, as well as X5 and X7. This is the south side (towards UZH), where most first semester courses are taught ## CAB @@ -18,13 +18,14 @@ Important locations: - 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. +ML D28 is the lecture hall in which for example EProg is 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. +You can find it by walking along the corridor and turning left at the first opportunity through the doors. diff --git a/guide/exams.md b/guide/exams.md index a73e087..88da569 100644 --- a/guide/exams.md +++ b/guide/exams.md @@ -2,8 +2,8 @@ # 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. +while others don't. Others still have parts of the grade determined by project work or similar, while there is one course in particular (Formal Methods and Functional Programming) +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 @@ -21,11 +21,13 @@ 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. +Note that for courses that have a bonus, that bonus is *generally* added *before* rounding. + ## 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. +The most important tip I can give you here is to 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 each week 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. @@ -47,17 +49,22 @@ All my summaries that are on ComSol (apart from the one for DDCA) have the sourc ### Old Exams +::: info NOTE +Old exams are available on [VIS Community Soltions (ComSol)](https://exams.vis.ethz.ch) +::: + 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. +It is also great practice, as you have more topic-agnostic tasks there in many cases. +Further 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. +However, first solve at least one older exam (one from >5 years ago, as long as it is of similar format) 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 expose weaknesses rather brutally, so be prepared to not do well in your first old 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, +On ComSol, many people (of which quite a significant portion ended up being (or are currently) TAs in the course) put in a lot of effort to properly explain how they got to a given solution, so take their advice and see how that could apply to your understanding. @@ -70,6 +77,8 @@ 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. +**Good luck!** + ::: 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. diff --git a/guide/index.md b/guide/index.md index d7baafb..1cb1c18 100644 --- a/guide/index.md +++ b/guide/index.md @@ -36,7 +36,7 @@ Links to the course materials can always also be found on [MyStudies](http://mys ## 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, +Remember that it is only ever valid for a single semester, so head to one of the validation terminals at the start of the following semester, 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. diff --git a/guide/infra/git.md b/guide/infra/git.md index 730b106..a2195f0 100644 --- a/guide/infra/git.md +++ b/guide/infra/git.md @@ -2,6 +2,7 @@ ::: 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. @@ -21,7 +22,7 @@ First a few terms to remember: - 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 +- Diff: Short for difference, a comparison of two versions of a file (or multiple files) - 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 @@ -32,17 +33,17 @@ that can't yet be added to `main` due to possibly needing to fix issues in `main - 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. +or if you are working on something, then notice a different issue, but your changes are not ready to be commited. You download a new repo (called cloning) using `git clone `, 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, +They'd be right that for EProg it doesn't matter much, but if you work on 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). +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 and I am following a consistent style). 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). @@ -103,3 +104,11 @@ 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. + + +## Cloning +The act of `cloning` for `git` is downloading a repo for use with the `git`. +There are two primary means of cloning, either via HTTP(S) or SSH. Whenever possible, SSH should be used due to it being a lot more secure. +Set up authentication as mentioned above, then the clone URL is of the form `git@:/`, e.g. `git@github.com:janishutz/eth-summaries` + +For HTTP(S) cloning, it's simply the URL in the browser's address bar, e.g. `https://github.com/janishutz/eth-summaries` diff --git a/guide/infra/index.md b/guide/infra/index.md index 4b82281..5362652 100644 --- a/guide/infra/index.md +++ b/guide/infra/index.md @@ -1,7 +1,7 @@ # 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). +and one for everything else, called the Active Directory (AD), or LDAP password (for Email, Moodle, MyStudies, etc). Your ETH username is also sometimes referred to as your NETHZ username. @@ -9,7 +9,13 @@ Since `git` and GitLab are this important to understand and get used to, there i ## Email You can access emails online at https://outlook.office.com (yes, I don't like it either), your email address is `@ethz.ch` -and you log in using the normal application (Active Directory) password. +and you log in using the normal web application (Active Directory) password. + + +## Moodle +Moodle can be found at https://moodle-app2.let.ethz.ch. You log in using your AD/LDAP password via AAI. + +Take some time to familiarize yourself with Moodle if you have not previously used it. Also make sure to update your email notification preferences. ## WiFi @@ -23,16 +29,16 @@ tick "No CA certificate is required" and for Inner authentication, set it to `MS ## VPN -The official guide for the VPN is useful for MacOS and Winslop: https://unlimited.ethz.ch/en/help/network/vpn +The official guide for the VPN is (probably) 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. +For the credentials you need your radius password, as well as a two-factor code from your authenticator. +The username is the same as for the WiFi (see above) ## EduApp -The EduApp is a PWA (Progressive Web App) to see your schedule, access clicker questions, a map of the campus and more. +The EduApp is a PWA (Progressive Web App) where you can view 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. @@ -49,4 +55,4 @@ You can then access CodeExpert via https://expert.ethz.ch. Note that you won't h 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. -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! +Fun fact, if 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 diff --git a/guide/infra/things-to-try.md b/guide/infra/things-to-try.md index a0377f8..fb9c598 100644 --- a/guide/infra/things-to-try.md +++ b/guide/infra/things-to-try.md @@ -1,11 +1,11 @@ # 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 +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 +(because that way the TAs don't have to read your handwriting, which may or may not be ugly). 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). +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 or Docker as well). Installing new dev tools is as easy as running a single command (such as `pacman -S ` or `apt install `), 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. @@ -16,19 +16,19 @@ 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. +Good examples include `bspwm`, `i3` (and `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 friendly in general refers to applications (or operating sysyems) that are easily approachable, by providing a legible, good looking (optional) 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. +In the case of NeoVim, this means that things like AI completion are not included at all and need to be added using plugins (though why would you want that, anyway?). 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. diff --git a/guide/pretendintelligence.md b/guide/pretendintelligence.md index 6cd851c..0b88451 100644 --- a/guide/pretendintelligence.md +++ b/guide/pretendintelligence.md @@ -17,13 +17,13 @@ As topics get harder, which they fairly rapidly will, PI is going to be able to ## 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 +These points below are what *I personally* think are you should not use PI for - 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, +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 @@ -41,7 +41,7 @@ except otherwise stated (Numerical Methods for Computer Science (NumCS) being th - Trying to use Pretend Intelligence during the exams -(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) +(if you do, it violates the disciplinary code and if you are caught, at least this exam will be graded at a 1 and you may be expelled. They patrol the exams, especially in early semesters) @@ -50,3 +50,5 @@ except otherwise stated (Numerical Methods for Computer Science (NumCS) being th - 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 - ... + +Just remember to always santiy check any output! diff --git a/guide/semesters/semester-planning.md b/guide/semesters/semester-planning.md index f23b8b6..8567fe8 100644 --- a/guide/semesters/semester-planning.md +++ b/guide/semesters/semester-planning.md @@ -4,12 +4,12 @@ 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 planning, [StudyPlanner](https://www.studyplanner.ch/) may come in 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). ## What if I overcommitted? -You can drop courses *at any time* (apart from the basics courses, whose exams you have to sit in one go). +You can drop courses *at any time* (apart from the first year courses, whose exams you have to sit in one go). Thus, if you have bitten off a bit more than you can chew, drop one of the extra courses such that you are able to focus on the more important courses. If you have gone past the official de-registration period, you can simply stop attending the course, if it doesn't have graded attendance. @@ -27,7 +27,7 @@ The average is the raw average (i.e. 3.99 fails) and taken *after* rounding for 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. +Fail two or more basic courses twice and you are out of and blocked from the 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. @@ -37,6 +37,3 @@ 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. diff --git a/guide/semesters/semester1.md b/guide/semesters/semester1.md index dcb5954..6c5324d 100644 --- a/guide/semesters/semester1.md +++ b/guide/semesters/semester1.md @@ -22,8 +22,8 @@ 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, be aware that this course will most probably be the highest effort course of this semester, +if you are trying to pass it and have not done much proving (and it doesn't come naturally to you). 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! @@ -38,7 +38,7 @@ I had to take that one due to being sick at the winter exam, so you can see what ## Linear Algebra (LA) -HS 26 link: https://ti.inf.ethz.ch/ew/courses/LA26/index.html +HS26 link: https://ti.inf.ethz.ch/ew/courses/LA26/index.html 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). @@ -77,7 +77,7 @@ 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. +All hand-in happens via GitLab, and you should (ideally) use 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. diff --git a/guide/semesters/semester2.md b/guide/semesters/semester2.md index ec42458..a0c2a7b 100644 --- a/guide/semesters/semester2.md +++ b/guide/semesters/semester2.md @@ -22,15 +22,15 @@ I had used [Azurios' summary](https://azurios.gitlab.io/page/summaries/) for stu 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. +**However**: Be sure to still follow along to make sure that you understand the covered material and may ask questions in exercise classes. ## 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`. +The course consists of lectures and mandatory (with *sort of* mandatory 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` in a team of two. 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. diff --git a/guide/semesters/semester3.md b/guide/semesters/semester3.md index 6523cbd..257d8ff 100644 --- a/guide/semesters/semester3.md +++ b/guide/semesters/semester3.md @@ -4,17 +4,19 @@ 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. +I have a summary (or even script) available for all the courses in this semester, see [here](/summaries/semester3) + ## 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. +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. +He once had the brilliant idea to rant about "type annotation in Python bad" (i.e. one should *NOT* do it), which of course *generally* is BS. 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. +Due to this, many people have stopped attending the lectures and simply went to the exercise classes, where the 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 @@ -41,10 +43,10 @@ Not much else is to be said other than do your practice for the exam and you sho ## 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, +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. +Having a good understanding 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. @@ -56,7 +58,7 @@ This you can do by solving old exams, or doing your own little project (or doing ## 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! +Yes, you heard that right, if you pass these, you won't have to do the session exam! If you fail, then you still have the chance to pass the course by attending the session examination. 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. diff --git a/guide/semesters/semester4.md b/guide/semesters/semester4.md index 902cd1c..008580f 100644 --- a/guide/semesters/semester4.md +++ b/guide/semesters/semester4.md @@ -10,15 +10,15 @@ yes, even including NumCS ## Data Modelling and Databases (DMDB) This course is terrible. ::: details Why it is terrible {closed} -- They don't really teach you how to design DB schemas properly (which is quite challenging to get right) +- They don't really teach you how to design DB schemas properly (which is quite challenging to get right and also important) - They instead teach you (not really well either) how to write queries (which is sorta pointless, because realistically you will be using something like Hibernate) - Instead you need to learn by heart what the time complexities of operators are, but are never actually given the formulas -- The materials are helpful in the sense that they point you to what you need to look up online (because they themselves are unusable) +- The materials are helpful in the sense that they point you to what you need to look up online (because they themselves are unusable) and even sometimes fail at this. - The exercises often contain errors (but it was the first iteration of the redesigned course for me, so we'll give them a break there) - There are way too few query assignments to learn SQL properly (and they tell you to learn SQL, it's REALLY important, see below) - The exam was a cruise ship sized middle finger to everyone (primarily: MASSIVE difficulty spike compared to the exercises, All-or-nothing design EVERYWHERE) - SQL task in the exam was actually insane (>50 lines for each of two of the tasks) -- +- ... ::: All in all, be aware that the exam is *MASSIVELY* more difficult than anything you have seen before it. You (almost certainly) have never before written any remotely as hard or long queries. @@ -28,7 +28,7 @@ it's not worth your time. ## Formal Methods and Functional Programming (FMFP) -As with most theory courses, this course is taught well, well organized and the exams predictable. +As is the case with most theory courses, this course is taught well, well organized and the exams predictable. There are two graded midterm quizzes, that each amount to 10% of your course's grade, but only, if that improves your final grade. Preparing for these is really quick, as they don't cover that much in terms of materials and only take half an hour. @@ -41,7 +41,7 @@ It is thus similar to Theoretical Computer Science and it really does feel like This course goes in the same category of courses as SPCA, underwhelming courses that have so much missed potential. You are primarily learning things by heart in this course, and if you already have some knowledge in this field, you will likely not have to study all too much for it. -There is also a up to 0.5 grade bonus that you can get by completing two assignments during the course, each taking you between three and ten hours, +There is also an up to 0.5 grade bonus that you can get by completing two assignments during the course, each taking you between three and ten hours, depending on your Linux and networking knowledge. These assignments really are what makes this course a bit more interesting, but are also where a large opportunity was missed: Making them larger and having them part of the grade, full stop, possibly even along the lines of what Compiler Design did previously (50% exam, 50% project, you need 51% or so for passing)