Back again for my penultimate year course ratings! Without further ado, here are some of my thoughts on the courses I'm wrapping up right now (will update if anything significant changes after final exams).
I'm only rating my Winter courses, as I was studying abroad in the Fall - check out these posts if you're interested in those experiences.
CPSC 413 - Design and Analysis of Algorithms I (Required)
This course is super interesting and definitely important for computer science. You learn to think algorithmically, and it will help a lot with coding interviews in the future. There is actually barely any coding in this course because you focus on different types of algorithms, thinking on paper, and properly expressing your algorithms and why they work.
Some of the questions and exams in this course are really difficult, but on the other hand, the grading is very lenient if your thinking is on the right track.
I would rate this course an 8/10, it's definitely worth putting the work in to understand its content. I had a great experience, but I've heard it can be professor-dependent.
CPSC 449 - Programming Paradigms (Required)
In this course, we learn about functional and logical programming (currently, with the languages Haskell and Prolog). In my opinion, this course is trying to cover too much too fast, as the paradigms were difficult to wrap my head around and I felt like I wasn't given the time or resources to truly understand them. The assessments seemed to be a bit esoteric at times, though some parts were nice and interesting because you learn to think in new ways.
I give this course a 6/10, I can see why it's required, but I think it should cover less concepts and spend more time on the basics and their applications.
CPSC 457 - Operating Systems (Required)
I quite enjoyed this course, I think it's pretty important and that the assignments were challenging and interesting without going overboard. The lectures were also relatively engaging; though I think it would have benefitted from brief mentions of why each thing is important to know, even if you never write your own "operating system".
As a bit of a downside, this course seems to follow the 80-20 rule, where 80% of the work for each assignment is for the last 20% of the grade.
I would give this course a 7/10, my main concern being that the letter grade conversion is quite rough for this course. I would have preferred getting less hints for the main logic of each assignment in exchange for a better grade conversion, so that we can be rewarded for understanding the scheduling/filesystem/etc. concepts and not just the algorithmic optimisations.
PSYC 203 - Everyday Psychology (Option)
On a lighter note, PSYC 203 was a pretty nice course. You learn about theories, experiments, and observations in various psychology fields. The textbook is actually really interesting and fun to read, and contains good life advice. To get an A, you don't need to put in more work than attending lectures and reading the textbook, and both are engaging.
It's hard to give this course a rating because as a computer science major, obviously it was less useful than the above courses. I'll just say it was a good, easy course!
Since all three of the computer science courses in this post are required, it probably doesn't help much with course selection, but hopefully this provided you with some information about what to expect, or maybe just solidarity if you felt the same way about them :).
Until next time,
Ana
It's funny you complain about the 80-20 rule of the OS course but you seem to happily apply it to the Algorithms course :-)
ReplyDeleteGood observation 😂, I guess the difference is that my ratings don't really affect anybody, unlike grading
Delete