In this post I will yap about the CS courses that I have taken so far and I will mention what I like and dislike about each of them!

Year 1

CPSC 110

The course is supposed to be a first year’s introduction to programming at UBC. I find it somewhat interesting as the course is taught using a functional programming language.

In my opinion, this course is just an algorithms course in disguise but with Racket.

PROSCONS
Helps with problem solving skills.I’m not a fan of having to follow a ‘recipe’.
They emphasize solving problems rather than worrying about runtime or space complexity.They dock marks for style marks. (They really should make a linter.)

Tips: I think for this course, usually doing the practice material can get you very far, as most problems follow a specific template/recipe.

CPSC 121

This course in my opinion was rather weird. It covered a lot of topic which are somewhat related to each other, such as logic circuits, discrete math, regex, state machines and proofs.

I think the course has a lot of breadth letting students know these topics but I feel like since it covers so much, it lacks depth. In particular, the proofs were badly taught. Though I hear in recent years it’s worse? as it’s now autograded.

PROSCONS
Most of the topics are cool (Circuits & Proofs especially).There’s pre-readings.
Goes over a lot of topics allowing students to further study CS theory.Lacks depth in the topics

Tips: Redo all the tutorials and understanding them. For circuits, I think building gates in minecraft can be a fun way to learn.

CPSC 210

This course feels like it should have been the actual introduction to programming course. It just teaches you OOP in Java and how to draw squares and fancy arrows which I don’t even remember what the arrows mean.

Also there’s an open ended project which a lot of students use in their resume. Do decide on a non-trivial project as it could help make your resume look better.

PROSCONS
OOPs is an extremely popular paradigm and widely used.Lecture feels unnecessary to attend.
Some interviewers might ask the concepts here.The project can be “cheesed”.

Tips: You should be fine.

Year 2

CPSC 221

I think the topics it covers is quite good as it encompasses common data structures you would need to know for a technical interview. It also has weekly examlets which in some sense forces students to actively study.

PROSCONS
Good to know basics for leetcode.There’s weekly examlets.
Uses C++Lots of questions feels like Trivia.

Tips: If you have done leetcode, the questions in the course will feel trivial. I think leetcode is probably the best way to do well in the course.

CPSC 213

A lot of people complain about this course, but don’t listen to them, this is probably one of the most interesting course I’ve taken.

PROSCONS
Helps you understand what’s happening under the hood.Quizzes are scary.
Covers memory management and concurrency.Some questions are stupid (i.e. memory reads).

Tips: Try to understand why things are the way they are.

CPSC 317

The course covers important topics. But it felt super memorization heavy. Probably the course I hated the most.

PROSCONS
Useful knowledge.Badly taught.
So many memorization & quizzes.

Tips: Read the textbook I guess.

CPSC 313

The course covers some useful stuff, and goes over assembly again. Though one might argue that the material isn’t as applicable in normal software engineering as the concepts are too nieche.

PROSCONS
Systems are always cool.Biweekly quizzes.
Talks about cache!Prairielearn.

Tips: There’s a decent amount of videos online on the topic talked in the course.

CPSC 340

The course was rather fun as it went over a high level overview of how ML algorithms works and then makes you implement them from scratch in the assignments. Most of the topic was pretty cool as well.

PROSCONS
Really good lectures.
Material is cool and useful

Tips: Just understand how the algorithm works.

Year 3

CPSC 310

The course covers arguably important software engineering topics, but felt like it was executed badly. The nature of T/F questions was really bad, and the project felt like it wasn’t connected to the material.

PROSCONS
Material is important.Project isn’t open-ended.
Project is non-trivialThe course structure is bad.

Tips: Get a coin in the exam rooms to flip T/F.

CPSC 320

The course contains a decent amount of proofs. The questions for coming up with algorithms is rather easy but proving their correctness takes effort. Overall, I think the course helps you with some problem solving skills.

PROSCONS
Builds problem solving skills.Lots of reductions.
Simple course structure (Exams & Biweekly Assignments).

Tips: Doing leetcode made the course feel easy.

CPSC 427

The course initially started good, but felt like it fell short towards the end. The main part of the course is making your own game from scratch in C++ (The best language 😎). There’s also some assignments but they were very unstructured as some had no rubric.

Technically there was also no incentive to go to lectures as there are no exams or ways to be tested on lecture materials. However the topics were quite interesting in of itself which made me go to lecture.

Furthermore, the course didn’t teach OpenGL well and didn’t touch on modern C++ which was disappointing. The project was good as it’s somewhat open ended, though there are a set of requirements that you have to meet such as collision, physics, etc.

I think the lecture material was also somewhat lacking as it felt like it was showing the existance of certain algorithms rather than explaining how they work.

The project was definitely the best part of the course, and the freedom to set up the project and structure it however you want is nice as you can make your own linter rules, etc.

PROSCONS
Fun project.Course felt unorganized.
Interesting topics (when it was about programming related at least).Almost slept through some lectures.

Tips: Get good at C++ and OpenGL. Find a good team.