“Oh, the places you’ll go…”

Millie looks proud with her obedience school certificate.
So regal! So proud!

Guess who graduated this week?!

No, not me…


She successfully finished Obedience Level 2 at a local dog training facility.

That’s basically the elementary school of dog training — “So it’s not a big deal,” you might conclude.

But you would be wrong.

For Millie, this is basically her PhD in Dog.

I adopted Millie from the Kingston Humane Society when she was somewhere between 8-12 months old. Little did I know that she had pretty severe dog reactivity.

This actually stems from fear and lack of confidence, not aggression, but it has been a long journey to get to the point where we can happily finish a group obedience class together (sure, she had maybe 3-4 minor meltdowns per class, but she’d pull herself together again after 10 seconds or so each time — and it was only ever if one of the other dogs started it, so I don’t think she was that bad).

So Millie and I are pretty pleased with ourselves!

Millie’s training saga got me thinking a lot about what dog and human learning has in common. For example, with both dogs and humans, we often approach learning all wrong:

  • We expect dogs to learn things on our terms, not theirs, and consider using dog-friendly motivators like treats as ‘bribery’ — while we also fail to connect what we’re trying to learn with our own personal goals and dreams.
  • We frighten dogs into avoiding the wrong behaviour (e.g. jumping up) as opposed to teaching dogs to choose the right behaviour (e.g. sit nicely) — while we are also terrified of failure, experimentation and learning from mistakes in our own education.
  • We get frustrated and angry when our dogs don’t perform as expected — and we get frustrated and angry at the teacher, course, or other circumstances when things don’t go as planned.

With my own dog, Millie, I’m committed to using scientifically-sound and humane training methods — namely positive reinforcement only, lots of regular treats, praise and happy voices, no punishment or fear required. It’s worked out pretty well for us so far.

But this blog isn’t about dog-training — it’s about how people learn! Here are a few tips I’ve picked up for my own studies after working with Millie for the past 4 months.

Milk what motivates me

Homework can be a real bummer. It’s demoralizing when I can’t figure it out, it often takes way more time than I thought it would, and there are always other, way more fun things I might be doing instead. When I’m teaching Millie a new behaviour, I have to consider what’s most motivating to her. (In this order: 1. Small furry moving prey. 2. The smelliest, meatiest treats. 3. Praise from me (a distant, distant 3rd…).

So what motivates me? What do I love? Delicious food. Going out with friends. What do I want to do when I graduate? A fun, challenging job. My choice of where to live. Working for a cause I believe in.

With this in mind, I’m careful never to work for too long without deciding on a fun reward, something to look forward to, at the end. I also keep my eye on the big picture when I’m feeling drained. Countdowns help — university terms are quite short (12-14 weeks), as is the degree itself in the long run. I like to purposefully choose these rewards and schedule them proactively so that I can see them coming up in the calendar.

Millie isn’t a machine; she needs to know what’s in it for her when it comes to training. Same goes for me and math homework.

Treat practice problems like play

Currently I’m blasting through Khan Academy’s Integral Calculus section. As a recovering perfectionist, I take it pretty personally when I’m on my nth practice problem and still getting most of them wrong. I have to keep reminding myself that these practice problems aren’t final exams, nobody is judging me, and it’s only by getting these wrong, staying lighthearted about it, and learning from the experience that I’ll actually learn the concepts.

Traditional dog training keeps the dog so scared of making a mistake, they’re afraid to do anything at all. These dogs seem well-behaved on the surface since they’re so calm and docile, but in fact they’re often pretty stressed. Dogs trained with positive methods burst with enthusiasm and good behaviours — you can tell they are having a blast as they zoom around the agility ring, for example. The way to get dogs like this? Reward good behaviours and treat every training session like a game!

I focus so much on my mistakes that I fail to notice my success, which means I often feel stressed and tired about my homework before I even start. That doesn’t feel good, and it also means I’m more likely to procrastinate doing the work. I’m trying to flip this dynamic — focus on what’s good, what am I doing right, and use that information to do better next time at the hard problems. My hope is that one day I’ll treat homework as a fun experiment without any fear of messing up.

Avoid the blame game

I hear a lot of dog owners say things like, “Well, my dog is just so stupid he could never…” or “My dog is so stubborn she could never …” I also hear students (and myself!) blaming the course, the teacher, the circumstances, etc. when things go wrong — a failed test, misunderstood homework assignment, bad grade.

What’s the use in that?

This isn’t to say that courses, teachers, and circumstances are never to blame for bad outcomes. Of course they are — sometimes. But most of the time, those elements are out of our control — in the same way that our dogs’ temperaments, histories and genetics are out of our control, too. I think those feelings of bitterness and blame only bring ourselves down without improving the situation at all. It might bring a short-term relief because the outcome is no longer my fault, but now I have to carry those negative feelings around with me. Gross!

Better, I think, to take responsibility for the parts that are in our control — “My reinforcement timing was off with the dog at that point,” “I didn’t think to check in with the teaching assistant before handing in the assignment” — and then just let go of the rest. Move on. Know better for next time.

All easier said than done, I know. Don’t blame me! 😉


A summer update at long last, plus my experience with edX’s Systematic Programming Design

The last time I posted here, I had just accepted my offer to the University of British Columbia and was preparing to move to my parents’ house in the GTA for the summer. Well, here we are, almost two months later – and I’m getting ready to fly to Vancouver in just over a month!

I don’t have a great excuse for not posting regularly, except that I’m the kind of person who gets the most done when I already have a lot on my plate to schedule. When the days drift by without much structure, I procrastinate…a lot. And boy oh boy, do the days ever drift at my parents’ house. Half the time the internet doesn’t work here.

I have been keeping busy, though. Just yesterday I finally completed edX’s Systematic Program Design Parts 1-3 (SPD). Let me tell you, it was a real shock compared to everything I’ve learned at Queen’s University (where I have completed the first 3 computer science courses – 1.5 years’ worth of school).

SPD – normally just a 12-week course at UBC – covered more ground than all 3 Queen’s courses combined. It was wild. I’m a little nervous about what to expect at UBC now, and I am really glad to only be taking 4 courses per term next year (as recommended by the program advisors). I hope that not all UBC courses are this intense.

To be fair, I didn’t try my hardest at really learning the material. By Part 3 I was feeling burnt-out by the fast pace, since I did about a week’s worth of coursework per day. This meant I often skipped practice questions and relied on watching the videos and doing the quizzes. I feel like if someone put the final exam in front of me right now, I would probably fail it – or at least barely pass. But I feel like I understand the concepts; I’m just not comfortable with reading or programming in Racket quickly. (That may not actually be true – maybe I really just don’t understand the concepts too well – because Racket isn’t the trickiest language to learn. It just looks really weird. A lot of parentheses.)

I do, however, really recommend this course as an introduction to programming. I wish Queen’s had taught their courses in the same way. SPD was very well-structured, clearly taught, with a lot of bonus practice questions to try if things didn’t click the first time. It’s mind-boggling to me that in 12 weeks we reached tail recursion, accumulators and graphs. The only downside is that, being an online course, SPD did not provide very much additional support if the videos and examples weren’t enough.

My plan for the rest of August is to review Differential and Integral Calculus on Khan Academy to prepare for my Multivariable Calculus course in the fall. Speaking of courses, here is what I’m taking:

  • STAT 200: Elementary Statistics for Applications (3 credits)
  • CPSC 121: Models of Computation (4 credits)
  • MATH 200: Calculus III (3 credits)
  • COGS 200: Introduction to Cognitive Science (3 credits)

Yikes! Typically UBC students take 15 credits, or 5 classes, per term, but the Department of Computer Science recommends its students sign up for just 4. CPSC 121 has a lab component so it is worth 4 credits instead of the usual 3, so I’m only 2 credits short of a full courseload. In the winter term, I am taking two computer science courses with lab components, so I’m only 1 credit short of a full courseload then. Hopefully I’ll have settled into a routine by then so it won’t be too tough…

For those of you reading this who are interested in attending the BCS program someday, you might notice that I am not taking the typical BCS first-year courseload (which typically includes MATH 180, CPSC 110, ENGL 1** and something else). This is because the BCS program advisor exempted me from both communication requirements, the first two computer science courses, and the Calculus I requirement (and I actually took Calc I/II at Queen’s so I get to leapfrog into Calc III at UBC).

On the one hand, all these exemptions allow me to take the math and stats courses I need as prerequisites for some interesting upper-year computer science courses in my last year of the degree.

On the other hand, it also means that I may not be in any classes with fellow BCS students, at least not in my first year. I’ll have to make an extra effort to meet people in my program.

I won’t lie – I’m pretty nervous! Especially because I have a little dog relying on me for at least 2 hours of entertainment every day. But I’m also excited for a new challenge.

Bound for University of British Columbia!

Alright, it’s official – last week I was admitted to and paid my deposit for the University of British Columbia’s BCS (ICS) second-degree program, starting this fall. eek!

Despite my endless worries about moving across the country with a hyper little dog, to a city where I know all of two people, I think this is the right choice. For one thing, it’s only a 20-month program excluding the co-op. For another, UBC is one of the best computer science schools in Canada. And, last but not least, the program is specifically for mature students who’ve already got a bachelor degree in another field — meaning my peers won’t be straight out of high school! I’m hopeful that this means I’ll make friends a little more easily in the program and feel less isolated than I have at Queen’s, for example.

I’ve got my work lined up for me this summer, though. My last day working at Queen’s is June 9. I have to say goodbye to all my favourite Kingston restaurants (and, okay, my friends…) in the next month or so. The going-away party is June 18. All my stuff needs to be sold and I’ve got to be out of Kingston by June 23. I’ve enrolled in a serious dog-training course in Toronto this summer to work on Millie’s reactivity. I’m going to work through the free, online version of UBC’s first-year computing course in the hopes that I can skip it and move on to more advanced stuff when I get there (called “How to Code – Systematic Program Design” at edX — and it’s taught in Racket! so cool! Also the course is based on How to Design Programs, which I’ve written about before). I’ve also met a nice person (thanks, universe!), so I am trying to visit them lots before I move to British Columbia.

Anyway, all of this is to say that I expect my blogging will slow down over the summer as I wait for the real work to start in September. I may blog a little bit about my experiences with edX and possibly even dog training (since we can learn a lot about how we learn from how dogs learn).

It feels pretty good to have settled on some kind of future for the next 2-3 years! And, for the record, I did really well in the winter computer science course on object-oriented programming, so I am proud of that.