How to survive your first year of CompSci at Cambridge

17 June 2023 • 24 minute read

My first year at Cambridge has been nothing short of absolutely incredible. I’ve made some amazing friends, learnt a huge amount about Computer Science, life, and the world, competed in Switzerland, in part thanks to funding from the university, and of course, worked extremely hard as well. Yes, it’s been exhausting and very hard work, especially this term with exams, but I didn’t come to Cambridge for anything less!

In this post, I’ll be looking back at the year chronologically and sharing some of my experiences, as well as giving some advice along the way about how to survive your first year at Cambridge. Please feel free to email me if you want to discuss anything, as there’s only so much I can fit into a blog post!

This post has ended up so long, so here’s a table of contents:

This isn’t a post about applying to Cambridge - there’s plenty of other excellent resources for that - so we’ll start from the beginning of the first term, Michaelmas.

Michaelmas Term

Collage of photos from Michaelmas term

Clockwise: matriculation, Trinity bridge in the fog, HackX (where we came 3rd!), group photo for the end of term

My first year at Cambridge officially began with matriculation, a ceremony where students formally become members of the university. It was really exciting to feel like a proper Cambridge student from the very beginning! There was a formal dinner in the evening, which was a lovely opportunity to get to know some of the other students in my year and on my course, as well as to eat some fancy food. Formals happen several times a week at most colleges, and it was great fun to go to formals at other colleges with my friends as well.

After Freshers’ Week, which was quite overwhelming but exciting nonetheless, lectures began. Michaelmas term had the most courses of the three terms, and I’ll briefly mention a bit about each of them in the order they were taught. There were usually 2-4 courses on the go at once.

Courses

  • Foundations of Computer Science: functional programming concepts in OCaml. The lecturer, Prof. Anil Madhavapeddy, was one of my favourite lecturers of the year (he even kindly gave me his book!), and while I found the course fairly straightforward, his lectures were really engaging and enjoyable. There were five “ticks” (assessed exercises) for this course, which don’t count towards your final grade, but if you fail one, you lose 10% of one of your exam papers! Fortunately, the ticks for this course were pretty easy, but they were useful to ensure that we were keeping up with the course.

  • Digital Electronics: Boolean algebra, combinational logic, and sequential logic. This course was easy until the last few lectures about transistors, where my lack of physics A-level let me down (fortunately it didn’t come up in the exam!). The lecturer wasn’t great, but that might’ve been because I didn’t find the course overly interesting. There were four practical ticks for this course, involving building some pretty complicated circuits (or at least, I found them complicated), which were really fun and the highlight of the course, with the exception of the time pressure: we only had 3 hours to build each circuit!

One of the Digital Electronics ticks

The final Digital Electronics tick allowing me to draw a suspicious character

  • Mathematical Methods I: a variety of maths, pretty much the A-Level Further Maths topics but much more difficult and in much more detail. This course was shared with the Natural Sciences students, and I found it the most challenging course of the term. The lecturer was pretty good though.

  • Object-Oriented Programming: Java and the theory of object-oriented programming. This course felt a bit like “learn Java, and also here’s a million definitions to remember”, but the lectures were still interesting (if a bit disorganised) and the course was enjoyable.

  • Discrete Mathematics: proof, numbers, sets, and formal languages. I found this course very difficult, as I’d never done this kind of maths before, but for this reason it was one of the most interesting and enjoyable courses, and Prof. Marcelo Fiore was a brilliant lecturer. The formal languages part of the course was lectured by a different professor, but when I say “lectured”, I mean “provided ad-riddled recordings of last year’s lectures on YouTube, despite the fact that he was physically in the room for the previous lecture, and simply left the room instead of giving the lecture”. This was really disappointing, but I would like to think that enough people gave negative feedback that he might actually give the lectures next year? We’ll see.

  • Introduction to Graphics: ray-tracing, OpenGL, and colour spaces. A lot of my friends didn’t enjoy this course, but I really enjoyed it. The two ticks were very difficult (especially the infamous second “rotating robot” tick), but I enjoyed being able to see the effects of the theory we were learning. I spent a week over Christmas building my own WebGL-based game engine called TSGL, which I never ended up writing a full blog post about, but you can try it out or read about a bug in it.

One of the Graphics ticks

The ray-tracing tick, with the required scene on the left and my addition on the right

  • Databases: entity-relationship and relational models, SQL, document and graph databases. This was another course my friends didn’t enjoy (maybe they just have higher standards than me?!) but I found it pretty interesting. The lecturer, Dr. David Greaves, was good and very entertaining (if you understood his weird jokes), and the ticks weren’t too bad. One of the textbooks I read before coming to Cambridge was Designing Data-Intensive Applications by Martin Kleppmann, which helped me to appreciate the real-world applications of the theory we were learning - the course didn’t go into much detail about the practical side of things or distributed databases, but when this came up in the exam I was very grateful for having read the book!

Supervisions

The key to Cambridge’s academic success is its system of “supervisions”: for each course, we undergraduates have weekly sessions with a professor, postdoc, or PhD student who are experts in the field, alongside 1 or 2 other students, where we discuss the material we’ve been learning to cement and extend our understanding. Supervisors will set work to do before the supervision (usually around 3 hours of work but for harder courses it can take double that), and then in the supervision, we either go through the work to fix misunderstandings and clarify concepts, or if everyone is happy with the work, the supervisor might discuss some more advanced topics or parts of their own research.

Supervisions are incredibly valuable and very enjoyable too (provided you’ve done the work!). At first, it was a bit daunting asking questions because I didn’t want to seem like a fool in front of the supervisor and my peers, but I quickly realised that there’s very little point even being in the supervision if you don’t use it to improve your understanding. I can’t believe how patient all the supervisors are - if I were an expert in my field, literally the last person I would want to be explaining it to is a first-year undergraduate, because we’re at the absolute peak of thinking we know everything, but in reality we know nothing!

Most of my courses were supervised by my Director of Studies (DoS), Dr. John Fawcett, who is a brilliant supervisor and DoS. Unlike many DoS’s, he organises so much extra stuff to help us beat Trinity achieve our potential, such as extra introductory lectures to difficult courses, examples classes for Digital Electronics, revision supervisions, mock exams, and pizza. It can feel a bit much at times, but I’m really hoping that my exam results on the 7th of July will show that it was all worthwhile! His supervisions were definitely the most intense of all my supervisions - when you go in and sit down, he’ll ask you some very difficult question and stare at you unblinking until you come up with some sort of answer, and when you finally think you’re in the clear, he’ll give you an even harder follow-up question! However, this was such a good way to learn, and he’s so good at explaining things that I always left the supervisions feeling like I knew the content much better than I did before.

Life

Believe it or not, I did actually do things other than work. I made a big effort to talk to and get to know lots of different people, which I found perhaps the most challenging part of the term, but by the end of term I had somehow found an amazing group of close friends, as well as plenty of other friends. The thing I was most worried about before coming to Cambridge was making friends in the university environment, but I found that if you just make the effort to sit in different places in lectures and don’t actively avoid social interaction (this part is rather important), you’ll meet lots of people and make friends. I also joined the university chess club, which was a nice escape from work on Monday evenings and another good way to meet people.

I went to lots of concerts at a number of different colleges and the West Road Concert Hall, including Saint-Saëns’ Organ Symphony at King’s College Chapel which was incredible to hear blasted out on the massive organ. Cambridge is a very musical place, and there’s so many concerts it’s hard to keep track of them all, but I found this website called Cambridge Concerts which lists all the concerts in Cambridge, which was very useful. I joined the Trinity College Music Society despite not being a member of Trinity, which gave me free entry to lots more brilliant concerts.

Towards the end of term I took part in HackX, which was amazing, but I’ll let you read about that in my blog post about it! (Spoiler: we came 3rd!)

By the end of term I was completely exhausted, and when I returned home I slept 16 hours a day for the best part of a week. The Cambridge experience is ridiculously intense, and after all three terms I’ve needed a week to recover, but from what I’ve heard this is normal, and I’m sure it’ll get easier as I get used to it.

The Christmas holiday wasn’t much of a holiday: I spent most of my time writing up my notes and going over the course material, as well as preparing for the mock exams in January. One thing I’ve learnt this year is you never get a break at Cambridge!

Lent Term

Collage of photos from Lent term

Clockwise: cooking evening (I made a cottage pie, not pictured but it was so good), in the snow on King’s Parade, post-formal picture at Downing, CompSci pizza lunch group photo

I got back to Cambridge in the second week of January for the mock exams, after which lectures began. Cambridge no longer felt like a strange new place - it was starting to feel like home - so Lent was probably my favourite term. The term flew by, and before I knew it, we were in Switzerland for a hackathon… but first, let’s talk about the courses in Lent.

Courses

  • Algorithms 1: sorting, searching, dynamic programming, and trees. The course started easy but rapidly got very mathematical and difficult, but it was a very interesting and enjoyable course nonetheless. It was lectured by the same lecturer as formal languages, but for this course he actually put in the effort to give the lectures, and they were pretty good. I found it very satisfying to see how the seemingly-overcomplicated algorithms we were learning were carefully designed such that every little detail was necessary for the algorithm to work, and to work as efficiently as possible. The ticks were okay, but “held our hands” a bit much for my liking, which was surprising - I would’ve thought that, especially for this lecturer, he would’ve wanted us to figure things out for ourselves!

  • Algorithms 2: graphs, networks, and amortized analysis. This course had a similar vibe to Algorithms 1, but with a different lecturer who was at the same time exactly the same as and the complete opposite of the Algorithms 1 lecturer: to quote my friend quoting someone else, they are “two sides of the same coin: evil and holy” (disclaimer: I do not claim to endorse this statement). The lectures were very good, and I especially liked how well-structured they were: a problem would be informally then formally introduced, perhaps a naive solution would be discussed, then the important algorithm would be either derived or introduced and the proof of correctness explained. This was one of the hardest courses as the proofs were very difficult to understand, but I enjoyed it nonetheless.

  • Discrete Mathematics continued from Michaelmas.

  • Mathematical Methods II was a continuation of Mathematical Methods I from Michaelmas, but with a worse lecturer and even harder content still.

  • Machine Learning and Real-World Data (MLRD): naive Bayes classifiers, hidden Markov models, and social networks. My friends, being much more into ML than I am, had a lot to say about this course, namely that it was not really a machine learning course. I agree that it approached the topic from a bit of an odd angle, but at the same time, given my complete lack of prior knowledge about anything ML-related, I found it very interesting and I definitely learnt a lot. However, the ticks had pretty much nothing to do with ML: it was all about implementing algorithms in Python, with no knowledge or understanding of the ML concepts required. It was nice to sit in the Computer Laboratory with my friends and watch the sunset while distracting each other from our independent work, but I found the ticks to be a bit of a waste of time.

Sunset from the Computer Laboratory

Working very hard on MLRD ticks in the Computer Laboratory

  • Operating Systems: OS structure and concepts. From what I’ve heard, compared to other universities, this operating systems course is very theoretical, and not very practical. I found it pretty interesting - systems programming is one of my biggest interests - but I can see why some people didn’t like it. I definitely would not be able to write an operating system after this course, but I feel like I have a good understanding of the important concepts of operating systems, so learning how to write one now seems like less of a daunting task.

Life

I continued to go to the chess club on Monday evenings, and I also played for the Churchill College Chess Team in the university league, in which we came 5th out of the 31 colleges, which I was very pleased with! I’m not sure how much I contributed to this success with more losses than wins (only just), but I did draw a game against one of the top players from Trinity so I’ll say it was all my doing.

I went to even more concerts, including Mendelssohn’s Violin Concerto and Dvorak’s New World Symphony IN THE SAME CONCERT at Trinity, which was fantastic. I also heard Mahler’s Symphony No. 1 and Grieg’s Piano Concerto, which were both amazing as well. It’s such a privilege to have all this awesome music on my doorstep - at home there’s maybe a couple of concerts a year a half-hour’s train journey away - and I think it’s safe to say that I’ve been making the most of it!

I went to a formal at Downing, which was really nice, and a special Computer Science formal at Churchill, which was free, had extremely good food, and was in the Fellows’ Dining Room, which had a great vibe.

After the end of term, I went to Switzerland for START Hack 2023, but I’ll let you read about that in my blog post about it! It was an amazing experience, and I’m so glad I went. The trip was partially funded by my college, so I’m very grateful to them for that.

My Easter holiday after Switzerland was even less of a holiday than the Christmas one: with exams looming, I spent most of my time finishing my notes and doing past paper questions. It was tedious and boring, but it definitely reduced my stress when I was back at Cambridge so it was worth it.

Easter Term and Preparing for Exams

Collage of photos from Easter term

Left to right: King’s in the sun, doing past paper questions by the river in King’s, going over my notes by the river in St. John’s

Everyone told me Easter term would be a horrible one, and yes, the workload was insanely high and I’ve never been more stressed. Exams are stressful! Revision is arguably even more stressful, especially when lectures continue right up until a week before exams! The ridiculous group project they made us do mere weeks before the exams maybe takes the cake!

However, I found ways to keep up with the work and not get too stressed, the most important of which was working outside. I worked outside in a number of different colleges, including King’s and St. John’s by the river, and Downing in its gardens. Contrary to what my DoS told me, I was actually very productive sitting on a rug under a tree. However, doing full past papers in exam conditions isn’t really possible by the river with punters shouting historical facts of questionable accuracy to their guests, so to try and get the “exam vibe” I did most of my past papers at 9am in the library, which I actually found very useful.

But before the exams, there were a number of courses still to get through:

Courses

  • Introduction to Probability: probability theory. This wasn’t too difficult of a course, and it was quite interesting. Both lecturers, Prof. Mateja Jamnik and Prof. Thomas Sauerwald, were very good at explaining the concepts, and the lectures were very well-structured.

  • Mathematical Methods III was a continuation of Mathematical Methods I and II, but with a worse lecturer still and even harder content still.

  • Interaction Design: user interface design and evaluation. I have to be honest, I didn’t really enjoy this course. The lectures were actually rather good, but the content just didn’t interest me all that much. There was a lot of somewhat-irrelevant definitions to memorise, and only maybe a quarter of the course could ever be useful to anyone who doesn’t become a full-time usability analyst. The worst bit by far, however, was the group project. We had to design, build, evaluate and present a weather app, and it was a complete waste of time. I’m not saying it wasn’t enjoyable - I like building apps - but with only weeks until exams, it was such a bad use of time. My randomly-selected group wasn’t bad at all, and we did make a genuinely good app, but it was so much work at the wrong time.

    The presentations were an absolute disaster: the department thought it a good idea to give all 28 groups full access to one single Google Slides presentation which was then presented, and whatever you’re imagining to have happened, it was 100x worse. Sabotage, spam, and general chaos ensued, and while some of the smaller, more discreet changes were admittedly pretty funny, a lot of the presentations were ruined and it was a complete waste of time for everyone involved. I’m not sure what the department was thinking, but they definitely won’t be doing it like that again next year!

Our presentation title slide

The title slide from our presentation of “Hot Dog”, a weather app for dog walkers

  • Software and Security Engineering: cybersecurity, safety, and software engineering. This was a brilliant course, and was completely different to any of the other courses this year. It was taught through lots of case studies and while its lack of clear structure and its ambiguity as to what was examinable made it much worse from an exam perspective, the course as an “educational experience” was fantastic. The lecturer, Prof. Ross Anderson, was very engaging and immensely knowledgable, and more than once my friends and I stayed behind after the lecture to discuss the interesting political and economic issues that were raised. I was disappointed to learn that he doesn’t lecture any other courses until the 4th year (which I may or may not stay on for).

Life

Exam term. Enough said.

Exams

And so, we’ve got to the dreaded exams. In the first year, there are three three-hour Computer Science papers, each worth 25%, and two three-hour maths papers, each worth 12.5%.

Computer Science

For Computer Science, each course only appears on one of the three papers. Most courses have two questions of which you choose one, but Discrete Mathematics is 2 from 4, and MLRD is 2 from 3.

I feel like my CompSci papers went exactly as I expected them to. Going into the exams, I felt quite well-prepared, and I was able to give what seemed to me like a reasonable answer to all the questions I attempted, with one exception. I made the mistake on the first paper of choosing a very hard question from Algorithms 2, instead of the easy one for which I had literally revised the content the night before. My proof was extremely hand-wavy and I’d be surprised if I got more than 6 of the 20 marks. I was (and still am) very annoyed at myself for that, but I’m hoping that it’ll all balance out overall.

The strategy for CompSci is pretty much to learn as much as you can, at most giving up on a very specific part of each course if you’re really stuck, as it’s unlikely that both questions will be on it. I gave up on the transistors part of Digital Electronics and Brandes’ algorithm in MLRD, and I was lucky enough that neither came up.

Maths

For maths, each paper has two sections: Section A, worth 20 marks, with 10 short and supposedly-easy questions, and Section B, worth 100 marks, with 10 longer questions, of which you choose 5. All the content is supposedly able to come up on either of the papers, but in practice, the first paper tends to be earlier content whereas the second paper tends to be later content. All the maths past papers are basically identical in structure and questions, so despite it being one of the hardest courses for me, just doing past papers and understanding the solutions was hopefully enough to get me through.

The maths papers this year were far easier than any of the past papers I’d done, which was surprising and a little bit worrying, but hopefully it’s a good thing!

The strategy for maths is very different from that for CompSci: since you choose 5 from 10, you can safely cut out a large amount of the course and still have a very high probability of being able to do 5 of the questions. I cut out all of Fourier series and partial differential equations, and while this meant there were a few questions that I couldn’t do, I was still more than able to do 5 of the 10 questions on each paper.

After Exams and Summer

I’m writing this only a few days after my last exam, but I have done nothing but celebrate since then! There are May Balls, garden parties, barbeques, and all sorts of other events going on, and the weather has been unbelievably hot and sunny. I played in the Cambridge University Chess Championship and came 12th, which I was very pleased with as I was the lowest-rated player in the tournament.

I’m not going to get much of a break, however, because I’m excited to announce that I’ll be joining Nutanix in Cambridge for a 12-week Software Engineering internship starting this Monday! I’ll be working on their hypervisor team, and I’m really looking forward to learning all about virtualisation and distributed systems.

Despite almost my entire summer being taken up with a very exciting internship, I’m going to be spending some weekends away with my family at home and in Venice, with my friends in London and Toronto, and by myself exploring Cologne, Copenhagen and anywhere else I can get a cheap flight to! It’s going to be a very busy and full-on summer, but I can’t wait to get started.

Other Thoughts That Didn’t Fit Anywhere Else

Skipping lectures: A lot of people skip a lot of lectures, which is something that surprised me very much. Personally, I am ashamed to admit that I did indeed skip one single maths lecture this year to go to the King’s Coronation in London (I watched the lecture online on the train to somewhat make up for it). From a financial perspective, skipping lectures is literally just wasting your tuition fees, and from an educational perspective, most people skip lectures to sleep in, so no matter how bad the lecturer is or how boring the content is, you’re still going to learn more by going to the lecture than by staying in bed. I understand that some people skip lectures because they find it easier to learn from the notes, which I guess is valid (if it’s actually true, which is very hard to measure), but I’m not that kind of person.

Me and the rest of the world at the King’s Coronation

Me and the rest of the world braving the rain for the King’s Coronation

Food: I mostly cooked my own food - in Michaelmas I was absolutely abysmal at it, but I’m a lot better now - and I’d say that’s the best and cheapest option if you can be bothered, but hall food is generally okay. In Easter term I was focussing more on exams so I had more hall food, ready meals, and instant noodles, but I’m looking forward to getting back into cooking over the summer. I ate out every so often, and my favourite restaurant in Cambridge is the Korean restaurant Yori, which is a bit expensive to go to regularly but absolutely delicious. West Hub, a university canteen near the Computer Lab, has really good food and used to have a massive subsidy meaning it was by far the best place to have lunch, but they’ve reduced the subsidy now so it’s no longer any cheaper than hall.

Note-taking: I took notes by annotating lecture slides on my Surface Pro in OneNote, then over Christmas and Easter (and during Easter term), I wrote them up into LaTeX: I condensed the entire year’s notes into 30 pages of A4, which I printed out and am very proud of. They were incredibly useful for both myself and my friends to revise from, and I’m planning on doing the same thing next year. I found the process of writing them up very valuable, as firstly, it forced me to go over all the content again, and secondly, in order to effectively summarise something, you have to understand it fairly well. I’m not going to share them further because I don’t want to be responsible for teaching incorrect information - my friends found more than 30 mistakes between them, so it’s safe to assume there are more. Being a physical encoding of my mental understanding, having my friends find mistakes was like unconscious studying for me - they were finding mistakes in my own understanding - and I’m very grateful to them for it!

Final Thoughts and Conclusion

I’ve had a fantastic first year at Cambridge - it’s been everything I hoped it would be! Thank you for getting to the end of my longest blog post yet, and I’ll leave you with some of my most important tips for anyone starting Computer Science at Cambridge this year:

  • You won’t be the smartest, but you won’t be the dumbest either. If you got into Cambridge, you’re smart enough to be here. Don’t worry about it.

  • Ask questions to your DoS, supervisors, lecturers, and friends. That’s the only way you’ll succeed. Ideally wait until after the lecture to ask questions to avoid disrupting the lecturer, but if it needs to be clarified immediately (e.g. a typo in the slides or something simply wrong) then ask away.

  • Don’t waste the Christmas and Easter vacations. There’s no time to consolidate your learning during term-time, so if there’s anything you don’t understand, make sure you understand it before the next term starts. You’ll always need more time, but make the most of the time you have.

  • Have a life. You’ll do better in exams if you’re happy and healthy than if you’re miserable and stressed, even if going out to lunch that day means you do one less past paper question. Just make sure you don’t go too far the other way!

  • Enjoy the most beautiful city in the world. Go outside! I know it’s hard for us CompScis, but it’s worth putting in the effort to explore and make the most of the city. It really is the best place to be a student.