< More Posts

CPSC 110: Weeks 7 and 8

Published 11 April 2021 at Yours, Kewbish. 1531 words. Subscribe via RSS.


A couple weeks ago, I predicted that my CPSC 110 sprint was probably going to peter out, and would you look at that - I was somewhat right. A combination of school restarting, lots of homework to catch up on, and a general procrastination of writing anything all led to me sort of conveniently forgetting to go through a couple videos a day. It was also convenient that these couple of modules are starting to pick up in difficulty, and are generally the points where people start crying for help on the Piazza (or so I’ve been told). All in all, I’d definitely put off writing notes for the last few modules I’ve completed until today, so I suppose here’s a good place to start.

Local expressions and the section on one-of types were surprisingly comprehensible - I’ve always admired how systematically this course builds on past material, but I suppose there’s a reason why the course name is ‘Systematic Program Design’. Week 8’s module on built-in abstractions was also relatively easy to understand - drawing on past experience with similar functions and styles in Python and especially Javascript definitely helped.

I think I’ve said this something like five times before, but as always, you’ll probably be very confused and disinterested in the contents of this article unless you’re taking CPSC 110, or somehow have stumbled upon this in the interest of learning Racket (it’s an experience). I’ve put up the notes for the rest of the course up til this point in the posts preceding, so if you are indeed interested, check those out.

Notes - Week 7

Week 7 discusses two one-of types (the cross product table), and local expressions.

Notes - Week 8

This week deals with using Racket’s built-in abstract functions and creating your own. (Starting to get into things that are more closely related to what you stereotypically think of as functional programming.)


As of writing this conclusion, I’ve actually managed to go through module 9 as well, so we’ll see if I can manage to publish those notes soon as well. I can definitely see the course starting to ramp up in difficulty, but I think the design problems are a nice challenge, aside from the mundanity that can sometimes be trying to write check-expects and follow templates to a T. As I look back on each module, I’m surprised to see how clear everything actually is - the first time round, everything certainly seemed a lot more difficult. I guess I’ve just found that it really is impossible to try to rush through things, even the dull humdrum of copy-pasting stubs and templates and such. I’m excited to see what the later couple weeks have in store, especially in terms of this magic they call ‘functional programming’.

I’m also looking forward to making some more good progress before summer break, and seeing when I can finish the bulk of the course. I have several more modules left, but after that, I think I can start devoting more time to completing more start-to-end problems and tackling the practise finals from past years. Hopefully, I’ll be able to finish up the course by June, though I genuinely don’t know what else’ll come up with school. I think I’ve generally settled on challenging in September instead of the summer, which should give me some more time to prepare, and might hopefully lift a bit of the courseload (if I do manage to pass the challenge) in my first semester. I think I’m well on track to this, and I’m happy to start applying some of the more fun theoretical techniques to problems.

- Yours, Kewbish

< More Posts