Slightly after 6:30pm on the 1st of June 2025, now nearly a year ago, I walked out of my final Hoare Logic supervision into the predictably cloudy summer evening, feeling slightly sentimental about having just completed what was my final ever supervision at Cambridge. The supervision had gone quite well - despite my work being correct, a series of well-thought-out questions from my supervisor unveiled the slight misunderstandings that remained, and by the end of the supervision not only were these all cleared up, but we’d also had time to discuss some interesting practical applications of Hoare Logic that the course didn’t have time to cover.
I didn’t know it at the time, but this wouldn’t actually be my final time sitting down at the supervision table. For the last two terms - yes, I still organise my life in terms (Q1? You mean Lent term?) - I’ve had the honour of being invited to return to Cambridge as a supervisor, to sit down at the other side of the table and be the one to set and mark the work, ask the well-thought-out questions, and hopefully give my students something like the incredible experience I had of supervisions.
In this post, I’ll be sharing my experience as a supervisor for C, C++ and Prolog at Cambridge over the past few terms, discussing the things that students don’t really think about when it comes to supervisions, and exploring how I went about planning and delivering what I hope were reasonably successful supervisions.

The varied weather during Michaelmas term at Cambridge
What makes a good supervisor?
Supervisions, small group sessions with a supervisor to explore the content of a course and beyond, are without a doubt the most valuable pedagogical resource available at Cambridge, a privilege to which I attribute the vast majority of my learning during my degree.
In my first blog post about Cambridge, I described a supervisor as “unbelievably patient”, an “expert in their field”, unknowingly but rather characteristically giving my future self an impossibly high bar to meet. How can I, having barely graduated myself, be the “expert” that my students deserve? Sure, writing C++ is my full-time job, but I’m far from an expert, and my Prolog dissertation is hardly qualification enough to teach it.
I think what 18-year-old me was trying to get at was not that the supervisor should be a total genius, but rather that they should have the knowledge, and more importantly the ability, to explain the content in such a way that the student leaves the supervision thinking “wow, I really learnt something there”. The best supervisors I had weren’t necessarily the ones who had every nook and cranny of knowledge covered, but those who were excited to guide the both of us through exploring the gaps, teaching a way of thinking instead of a textbook.
Either way, teaching, so I am led to believe, comes with experience, which is an inconvenient truth for someone with zero experience of teaching and barely more than that of life. Fortunately, as with everything else so far, I’ve found that what I lack in experience can be largely made up for with careful preparation, so after accepting the offer to supervise I began thinking about how someone like me can give the best supervisions possible.
What makes a good supervision?
If I’m unqualified to give a supervision, then I’m most certainly unqualified to talk about how to give a good one. What I can do, however, is talk about my experience of supervisions as a student, and how I used that to help design my supervisions as a supervisor.
The actual hour-long supervision is just a small part of the larger supervision experience. Students spend most of their time on the assigned work before even setting foot in the supervision room, which provides the basis for the session as well as an important opportunity to think independently about the content of the course. Well-thought-out supervision work, and critically a well-structured supervision built on top of that work, is a key part of what makes a supervision good. The best supervisions I had as a student were those with a clear “theme” - rather than just going through the solutions to the supervision work, the supervisor would ask deeper questions directly related to, but not part of, the supervision work, to ensure we actually understood the content.
Humans, especially the highly intelligent and slightly weird variety found at Cambridge, love logical patterns. Collections of random information go in one ear and out the other, but coherent threads of rational thought and logical links between ideas are both memorable and satisfying - two very important qualities of a good supervision. Some of my favourite moments in supervisions were when the supervisor would ask a seemingly difficult and unrelated question to which I would have no answer, and then say something like “think about what we did in question 1”, and suddenly I’d understand that actually it was just the same idea in a different context.
What I’m trying to say is that the whole supervision experience should be continually building upon itself: subsequent exercises should build upon previous ones; the supervision itself should build upon the work; subsequent supervisions should build upon previous ones. If I were feeling poetic I’d call it something like a crescendo of learning, where every new neural pathway is immediately and continually used on the way to the climactic resolution of Understanding with a capital U. Forgive my slightly extravagant analogy, but it’s not that far off from how I experience learning.
Alongside this analysis of my own experience of supervisions, I also turned to some slightly more reliable sources to get some other perspectives on what makes supervisions good. Advait Sarkar, researcher of AI and human cognition and former CompSci supervisor, wrote a fantastic book How to define an elephant, arguing that the point of the supervision is to provide structure and feedback to support independent study, which is where the real learning takes place. It gave me lots more things to think about in preparing my own supervisions, and was a really interesting read - if you’re enjoying this post, you should absolutely check it out! I also did the university’s “new supervisors” course, which focused on the idea of constructivism, that knowledge is not passively received but actively built, which gave me another thing to keep in mind in my preparation as the start of term drew nearer.
Preparing my Supervisions
I’ve always felt that well-chosen past exam questions, combined with creative practical exercises, make for the best supervision work. The exam questions get students thinking about the course in the way the examiners want (for better or for worse a necessary skill), while the practical exercises encourage students to explore the world beyond the confines of the exam paradigm, allowing them to actually “experience” the content, rather than just seeing it from the outside. For example, it’s all very well knowing that C is prone to memory safety bugs, but actually banging your head against the wall for an hour trying to debug some inexplicable segfault unlocks a new level of appreciation for the concept.
Of course, everything I said before also applies - each supervision, and the series as a whole, need to follow a logical thread - so with all of that in mind, I set about designing my supervisions.
For the three supervisions of the C and C++ course in Michaelmas term, it felt quite intuitive to start with C and discuss what sets it apart from other languages in the first supervision, with undefined behaviour a recurring theme in the four past exam questions I set for this supervision. In the second supervision, as well as solidifying this knowledge, I wanted to begin to motivate C++ by demonstrating some of the shortcomings of C and how they are addressed in C++, with questions about ownership, error handling, macros, and resource management to motivate smart pointers, exceptions, templates and RAII. Finally, having covered, in a fairly exam-oriented way, much of the course, I set a more practical C++ system design exercise for the final supervision, giving students the opportunity to pull together in a creative way everything they had learnt so far, and to give them some much-needed practical experience that the tripos sorely lacks! I intentionally gave just a fairly lean specification to leave as much room for interesting design decisions as I could, instructing students to “make not-entirely-contrived use of as much of what you learnt in the course as possible”. I was really nervous about setting this one, as it was so different from any supervision work I’d ever been set myself, but my students rose to the challenge and all submitted a variety of excellent solutions.

Doing C supo work at 2am in 2023, marking C supo work at 2am in 2025, Jack’s after the supervisors’ dinner at not quite 2am in 2026 - some things never change
The two-supervision Prolog course in Lent term was harder to split by content, so for the first supervision I set a couple of easier past exam questions to introduce the ideas of unification and backtracking, as well as asking students to derive the key relations from which the solutions to pretty much every exam question can be composed - I remember when I was studying this course, just really understanding the core relations like take/3 was a huge help. For the second supervision, alongside two questions on difference lists (which sound complicated, but are literally just a pair of pointers to the front and back of the same linked list), I set a more fun logic puzzle question (the unfortunately-named jealous husbands problem) which could be solved in Prolog in many different ways, but didn’t require any “new” knowledge.
With all the work set, I also needed to plan the content of the supervisions too. Of course, I wanted to go through the work, but I also wanted to make sure I was asking interesting follow-up questions and covering all the ideas I wanted to, so for each supervision I came up with some more questions to discuss and sketched out a rough structure on top of the work.
Marking Supervision Work
When I was on the other side of the table, my supervisors would often set supervision work with a deadline of 24, 36, or in some cases as much as 48 hours before the supervision, which I always felt was rather unnecessarily early. Surely it couldn’t have taken them that long to skim through a handful of PDFs and scribble on some red feedback?
It was this devastatingly naive perception that led me to give my students until 6pm the day before the supervision to submit their work, which, with my first supervisions being at 10am a two-hour journey from my bed, gave me 14 hours to split between marking 8 submissions, enjoying Friday night, and sleeping. I’ll leave it to you to guess which one I neglected.
Before being a supervisor, I always thought marking supervision work was one of the easiest and least important parts of a supervisor’s job - after all, nobody really looks at their marked work in detail before the supervision, it just gives everyone something to discuss in the supervision. Now, however, I realise that the real point of marking supervision work is not for the supervisor to create “marked supervision work”, it’s to get otherwise-inaccessible insight into the student’s current understanding of the content, to begin to glimpse their mental model of key ideas so that once everyone sits down at the supervision table, the supervisor knows exactly the starting point from which to signpost the path to understanding. It’s so fun and rewarding as a supervisor to come into the supervision already knowing the students’ misunderstandings, because then I can ask exactly the right questions to help the students correct their mental models themselves.
But going from submitted supervision work to a whole nicely-thought-out supervision plan is not a quick task, especially late on a Friday night. I remember panicking on the train to Cambridge before my first ever supervision - in the light of the work I’d marked the night before, my well-prepared, polished supervision plan was beginning to look like a useless mess. Not because the students’ work was bad (in fact it was completed to an even higher standard than I had expected), but just because I was now beginning to see what each individual student needed, something I couldn’t possibly have included in my plan.
Now knowing this, I avoided much of this stress for future supervisions by adapting my planning approach to spend less time planning when I set the work and more time when I mark it. While I still generally stuck to a vague broad plan, I chose which points to emphasise, which extra questions to look at, and which rabbit holes to go down based largely on the work my students submitted, and I think as I got more practice with this over the two terms, my supervisions started to improve.

Spring arriving in Cambridge, and with it Prolog supervisions
The Actual Supervisions
With the supervisions planned, the work marked, the supervision room booked, and the Voi day pass activated, all that remained was to go to Cambridge and actually do the supervisions.
By the time I sat down for my first supervision as a supervisor, what had originally seemed like the most daunting part of a supervisor’s job now felt like the home straight. That’s not to say I wasn’t absolutely terrified, the imposter syndrome was hitting hard - I was so scared that I would be exposed as the clueless supervisor who doesn’t understand any of the content himself that I really felt like I was - but despite that, I did just about feel prepared. And as soon as the first students sat down opposite me and we started going through the content, me answering their questions and helping to clear up their misunderstandings, laughing together about code in the way only CompScis can, I finally found myself feeling like a real supervisor - and, at the same time, like a student again.
I’m so lucky to have had so many really smart and really nice students, and one thing I was surprised by was just how much I learnt from them! It seemed like almost every supervision someone would come up with a really interesting answer to a question that led us down a fascinating rabbit hole of experimentation to some knowledge that was new to all of us, whether that be by someone using a niche programming language feature, modelling a problem in a quirky way, or even just making a smart mistake. I’ve genuinely started finding myself using things I’ve learnt from my students during my real day-to-day work, and it makes me smile at my desk every time.
Conclusion
When I enthusiastically agreed to be a supervisor nearly a year ago, I didn’t quite appreciate just how much preparation is required to do a comparatively simple one-hour supervision, but neither did I appreciate just how satisfying and rewarding it would be. The satisfaction of suddenly understanding something new, guided by a smart and patient supervisor, was always the highlight of my supervisions as a student, but being that supervisor, having thought out the well-thought-out series of questions to give the student that experience, is another level of satisfaction entirely, an incredible privilege for which I am so grateful.
I’m also so grateful for the excuse to go back to Cambridge - I really miss being part of the university, so it’s been such fun to go back and not feel totally like a tourist (although the photos in this post are proof enough that I am becoming one). Alongside this, it’s been amazing to very slowly become part of the supervisor community, being generously invited to supervisors’ dinners, helping out (albeit loosely) with extra computer science events, and becoming one of the lucky few who students trust to answer their fascinating questions.
While my supervising for this academic year is now over, I’m really looking forward to continuing to supervise again next year, and I hope my supervisions will just keep getting better! To my students this year, thank you so much for your patience as I’ve been learning to be a good supervisor, and to those of the future, I can’t wait to share with you what I’ve learned. See you in October!

Thank you so much for reading this blog post! I hope it’s given you some interesting (or even better, useful!) insight into the experience of a new computer science supervisor at Cambridge. Please let me know your thoughts, I’m always so honoured to get emails from you all!