Back to notes

UBC CPSC 110

January 30, 2026

CPSC 110

What is it about?

Functional programming. You'll learn it in the Dr. Racket language.

I took the course in W1 2025/26 and got an A–. I initially attempted the challenge exam but failed (sadly), so this is the guide I wish I'd had when preparing. I hope you find it helpful!

Note: I'm not affiliated with the course, nor am I a TA. This guide is my personal opinion—if there's any incorrect information, please feel free to contact me.

Should you take the course?

If you want to get into CS in UBC then there is no choice not to take. If you want to take as an elective, I guess python courses is more transferrable if you don’t want to do CS.

Tips

Tips I find useful for CPSC 110 challenge and in-class exams:

  1. Master the recipe. You'll also get hand-graded points for using the correct format. The ideal way to solve a problem:
    1. Analyze the problem on paper. Identify the problem type and program structure.
    2. Write the recipe.
    3. Edit the recipe according to the logic you formalized in step a.
  2. Formatting matters a lot—spacing between brackets, writing purposes, etc. Some questions require very specific answer formats (e.g., steppers, lifted definitions), so familiarize yourself with all of them. For lifted definitions, use check syntax ;)
  3. I generally prefer using local to define functions rather than lambda for readability.
  4. Do practice midterm 2 if you're doing the challenge exam. Most questions are similar to past midterm 2s and finals.
  5. Make sure to submit practice files to the auto-grader. I initially only ran tests locally—if they passed, I thought I was fine. However, I might have missed test cases or had the wrong template-origin, purpose, or template.
  6. The course is very strict about program termination. I received zeros on one question from midterm 2 and one from the final because one auto-grader test case didn't terminate. For example, you might write a recursive function that forgets to handle when n is less than zero, or forget to terminate a cycle case in a graph problem. Take this seriously.
  7. Add test cases (obviously).
  8. If you forget how built-in functions work, use the interaction window to try running them!
  9. ctrl/cmd+i for auto-formatting.
  10. ctrl/cmd+e for hiding and opening the interaction window.
  11. ctrl/cmd+p for bringing up the previously entered expression. Good luck!