Preamble / yap
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 !
You took a class in compilers. About 1/3 of the course is 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 then you start writing your own compiler. And you 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
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, the greatest value of taking a course is the piece of paper and stamp of approval it provides upon passing the course) 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. Tier-list, you know the drill. These ratings are ultimately highly subjective, altough I hope and think it provides some value. At least a pointer.
S-Tier
TDT4260 - Computer Architecture
TDT4255 - Computer Design
A-Tier
TDT4258 - Low-Level Programming
B-Tier
TDT4200 - Parallel Computing
C-Tier
TDT4230 - Graphics and Visualization
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 …