Course Description
Systematic study of basic concepts and techniques in the design and analysis of algorithms, illustrated from various problem areas. Topics include: models of computation; choice of data structures; graph-theoretic, algebraic, and text processing algorithms.
Average difficulty
Average quality
The course - while it was hard as hell - was a highly useful course in the bigger picture. Learning complex algorithm patterns such as DP and D&C has helped visualize problems in a more constructive manner. With those two specifically, you will learn the value of what it actually means to “trust the natural recursion” - just doing so makes the design process so much more intuitive instead of thinking about solving every subproblem.
| Difficulty: | 4.5 | |
| Quality: | 4.5 |
This is a good course but it could be better in several ways. In terms of what is good, the course covers many great topics and helps you grow as a computer scientist rather than just a code monkey. Expect to write proofs etc. The last unit on computational complexity and NP completeness is great. My prof (Alan) said that the material in this unit is something everyone (even those outside CS) should know about because it’s deep, interesting, and important and I completely agree. The assignments in this course are great and are probably your best learning tool. Don’t split the assignments up or get too much help from humans or AI because you’ll lose opportunities to learn. All that said, there are things about this course I found lacking. There’s not a lot of practice material given besides the assignments and some past exams so it’s kind of up to you to find extra practice resources if you want them. But such practice is important for some people to do well in this course, so it would be better if the course supported this more. I found that it took a long time to do the weekly textbook readings. There’s something to be said about struggling through readings, but I felt this took time away from more productive things related to this course. I didn’t mind the worksheet approach (flipped classroom). However, I think at times it’s a stretch to expect students to complete the worksheet themselves in the time given, so the whole thing devolves into watching the prof solve the worksheet which doesn’t seem that useful (I can read the worksheet solutions on my own time). A similar point could be made about tutorials.
| Difficulty: | 4 | |
| Quality: | 3.5 |
CPSC320 covers a wide variety of algorithmic techniques, more abstractly than CPSC221. The course focuses more on pseudocode and runtime/space complexity analysis and rarely touches on implementation details. LeetCode/competitive programming experience will be helpful (and CPSC320 also helps build those skills!) Start assignments early (as soon as they’re released) and reference tutorial solutions for hints. It’s difficult to study mechanically for this course, as exams and assignments will assess creative thinking and application of techniques in new situations. Exams are fair given the time constraints. This term’s exams were primarily multiple choice or fill-in-the-blank, with longer written questions on the final.
| Difficulty: | 4.5 | |
| Quality: | 4.5 |
One of the more difficult course in CPSC as it delves into challenging abstract topics. Assignments will take a large portion of your time. Though challenging, it is an important course that can help leapfrog your leetcode skills to be more competitive for internships.
| Difficulty: | 5 | |
| Quality: | 4.5 |
Took this with Patrice Belleville. Extremely difficult course, but the course was ran well. Assignments were very tough, I needed to go to office hours and consult with peers very often for understanding of concepts. Prof was understanding and fair. Start assignments early and go to lectures & office hours, assignments can take up a significant portion of time to understand and office hours are often quite packed. Concepts taught in the course are very useful for industry and leetcode.
| Difficulty: | 5 | |
| Quality: | 4.5 |
Very useful code to get you a job in the industry. Helps you in almost all Data Structure and Algorithm questions. Please start your assignments on time.
| Difficulty: | 4.5 | |
| Quality: | 5 |
Strikingly similar to CPSC 121 in terms of course structure, but on more advanced topics (e.g., DP, greedy, etc.). Course was well ran and assignments were challenging, but fair.
| Difficulty: | 4 | |
| Quality: | 4.5 |
Pain. Gives you the ability to slay leet codes. One of the most difficult cs courses at ubc
| Difficulty: | 5 | |
| Quality: | 4 |