The First Semester at the Best University in Germany

Before I started studying at Technical University of Munich (TUM) somebody told me that getting accepted is the easiest step. At that time I simply refused to believe it. I had really good grades at Czech Technical University (CTU) and even represented CTU internationally. Studying at TUM can’t be that hard, I told myself.

Overall Impression

The first thing I was surprised by was the amount of homework. In most of the courses we got homework every single week and while they were not mandatory (and they had a very little direct impact on the grade), not doing them would seriously hinder one’s ability to pass the exams. While doing so much homework can be difficult sometimes, I feel like I am learning and progressing very fast with this method.

The logo of Technical University of Munich, from wikipedia

The thing I like the most, however, is the freedom to choose courses. At my previous university, students had four or five mandatory courses per semester and the rest was based on their major. Whereas at TUM, I had only one mandatory course this semester. I still have subject areas I have to pick from, I can’t just only learn Chinese and expect a degree in Data Engineering and Analytics, but picking from tens of different courses gives me much more freedom than I had during my bachelor studies.

Another shock for me was how smart and ambitious other students are. I am yet to work with somebody who isn’t smart or hardworking. I’ve encountered people with internships at Google, Facebook, Deep Mind, etc. Not only is this motivational and encourages me to keep working even harder, but the other benefit is that homework assignments are a lot more fun when working with people who put effort into them. On the other hand, since there are too many amazing students, some courses are very hard to get into due to their limited capacity. To give an example, I had to send my CV and transcript to have a chance at being selected for a practical course. Everything becomes a competition.


In this section, I will briefly talk about all the courses I had this semester. Whether I enjoyed them, whether I found them interesting, and share with you a grade distribution for each of these courses as well as my grade.

Exams and grades

Each course has only one exam date even if you are ill or unavailable. Yes, that’s tough, I’ve experienced something similar in Singapore when I was studying at Nanyang Technological University (NTU), but at least there you basically couldn’t fail if you made an effort. My theory is that it’s because the students are paying high tuition fees at NTU and are therefore customers (getting good grades was however difficult). At TUM, some courses have more than 40% fail-rate, which is ridiculous considering how good an average student is. Some courses have a retake exam that takes place at the beginning of the next semester, but this is not a rule. TUM also has its grading system with 13 different grade scores, but basically, 1.0 is the best, 4.0 is the worst passing grade, and 4.3, 4.7, or 5.0 are failing grades. Yes, they even tell you how miserably you failed. Finally, most courses offer the opportunity to get a small grade bonus (0.3 grade score) if you finish correctly most of the homework assignments.

[IN2064] Machine Learning (3.3)

This was the most difficult and fun course I had this semester. Before the semester started I didn’t even want to take this course. It was recommended to me by a friend, but I thought I knew almost everything from the syllabus. I knew Neural Networks, SVM’s, and all the different clustering algorithms. At least how they roughly work and how to use them. But in course we dove deep into these algorithms and explained how they are all connected. We derived how to solve SVM’s optimization problem by formulating the Lagrangian dual function. We saw under what conditions Gaussian Mixture Model is equivalent to Lloyd’s algorithm for k-means. The homework exercises made me think and really understand the problem. I have to say Prof Günnemann, who previously worked at Carnegie Mellon University, made this into a very fun course.

The downside was that the exam was also really hard. It contained some very interesting problems, problems that can’t be solved by just using google. The exam might have been open-book, but no book would help. Not with the time constraints we had. The exam consisted of 10 problems and we had 2 hours to solve them. However, each problem had usually three parts. That’s 4 minutes for each part which includes reading the problem statement. That’s why the grade distribution looked so terrible with less than half of people passing the exam. That said, I still recommend the course.

ML grade distribution. Average grade 3.9, Fail-rate: 55% (excluding those who gave up and didn’t submit)

[IN2219] Query Optimization (2.0)

A class with professor Neumann, whose contributions to the state-of-the-art in Query Optimization are significant. In this course, we learned what happens when you type an SQL query and how are these queries optimized. Throughout the semester we were also working on our own query processing tool (in C++) that did everything from parsing an SQL query to creating and running an optimized execution plan. The exam was fair — it consisted of things we have learned during the lectures and practiced during the tutorial sessions. After the experience with the Machine Learning course, I was glad to find out that there are courses at TUM which have similar difficulty as courses I’ve taken at CTU or NTU.

QO grade distribution. Average grade 2.5, Fail-rate: 11.5% (excluding those who gave up and didn’t submit)

[IN2124] Basic Mathematical Tools (2.7)

The course was advertised during the first Machine Learning homework for those with weaker mathematical backgrounds. I think my mathematics skills are my weakness, especially compared to some of the people with bachelors in mathematics that are in the Data Engineering and Analytics programme. That’s why I’ve decided to use this course to work on my math. The course covered linear algebra, calculus, optimization, and statistics. Although I knew some things from my bachelor’s, the exams weren’t easy. We got four take-home exams and had a week for each one of them. Since the exam was open-book, the professor made sure to include problems that google alone wouldn’t help with. The professor said that each exam should take us an afternoon, but it usually took me a couple of days.

BMT grade distribution. Average grade 2.4, Fail-rate: 2.8% (excluding those who gave up and didn’t submit)

[IN2326] Foundation in Data Engineering (1.7)

The only mandatory course I had this semester. The second course I had with professor Neumann. We learned some basic bash and how to process data using a command line. We learned a lot of advanced SQL. For example, how to traverse a graph and find cycles in a graph using SQL. We were also taught few algorithms, had a small introduction to distributed systems, learned how to write C++ code that processes files very quickly using bit operations. Additionally, we learned a few query languages such as XQuery or SPARQL. Had C++/Scala(Spark) home assignments… It seems like professor Neumann made a list of all the things a graduate of the Data Engineering and Analytics programme should know and put them into a single course. I actually quite enjoyed the content. The final exam was also fair. It consisted of SQL problems, algorithmic problems, and even open-ended questions about distributed systems that had no single right answer but assessed how deep is our understanding. Overall I think this course was better than I anticipated.

BMT grade distribution. Average grade 2.8, Fail-rate: 20% (excluding those who gave up and didn’t submit)

[SZ0302] German A1.2 (1.3)

With the courses being online due to the current pandemic situation, it was nice to have a language course. The course was very interactive and oftentimes the teacher divided us into small groups so we could have discussions. This was by far the easiest course this semester. Partly also thanks to how similar German is to Czech and English.

German course grade distribution. Average grade 1.4, Fail-rate: 0%


I am confident in saying that Technical University of Munich is the most difficult university I have studied at. That includes not only Czech Technical University, but also Nanyang Technological University in Singapore which ranks as the 13th best university in the world. Overall I enjoyed the courses this semester. That being said, I can’t wait to start in-person learning when the situation allows it so I have more opportunities to interact with all the brilliant students.

Machine Learning researcher and a student