Semesters II – IV
Looking back.
I recently reread a little piece I had written for this blog about 1.5 years ago, the one about my first semester at ETH in Zurich. During this reread, it occurred to me that I had planned to write one of those at the end of each semester, but as you, dear reader, can no doubt deduce from the contents of the blog archive, this plan of mine had kind of fallen by the wayside.
So two days ago, just a short couple of hours after finishing the last exam at the tail end of my now fourth semester, I thought to myself:
“You know what, let me just do one of those now and simply also include some stuff about the semesters in between. That’d be nice, wouldn’t it?”
Because, you know, better late than never, right?
Semester II
I — and all my fellow students with me — started the second semester without knowing our results from the first one yet, which was an … interesting experience to say the least. But, unfortunately, this is common practice in winter, when the end of the last exam is usually only about a week from the start of the next semester. But when the results did finally arrive — somewhere around the first two weeks — I was ecstatic to learn that I had passed. Not with excellent grades or anything, but with enough of a buffer to feel relatively comfortable. So I ventured on, looking forward to what the rest of the semester would have in store.
All in all, after the content-heavy first semester, during which I had made my first contact with the vast amount of knowledge the hallowed walls of ETH hold within themselves, the second one felt rather relaxed to me.
Which is not to say that there was not a lot of cool stuff we did during it, not at all. We had a whole course on how the architecture of a processor actually works (and were even able to build our own one in a hardware description language, which was amazing), learned how to program parallel processors, and were also taught a whole host of mind-blowing new algorithms (I am still completely in awe that Max-Flow algorithms do what they do).
But my schedule as a whole was a lot less crammed, which felt like an absolute blessing after having spent every waking moment of the last six months thinking about uni.
Then, in summer, I got to experience the long “study phase” of ETH for the first time. You see, the timing of the semesters and exams is a bit weird at ETH at the moment — though there are plans to change that soon. The autumn semester is 14 weeks long in total, after which we get around three weeks of lecture- and exam-free time to prepare, which is then followed by the exams, most often spread out so that there is around one week between the last one and the start of the next semester. The spring semester, on the other hand, is 15 weeks long, with 14 weeks of lectures and a break of one week somewhere in between, after which we then get around two months of time to prepare, again a few weeks for exams, and then most often around three weeks of time until the new semester.
Though it sounds really nice on paper, this long preparation break was a bit of a double-edged sword for me. At first, it always seemed like I had a lot of time left, which lead to me having some problems finding motivation to really start studying. So I did not really get anywhere during the first few weeks, but also never really rested, because I still always felt like I was supposed to be studying.
And then, when time inevitably became short, I was still relatively at the beginning of studying, but also did not have the benefit of having rested until now. Which, safe to say, was not particularly good for my mental health. But I managed. Somehow.
In the end, everything still worked out fine, fortunately.
Semester III
The third semester was a really cool one to me. It contained two of my favourite courses so far, namely “Systems Programming and Computer Architecture” and “Theoretical Computer Science”.
The former taught us the basics of x86 assembly and C programming (which I had always wanted to learn), and also revised and expanded upon some of the computer architecture topics from the semester before. It even included some exciting projects, like building our own memory allocator, solving a simple CTF by examining a binary executable’s bytecode, and even some basic reverse-engineering exercises. All of which was really fun.
And then, in “Theoretical Computer Science”, we were taught many of the theoretical underpinnings of the field, which absolutely blew my mind. I mean, what do you mean there is a mathematical model of computation, the power of which no real system has (as of yet) been able to surpass? And what do you mean we can use this abstraction to mathematically prove that there must exist problems for which no algorithm can exist (at least not one for a conventional computer)? And what do you mean we can go even further and identify a class of problems that, if any single one of them were to be solved in polynomial time, we would suddenly have a polynomial solution to any and all problems for which a potential solution can be checked in polynomial time? Like what?
Yeah. I had a lot of fun. Can you tell?
The exams for this semester also went relatively well for me, with the exception of one, which I passed only barely by finding a few correction mistakes at exam review.
Semester IV
Next came semester four, which brought me two more of my favourite courses so far; “Formal Methods and Functional Programming” and “Computer Networks”.
“Formal Methods and Functional Programming” taught us the basics of the Haskell, a programming language which took some getting accustomed to, but also one I’ve come to adore over the first half of the semester. Then, it the second half, we learned the basics of how to define the exact syntax of a programming language (though that had already been hinted at in “Theoretical Computer Science”), and also a few methods of defining the exact semantics as well, and then how to use that to prove things about the language. Which was also really cool.
In the networks course we got a very detailed overview of how the internet works, all the way from DNS to the very protocols that govern the error detection at the two ends of an Ethernet cable, plus a short introduction into a futuristic internet protocol called SCION, which one of our professors is involved in developing. That also, was really exciting to me, as this is a topic I had always been interested in, but had never been able to understand as much about as I had wanted to during the earlier years in which all my knowledge on computer science had been mostly self-taught.
This semester was now also my second one that had one of those very long “study phases”. I am glad to report, however, that I handled this one waaay better than the first one. I was able to figure out a schedule and a pace which I managed to keep up during the entire summer and even planned in a total of two weeks of holiday, which was nice.
It’s interesting, I feel like I am slowly but surely getting the hang of things, realising how best to prepare for exams and building up the confidence that I can solve most of the problems our professors throw at us, both the ones during the semester, and also the ones during the exams. Which feels really nice after the omnipresent uncertainty about my own adequacy during the first two-and-a-half semesters.
But what I am still having difficulties with is solving those problems both correctly and quickly at the same time. Which, unfortunately for me, is exactly what is required at an exam.
So here I am again, waiting for the results of the last exam session, still wondering … Has everything worked out? What if I have to start the next semester with the knowledge that there is still an open repetition exam I will have to pass next summer?
I can also feel that, while I do enjoy ETH immensely, it is quite exhausting. And the fact that there is maybe one week each year during which we don’t have lectures, nor exams, and also know that we have passed all exams of the last semester … That definitely doesn’t help.
And there is still that one last question, open since the very beginning.
Will I be good enough? You know … To see this through to the end?
Well. While I do feel a lot more optimistic about that than I did in the beginning, I won’t know for quite a while yet.
But what I do know is that I feel like I am at the right place. Right where I am supposed to be. Amidst the bits and the bytes, the formulae and the proofs. Doing something I love doing; learning exciting new things. As one of my professors put it quite aptly:
Once you know this stuff, the mystery goes away … But the magic remains.
– Prof. Dr. Timothy Roscoe
So, even if I don’t make it all the way to the end, every last hour I have put into this course of study so far has already been soo incredibly worth it.
And what more could one want?
Anyhow.
For now, I will again spend the next weeks — three this time — recharging, doing all the things I love doing besides uni. Some reading, some writing, some music, some video games. Spending time with my friends, new and old. Maybe some D&D.
We’ll see …
Man, am I looking forward to that.