Review: CPSC 110 – Computation, Programs, and Programming

By January 3, 2017Course Reviews, UBC

Professor: Gregor Kiczales (the amazing professor in the videos)

Quick Links: Language [BSL, ISL, ASL]; Environment [DrRacket]; Course Website; Challenge Exam

I’ll address the elephant in the room first. By now, you probably have heard that CPSC 110 is a time-sink and not-so-useful course. I understand that it might not seem very useful at the beginning, particularly if you already have programming experience. However, I found that it was a great class that taught me how to design good programs.

Looking back, the recipes taught in class are highly applicable to all of software development and can go a long way in saving effort of writing code. If I had not taken the course, I would approach any programming problem by tackling it with messy data functions right away. However, the course “trained” me to think in a way that requires some careful thought into design of data and tests to make it easier to write functions. It also taught me to think about recursions without too much frustration.


The flipped classroom design of CPSC 110 was quite a different experience. I find that I can truly appreciate the value of teaching by watching the videos on EdX first, and then going to Gregor’s lectures. The material was certainly digestible with the amount of exposure I got from the online videos, problem sets, practice problems, and labs.

The assignments were long and ambiguous, but certainly manageable with some degree of persistence. I would spend anywhere between 2 hours to 10 hours on an assignment, and found that my marks were heavily dependent on how well I followed the recipes. (It was particularly difficult because the course policy does not allow professors or TAs to answer any questions regarding assignments.) Sometimes the problem statement would be so ambiguous that my solution differed completely from the standard solution, but I would walk away with a 80 or 90% because I followed the recipe.


I found that chipping away at the material for 2-3 hours a day was the most important aspect for success in the course. Considering that CPSC 110 is a first-year course, 2-3 hours a day sounds like a lot. However, the time that I spent with the material built a solid foundation for my understanding of computer science. I strongly recommend spending time at the TA office hours or visiting the professors to ask for help. These strategies helped me achieve a 97% in the course and I’m considering becoming a TA for the course to see what it’s like on the other side 🙂



  • Approach the course with an open mind. Even though it’s unlikely that you’ll use the language on the job, the course does offer a solid foundation if you wanted to pursue a career in computer science.
  • Take advantage of the professor and TA office hours. They’re there to help you succeed in the course.
  • Review the material in bite-sized pieces daily. It’s more effective to work on a problem for an hour and return to it the next day with some new thoughts, rather than getting stuck on a piece of buggy code.
  • If you like a challenge, register in Gregor’s section! I’ve sat in on other professors’ sections, but I don’t feel challenged enough in those sections. Gregor is humorous and it makes the material much more memorable. For visual learners, register in Celina Berg’s section. For the most help and detailed explanations, register for
  • For BCS students: I would recommend taking the challenge exam (equivalent to the final exam) instead of going through the course simply because of the condensed nature of the program. CPSC 110 is a per-requisite for CPSC 210, which will open up the upper-year computer science courses.
 Good luck!

One Comment

  • Hosting says:

    I came into CPSC 210 with rudimentary Java knowledge, and what little bit of programming experience I already had helped me to become fluent in Java fairly quickly. However, one of my friends struggled a fair bit with Java in the beginning; I’ve also met a few other 210 students who chose to spend a fair bit of additional time looking up references and doing some extra reading on Java.

Leave a Reply