Professor: Gregor Kiczales (the amazing professor in the videos)
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.
FOLLOW THE RECIPE.
- 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.