Thoughts on Some NTNU Computer Science Courses

Preamble

Feel free to skip this part

On this page I will discuss my personal thoughts on some of the courses I’ve taken. For the most part, I find university to be a depressingly inneficient way to learn. At least for a field like computer science. It may be less gloomy for other fields, but the delta between useful knowledge, skills, and actual understanding versus what is taught and what shows up on exams is … scary !

Take a traditional compiler course for instance. About 1/3 of these courses tend to be spent on formal theory for lexing and parsing. You learn four or five different techniques for parsing, all with their own formal theories. You must be able to compute them. Pen and paper, old school. But if you ever want to write your own compiler you quickly realize lexing and parsing accounts for maybe 1/20 of your struggle and pain. And heres the kicker. The approach you end up using, and almost everyone else ends up using, is not one of the four or five you so diligently learnt to compute by hand. Very few, if any, of the struggles you face writing your compiler was made any easier by taking the compiler course. Sad, but true, and symptomatic for a lot of my experience at university.

On Ranking

Feel free to skip this as well

There are many ways to learn. Taking a university course is one of those. For a course to be worth your time (with respect to learning. If we are honest for a second, perhaps the greatest value of taking a course at university is the piece of paper and stamp of approval you get after passing) it should provide means to teach its subject better or at the minimum equal to what you could’ve done by other means. Pitted against the entirety of the internet, youtube, books, etc, this becomes a difficult task. Yet many courses succeed.

So when ranking a course I will consider how well it teaches its subject. This includes what parts of the subject it teaches, what it does not teach, what it emphasizes, etc., but also how it is taught. Another important aspect is the subject itself. If the subject is uninteresting in its nature, subjectively uninteresting, or seemingly irrelevant for industry or further study, I will rank the course poorly, irrespective of how well it was taught.

For fun, I will give each course a rating between S to F.

S-Tier

TDT4260 - Computer Architecture

TDT4255 - Computer Design

A-Tier

TDT4258 - Low-Level Programming

B-Tier

TDT4230 - Graphics and Visualization

TDT4200 - Parallel Computing

C-Tier

TDT4195 - Visual Computing Fundamentals

D-Tier

TDT4205 - Compiler Construction

E-Tier

TDT4265 - Computer Vision and Deep Learning

TDT4165 - Programming Languages

Lorem ipsum! Some words on each course is coming …

Last updated: May 24, 2025