Published on

UBC CPSC course reviews

Authors
  • Name
    Twitter

I took 20 CPSC courses throughout my degree at UBC as a Computer Science major (B. Sc.). I've also added some reviews friends, who have taken courses I haven't taken. Hope these help!

Table of Contents

  1. CPSC 103
  2. CPSC 110
  3. CPSC 121
  4. CPSC 210
  5. CPSC 213
  6. CPSC 221
  7. CPSC 302
  8. CPSC 304
  9. CPSC 310
  10. CPSC 312
  11. CPSC 313
  12. CPSC 320
  13. CPSC 330
  14. CPSC 340
  15. CPSC 344
  16. CPSC 406
  17. CPSC 420
  18. CPSC 425
  19. CPSC 427
  20. CPSC 430
  21. CPSC 436C
  22. CPSC 436E
  23. CPSC 436N
  24. CPSC 436R
  25. CPSC 440
  26. MATH 221
  27. MATH 200
  28. MATH 307
  29. STAT 251
  30. STAT 406
  31. PHIL 220
  32. PHIL 321
  33. Time management
  34. FAQs

CPSC 103

2020

Intro to programming, done in Python. Final exam and final project. Easy class designed for non CPSC majors. Essentially the first half of CPSC 110 done in Python instead of Racket. Pretty slow paced. Good for beginners with no programming experience.

Writing credits to a friend

CPSC 110

2021W1

Weird language, mostly algorithms, class has a flipped classroom format (learn through videos before going to class), although my year they didn't care whether you actually learnt the stuff before class, so I never did. Greatest takeaway was natural recursion, a really important topic. This was probably the most well organized class I've taken at UBC, loved having the autograder directly in the editor.

CPSC 121

2021W1

If you are good with logic shouldn't be too hard, has proofs and truth tables. If you'd like an easy elective, take PHIL 220A, since its basically the same thing as CPSC 121. Also the CPSC 121 labs consists of building actual circuits which is pretty fun.

CPSC 210

2021W2

Easiest class I've taken, in Java, about OOP mostly. The first project milestone took me by surprise, as it took longer than I expected. But after that I made sure I had enough time for every milestone. It doesn't matter how bad your project is, as long as you hit everything on the rubric, you will get full marks. So unless you have another use for your project, going with something simple is best.

CPSC 213

2022W1

Lots of assignments, assembly, C (might want to learn C ahead of time, but also not necessary). Assignments were long, so get a good partner. This was the hardest class for me in second year, because it involved memorization, and lots of time spent on assignments.

CPSC 221

2022W1

in C++, algorithms, was pretty fun (Cinda is a great prof). Doing LeetCode regularly definitely helped a lot. I thought the assignments were pretty interesting, but definitely not easy.

CPSC 302

2022W2

I find the more mathy sides of some cs courses a little difficult, so this class was quite painful. The assignments were in MATLAB, and had lots of linear algebra. Exams were by hand, the averages were quite high, but I walked out on every exam with no idea how I did.

CPSC 304

2022W2

SQL and relational algebra. Pretty easy class, project wasn't too hard, since we chose too make the bare minimum (still got high grade).

CPSC 312

2023W2

So far seems like a very easy class. Currently taking, concepts seem pretty easy, and assignments aren't hard. The class feels like just learning a programming language (Haskell).

CPSC 313

2022W2

Really time consuming, requires pre-class and in-class work on top of assignments and labs, which is quite a lot. Learned pipelines, did more assembly and C.

CPSC 320

2022W2

Loved this class! The class was very focused on problem-solving, every class basically consisted of just solving questions. Quizzes also consisted of writing algorithms (in pseudo-code) to solve problems. Took it with Alan, there was a really weird grading scheme where there were no assignments, but lots of quizzes, which you could make up for with the final. I've heard more recent offerings have focused on theory over problem-solving, which is really unfortunate.

CPSC 330

2022W2

Intro to machine learning. Done in Python. Good introduction to Machine Learning and you learn how to use sckit-learn. Assignments done in pairs. Midterm and final were open book and Canvas quizzes. Overall, a fairly easy class and not super difficult, but definitely applicable if you are interested in Machine Learning or Data Science.

Writing credits to a friend

CPSC 340

2022W2

So much work, assignments were really long (in python). How well you do on the final really depends on how well you make your cheat sheet I think. The material was really interesting though, and it was so cool to see how everything fit together at the end when I was studying for the final. Jeff is a really good prof too. Out of the 5 CPSC classes I was taking that term, this and CPSC 313 took up basically all of my time.

CPSC 344

2023W2

You learn design principles and use Figma. No coding. Group project with up to 6 members. Heavy emphasis on group work. Lots of writing reports for group project. In class activities and some pre-lecture reading and videos (though not super necessary to be successful). Midterm and final allowed cheat sheets. Overall, relatively less work compared to most CS classes, but can depend on group members.

Writing credits to a friend

CPSC 406

2023W2

A math class with some Julia. Lots of derivatives + linear algebra, helps to have taken MATH 307 or CPSC 302 or really any linear algebra class. Biweekly assignments, no solutions provided, which made understanding the material more difficult. Midterm was multiple choice and written, while final was all multiple choice.

CPSC 420

2023W2

I like algorithms, so the material is really interesting, but the assignments are really hard for me, and confusing. Topics include: Convex Hulls, Linear Programming, Network Flow, NP, Online Algorithms, Approximation Algorithms, DP, and more.

CPSC 425

2023W1

Really interesting material. Used Google Colab for the assignments. The assignments were the coolest part of the class, we got to do things like build gaussian+laplacian pyramids, resize images, template matching, use neural networks for image recognition, etc. Coolest and most visually appealing class I've taken, would definitely recommend.

CPSC 427

2023W1

Insanely high averages my year. Assignments weren't that bad, but I've heard the class has changed significantly. I was lucky to have a really good group for the project. The project was fun, built a fishing game (won student-choice), which we are still working on. Here is the repo for the version we built for class.

CPSC 430

2023W2

Essentially a high school English class. Learn about ethical theories and apply them to various topics related to computers and technology. No coding. Super different grading scheme and grading system. Grading on in-class participation, weekly essays, weekly peer reviews, and exams. Exams have short answer questions chosen from a question bank given to you beforehand. Midterm has 1 essay, final had 2. Overall, very little work and quite easy as long as you go to class and participate and put some effort into your essays.

Writing credits to a friend

CPSC 436C

2023W2

Intro to cloud computing. Lots of concepts about using cloud, including Spark and other aspects of AWS. Use AWS or MS Azure for assignments. Assignments done in groups of 3 and quite easy-can be done in 1 or 2 days. Midterm and finals were a bit more difficult due to the lack of practice material and there is no cheat sheet so just pure memorization from the slides. Lectures were a bit boring and felt like reading from the slides. Overall, pretty high class average and a good intro to AWS and the concepts behind it.

Writing credits to a friend.

CPSC 436E

2023W2

For people serious about entrepreneurship. There was a different speaker each week, who talked about their experience starting companies or taught something such as government grants and legal stuff. The speaker line-up was really great. The entire class was focused around starting our own startup (teams of 4), and we had presentations basically every week, for things such as market research and finances. The final was a pitch to a panel of judges/investors. I think having a good start-up idea was the hardest part for me, my team pivoted like 4 times. Dr. Frank Wood took a long time to respond to questions on Slack, and sometimes never did, but the advice he gave us when we asked after class was quite valuable. He also pushed back presentations once after they had already started, so this class was really not high on his priorities, however it was definitely a valuable experience as someone who does want to go into entrepreneurship.

CPSC 436N

2023W1

Natural language processing. The quizzes hardly ever made sense to me, but we got unlimited attempts. The class was boring, but the content was interesting. Lectures were pretty useless. Relied on ChatGPT for the assignments (we were allowed to), and I don't see how it would have been possible without it. One time I had a different answer than GPT, and we went with mine, which was wrong. (GPT is lots more accurate than me at least). I think my main takeaway was learning to work with scikit-learn. It was also really cool to learn about encoder-decoder systems, transformers, BERT, and just LLMs in general.

CPSC 436R

Loved this class! Randomized algorithms turned out to be really interesting, and I've never had a more useful course textbook. The course followed the textbook exactly (the prof wrote the textbook himself), so you can basically learn the class by just reading the textbook. The assignments were quite hard and long for me though, but I found them really interesting. Nick Harvey is also a great prof.

CPSC 440

2023W2 Continuation of CPSC 340. The assignments were really long and difficult, but we had ~2 weeks to do them most times, so it's really important to start early. The math in the assignments is really difficult. I never really managed to understand how to do most of the math in assignments. I think my previous math experience did not prepare me sufficiently for this class. Biweekly quizzes, but these were mostly short answers, and I don't think the TAs read the answers really carefully, so passing these were easier than expected. You can choose between doing the final or the project (you get max of two grades), and I did the project, which was nice, since I got to explore a pretty interesting topic of choice.

How did I manage my time graduating in 3 years and spending a good deal of time on my own projects?

I used Planda!

Disclaimer, I built it too so I'm biased, but definitely check it out especially if you are a UBC student, it's got some nice integrations with SSC.

I also made sure I had the best schedule possible, by using UBC Schedule Optimizer. UBC Schedule Optimizer helps you generate the best possible schedule by your preferences, including walking time, professor ratings, grade averages, minimizing days on campus, etc.

The three year thing was also just high school credits + no co-op.

FAQs

  1. On a scale of 1 to 10, how manageable was your first-year cpsc course load? Where would your second-year courses fall on that scale?

I did IB in high school, so first year was a lot easier in comparison. I found it pretty manageable, and I quite liked my CS classes (CPSC 110, 121, 210), so I'll rate it around a 9 for only CS classes, and 7 for all classes. Math was a bit harder for me (MATH 221 + 200), I especially struggled with MATH 221, but didn't find 200 so hard, although I know people who thought the reverse. I skipped first year math with IB credits, which I think was a good idea, since I've heard many horrible things about how hard 1st year math is. My communication requirements also were really time consuming, since I am a slow writer. Of the second year cpsc courses, I found 213 pretty hard, but the rest were pretty easy, but just because of 213, I would probably give second year cpsc classes a 6. My second year was kinda weird since I took mostly third year courses, so I won't scale it overall.

  1. What specific skills or languages would you recommend I learn over the summer to prepare for first-year cpsc courses? (or second-year courses, for that matter)

If you are planning on taking CPSC 210 in your first year, learn some Java. CPSC 110 uses Dr. Racket, although I don't really see the reason to learn that ahead of time, as its a pretty weird language, and everyone learns it at the same time you so won't be behind if you've never learnt to code before. Some people say that CPSC 110 is harder for people who have coding experience, although I don't really agree. It might be a good idea to start learning about algorithms though (ex. through LeetCode). Natural recursion is a pretty big topic in CPSC 110, and its pretty difficult to wrap your head around it at first, so it could be a good thing to learn ahead of time.

  1. Could you share any study/organization tips or note-taking formats that you’ve discovered work especially well for cpsc classes?

I don't take notes (I usually just read slides), but taking notes is probably a good idea. I think just having a good grasp on algorithms will make your life significantly easier, but that comes with practice, not notes. Doing LeetCode regularly in first year definitely helped with my algorithm classes, like CPSC 110 and CPSC 221.

  1. In comparison to other classes, how easy is it to make friends in cpsc classes?

I've never really tried to make friends in my classes, but even then I still have some friends from my cs classes, so I'd think not too hard. A lot of classes have partner work (ex. 110, 121 lab, 221, 213, 313, 340, etc.) so it is definitely worthwhile to make friends. I'd say it is easier for me to make friends in cs classes compared to other classes, since we have more things in common, and there is so much partner work.

Additional questions?

If you have any additional questions, or would just like to chat, feel free to contact me at ychristina011@gmail.com.

New project: E-cards!

Know any birthday's coming up? Check out my new website, celebratethismortal.com, where you can find easily sharable e-cards for all occasions!

Need crafting supplies?

Check out Makeify, run by two Sauder students.

Create an ecard at CelebrateThisMortal.comBe more productive with Planda