# 4th Year DoC Module Feedback

# Autumn Term

# CO332 Advanced Computer Architecture

Really really interesting module, and Paul Kelly is a great lecturer. Fair warning: there’s a lot of content

You will never feel like you understand everything or anything, be prepared to go back and re-read content and do independent reading. Courseworks are interesting and challenging, pay attention to writing style and readable and well labeled graphs.

Exams are a bit of a unknown but you can usually wishy-wash a sort of answer to anything. (2019/20), and the CWs involve doing an investigation and writing it up in a report of around 5 pages in length. The exam involves reading a modern article on computer architecture and being asked questions on it - IMO a very nifty way of examining a module while also keeping the content interesting. Bonus: the content overlaps with Hozlger’s section of Performance Engineering. Would highly recommend ACA, but be careful if you’re planning on taking other high-time-commitment courses as well (e.g. Robotics, Type Systems). - Fawaz (2019/20)

Interesting module but can be very time consuming. Courseworks are not really difficult but will take a while to do well. Paul is a great lecturer and can make the dryest of lecture material interesting. Also he answers everyone's questions and keeps the lectures interactive. Exam requires actual understanding of content but isn't too challenging if you revise properly. - Jamal (2019/20)

Paul Kelly is a good lecturer, except his slides are not understandable without him explaining. He talks about a lot of interesting concepts in architecture, but the coursework took quite a long time. Requires non-trivial amount of work. Exam involves an article to read about a specific given architecture. - Fangyi (2018/19)

Way too much content, really badly explained, unsure what parts of the content we actually need for exam. However, he is relatively nice with his marking in the exam, and will try to give you marks for saying sensible stuff even if not really correct - Ethan (2019/2020)

Lots of content but it’s all cool and some current stuff as well e.g. Spectre/Meltdown. Discussion-based so turn up to lectures, actually really fun. CW is ok, exam is not that hard. - Omar (18/19)

Excellent course and lecturer. Really interesting and engaging if you’re into computer architecture. There’s a lot of content, but the coursework and exam is really fun and Paul challenges you to think in the lectures, coursework and exam. The marking in the coursework and exam is really kind, since they know it’s a hard course - Matthew (2019/2020)

Great lecturer who cares about the students. We get to ask questions and he makes a point to answer everything. Good module if you like Computer Architecture and are genuinely interested in reading research papers or going a little bit over the spectrum of last year’s course. - Maëlle

A must-have if you’re keen on computer architecture. For me, it was definitely the best module I’d taken in term 1 (my other choices were Simulation and Modelling and Intro to ML). Lectures were enjoyable and I really liked the exam format (based on studying a recent research paper) even though it made revising with past papers difficult. - Maks (2020/21)

I think you should be careful about taking this module if you’re not interested in computer architecture and you only want easy marks. ACA will definitely not give you easy marks since Paul seems to expect deep and concrete answers in his exams (unfortunately, I realised that only after seeing my results and the general exam feedback). On the other hand, if you’re interested in computer architecture, my previous opinion above still holds: it’s a great module and you should take it! - Maks (post-exam addition, 2020/21)

Honestly best course and best lecturer. Paul Kelly can seemlessly explain any complicated concept, and even though everything was remote, his lectures were great. In terms of the course content: when it comes to coursework, Computing students might enjoy it slightly more than EIE students, as most of it rotates around the high level perspective of computer architecture (in CW1 you optimize a processor’s configuration for a specific program, and in CW2 you optimize a C program for a specific processor). On the theory side (lectures), you touch on many complicated and fundamental computer architecture concepts to design a processor or optimize software when interacting with it, and you can use those in other modules or projects or even low-level / hardware interviews (especially EIE). For the exam, it’s different than the usual, you get a paper on a recent processor to study a month before and most exam questions are about applying the lectures content to that processor (even though the exam went okay-ish, I'd take that module again). A definite go if you are in EIE – Jaafar 2020 / 2021

Easily my favourite course from Autumn term. Paul Kelly is really passionate about the subject and always happy to answer questions. Coursework was way too time consuming though imo. Exam was actually quite interesting since it’s based around a research article. Even if you aren’t sure of an answer – if you explain your reasoning, he will generally give credit I think. For revision, a bunch of us got together and answered past paper questions using this year’s article (also, make sure you know the article really well) - JZ, EIE, 2020/21

# CO337 Simulation & Modelling

Mixed feelings here, probably because I picked this module as a filler rather than something I really wanted to study. Giuliano's part was more boring for me than Tony’s (= Tony was more interesting) and I seemed to struggle more with the Giuliano’s stuff, especially in the exam. - Maks (2020/21)

Tony was great, found the course interesting but felt niche. Giuliano's side of the course feels very separate from Tony's not sure how much collaboration went on. - DH 19/20

Tony’s half is more interesting but he whizzes through it pretty quick, Giuliano’s is more difficult and he can be quite monotonous. Some A-Level maths (graph transformations, differentiation) involved as well. Overall, quite an engaging course. - AN 2019/20

19/20 - Tony bae as usual. Interesting course, I really enjoyed it. Didnt go to any lectures from Giuliano, but he is great on Panopto x2. Memorising formulas is a bit boring but you have to do some of it because you wont have time to deduce everything in the exam! Still, glad I took the course. (Caz)

Overall pretty great course, mainly involves memorising equations and some fairly easy maths (read as: take this if you’re JMC). The exam is fairly standard every year. Giuliano can put you to sleep though. - Fawaz (2019/20)

# CO343 Operations Research

Really great course if you’re interested in the maths side of optimisation and are okay with a bit of Linear Algebra and game theory. Giuliano’s stuff seems confusing at first but he’s usually a really nice marker and doesn’t set too hard exam Qs and Ruth is amazingly passionate about the course and teaches her side of things really well. Tiger (2019/2020)

Ruth Misener was easily my favourite lecturer of autumn term. - DH (2019/20 Computing)

One of the most interesting modules I’ve taken (personal opinion). Noteworthy topics include linear optimisation (aside: this is a prereq for CO477 Optimisation and CO422 Computational Finance), game theory and minimax. Applications of knowledge in this course include optimisations in business (which business decision?) , finance (which investment?) and logistics (which route to take and where to build warehouses?). Worth noting that an ex-CEO of Singapore Airlines did a Masters in OR at Imperial (not sure if he applied it for route-planning, which--interestingly--appeared as a past year question in this module). First half (Casale) is a tad bit slow (but some parts are heavy), and the second half (Misener) is well-paced and well-taught. I genuinely felt motivated to learn the material, and while there are some proofs to memorise, they aren’t heavy and come naturally once your understanding is sound. Coursework is doable, exam can be difficult (and contain some unseen material) but okay if you do the tutorial sheets (ditto Kelvin). For EIE: No extra effort required. Slightly useful to go through some basic material in Logic to make sense of some logical statements (in Integer Programming), but not strictly required. For those considering taking EEE Maths for Signals and Systems: while both modules cover a lot of linear algebra, there isn’t much overlap except for some matrix fundamentals. I did not see taking both having an advantage/disadvantage. - LH (2019/20 EIE)

I suck at linear algebra but I sat down and forced myself to understand the maths/symbols in every slide and gave myself enough time to make flashcards and write down all the proofs to memorise. If you have faith in yourself to do that, you'll do well in the exam since the lecturers are good, the questions from tutorial sheets will likely come up in the exam and are very useful, and all the techniques are useful and somewhat learn-by-rote. Definitely do if you did decision maths for your A levels. - Kelvin (2019/20)

Like D1 and D2: mostly about Simplex and some other miscellaneous stuff. Probably useful for \business modules, but very tedious, not super interesting, fairly easy CW, but exam is random. Sometimes super easy, sometimes a total brainfuck i.e. 2018 paper. Overall: would recommend as a 3rd/4th module for the term if you can’t choose anything better, fairly straightforward, but not very fun to do. - Dima (2018/19)

Not very enjoyable and not very easy but overall fine and I’d recommend it over other worse courses.

The whole thing is about linear programming problems, the lecturers are good, with plenty of tutorial sheets and resources. I found the exam fairly tricky but with enough work it’ll be fine. - Rohan Pritchard (2018/19)

Easy course and the exam is also fine - Blair (2019/20)

Incredibly dull in my opinion. Coursework marked harshly. Would not do again. - JZ, EIE, 2020/21

# CO382 Type Systems for Programming Languages

Agree with other comments that this is a good module, and that exam is very doable (if you put in effort and time to learn definitions, which are then used in derivations). While proofs are difficult and are bulk of the lectures to motivate applications and derivations, fortunately they are unexamined. Steffen is an amazing lecturer who loves the content and does his best to motivate you to appreciate type systems. While this course mostly deals with theoretical CS, its applications are not too far-fetched (e.g. implementing a type inference system (duh)). This course also serves as an ad for Steffen’s research topics, which he encourages students to consider by the end of the module.


For EIE: DoC students will have an advantage of knowing lambda calculus and functional programming (though these aren’t strict prereqs and he will go through some relevant content). I found it helpful to go through Dr. John Wickerson’s lambda calculus lecture PDF: https://johnwickerson.github.io/talks/modcomp_lambda_2015.pdf, as well as a Haskell crash course: https://www.youtube.com/watch?v=02_H3LjqMr8). It is possible to score well without revising these fundamentals though. Also, this course is (very slightly) helpful if you proceed to take HLP in Spring EEE, which uses F# (F# implements a Hindley-Milner type system, briefly covered in this module) \


LH (2019/20 EIE)

Nice module. If you took Steffen's Discrete Structures lecture in first year, you'll be as, if not more, confused during his lectures in this year. However, the coursework is relevant and you can get by by printing the notes at the start of the term and understanding them + going through their questions in your own time. (Notes have more detail than the lectures, so bear that in mind and don't study unnecessarily.) Exam is pretty much the same as every year -- you can get by well if you do all the past papers. Steffen seems to use Panopto nowadays (at least, in our lecture). - Kelvin (2019/20)

Pretty nice module overall. Coursework is relevant and almost all the questions are similar to the ones you'll be asked in the exam. The exam doesn't contain any proofs but coursework might. The exam just uses the questions from previous papers and the exercises. Notes can be decent sometimes but they have a lot of detail which isn’t necessary for coursework or exams and might end up confusing you. Steffen really loves the content and you can tell but he also understands that it's not as easy for us and will explain stuff if you ask. - Jamal (2019/20)

You will almost certainly be confused as hell during the lectures and Steffan ends up spending most of the time going through proofs that are unexamined and just confusing the heck out of you. However, the papers are basically the same every year so you can very easily prep for them and get good marks even if you don’t understand what’s going on in the course most of the time. The stuff that I did understand was interesting, albeit a pain to understand. - Sam Trew (19/20)

The content is actually pretty interesting once you get around to understanding it, of course it's taught by Steffan so his notes are usually much more detailed and succinct than his lectures. He goes through a fair few examples from the notes in the lectures, and even points out quicker ways to write out answers. Even though I enjoyed this module, it was one of my worst modules as he can be very strict when it comes to marking the exam papers. - Anindita Ghosh (19/20)

I did not enjoy this course, the lectures, coursework or exam. My advice is to only take this course if you know you will be interested. Yes, the exam (and seemingly coursework) tend to be repeats year on year, but as a result the scaling is absolutely horrible. Make one small mistake and game over. This is surely not a problem if you know you are interested in the content, but I’d really advise against taking it just because it’s seen as easy. Many students this year received much lower results than expected on this course - Matthew (2019/2020)

E> asy exam (he takes questions from tutorials and past papers) If you’re into programming language, this is one of those “must-take” ones. The course involves some proofs and derivations, similar to those in Models of Computation. Steffen uses whiteboard and jumps through notes, but things are reasonably organised. Notes are well-written and self-contained. - Fangyi (2018/19)

Probably the only course useful if you’re into theory. Exam is very predictable (80% of the questions are the same every year) and the coursework is very doable, but there is no panopto 😠 (I only attended 4 lectures in total and started learning what a type is 3 days before the exam and still did fine, so good course lol) The background required is just models of computation in the second year - David Ang (2018/19)

If you enjoyed Models of Computation, take this. It’s theoretical and proofs require some concentration, but once the ideas behind each presented type system click it becomes very easy. Exam was recycled from past papers so it was pretty straightforward as well. It’s also fun if you’re into strongly typed programming languages or programming languages with rich type systems - Radu Lacraru (2018/19)

# CO395 Introduction to Machine Learning

Pretty well taught, good introduction. Get a good group for the coursework. If you’re EIE: do the DoC ML module if you want more practical stuff. Haven’t heard any good things about EEE ML course, which is also a lot more theoretical. - JZ, EIE, 2019/20

It’s a good and broad introduction to ML, I’d definitely recommend it to anyone interested in this topic. The module made me realise there was more to machine learning than just neural networks. For example, I enjoyed learning stuff about evolutionary algorithms. - Maks (2020/21)

Really useful course for teaching you the basics of ML and also how a lot of well known ML algorithms and models are implemented, since the labs make you do this in groups yourself (For both Decision Trees and Neural Nets) and write a short report on it. The lecturers try really hard to be interesting but couldn’t get people to participate or calm down that easily, although I’ve found the concepts they taught to be really useful in my placement. The exam isn’t too bad either - Just learn standard stuff that comes up in past papers. Tiger (2019/2020)

Recommend it for the courseworks, which will take most of the time you spend on this course but it’s a good practice. The lectures themselves are a bit useless and shallow, especially if you take Computer Vision which explains the same concepts more in depth. Exam is easy and asks you definitions and to execute common algorithms by hand.- Theo (2019/2020)

Definitely an introductory course but I didn’t have much ML experience so was useful. Covers a reasonable amount of ground but nothing in depth as mentioned above; I think this is the best approach at this stage (third year) as gives you nice foundation to build off for future ML work (or gives you just enough info if you don’t plan to do more ML). Not a lot of content and most of it is reasonably easy. Would definitely recommend. - Avish (2019/20)

Very much ML 101, covering the basics and a few applications of ML. The two CWs are worth 30% of the module with the 2nd one being weighted more than the 1st. Both CWs take a lot of time, so be sure to make time with your group to really crack on. Nice overlap with Computer Vision, recommend taking on both. - Anindita (2019/20)

The course itself it pretty interesting (if you pay attention and read the notes lol) and the CWs are actually really cool. It felt like one of the most useful and practical applications of computer science I’ve had and really gave you a good and deep understanding of the module. Would highly recommend you do the CW together as a group as otherwise it really won’t mean much. The exam is also pretty standard and straight forward. - Sam Trew (19/20)

Fairly easy as a module, very tedious CW with a lot of report writing. Content is very manageable, fairly interesting as an intro to ML, but lectures are not worthwhile. CW can easily push your grade up, as it is 33% rather than 15%. Overall would recommend: not too difficult, enjoyable. - Dima (2018/19)

Would also recommend, the coursework is good (and in groups which makes it more fun), exam this year was probably easier than they’ll make it next year but I think it’ll still be approachable, and I’m using a lot of this stuff in my placement. It’s definitely an intro course… They touch on a lot of subjects but don’t go very deep into anything, which has its pros and cons. - Rohan Pritchard (2018/19)

Fairly bland course but taught well. Would revere recommend. Isaac Hutt (2018/19)

# CO408 Privacy Engineering

Pretty good course when I did it 2 years ago, the lecturer (if it isn’t Naranker) is really into it and there is some super interesting stuff you can learn. Also the coursework isn't that hard.

It’s very interesting. Naranker is still doing half of it - confirmed not too helpful. Other guy is very good.

First half is very concept based but also based around real world applications, useful tutorials to help drive home the things you learned, also Yves is a very engaging lecturer, and his flipped classroom style definitely worked well for remote learning. On Naranker’s side, more concept based than real world based; slides are also very chunky and kinda hard to understand. Coursework was based on Naranker’s half and was doable in a few days. Overall, a decent course though you do have to put in a couple of hours to really wrap your head around the stuff covered in the 2nd half. – Andy G (online learning)

My opinion on the content is probably biased as I figured out too late I just wasn’t interested. However, the course is very segmented with lectures not really tying together at all. Everything remains very separate and taught by 3 different lecturers. Also, in our year, half of the entire module ended up relying on about 1/10th of the content which was pretty shocking if you weren’t as comfortable with that specific bit. - Sam Trew (online)

# CO422 Computational Finance

Not required to work in finance but helps to understand the world. JMCs should take this, it’s an easy A.

Very interesting course - it’s purely maths though, you won’t be doing much “computation”

Would not say its ‘easy’... Unless of course I am not smart enough lol.. Coursework is an easy 90+. Exam is another story I think. Lots of proofs via arbitrage and lots of lagrange optimisation. Not the easiest exam. CW, as mentioned, is easy.

An interesting course, and a nice follow-on from ‘Finance and Financial Management – BPES' with a more mathematical focus (a lot of maths that requires practice - start early). The coursework was free marks. I thought the exam had gone quite well until grades were released... look out for that final question that we weren’t taught that was worth 20% of the paper! This question was actually a tutorial question from Computational Optimisation in second term. - Giovanni P (20-21)

# CO438 Complexity

Amazing course. It’s fairly hard but introduces you to a lot of theoretical comp sci that is useful to have in mind when thinking about larger problems

It’s a challenging theory course. Lecture might be a little boring, but the content is super fun (if you’re into it). - Fangyi

Very fun course content with Iain as the lecturer who was nice but could be quite dry sometimes. Coursework was easy if you went to the lectures and did not skip the tutorials, which were very helpful. Probably the only actual course comparable to a fun proof-based course in the maths department (Inductive-based proofs are not proofs). Average exam, but most people found it far easier (?) than I felt it was, although admittedly I skipped almost all of the lectures. - David Angf

# CO496 Mathematics for Machine Learning

Oh man, I have words for this one. First half taught by Mark, stunning. Although the pace is either painfully slow or skips 10 steps in working, he guides you through the concepts at a beginner level (would’ve been nice if he gave some chunky tutorials). Second half is… interesting. You see, his prerecorded lectures were rehashed from his slides, which were rehashed from the 2nd half notes, so you could’ve gotten away with only learning via the notes however the notes are not incredibly comprehensive and also skip steps regularly. This half is more rote learning for the exam questions but really requires you to have discussions and stretch your brain; the tutorial questions are good preparation. There were two cw’s for the 1st half (python programming); we were meant to have two cw’s for 2nd half (matlab) but didn’t due to too many other cw’s. Overall, only take this module if you are good at maths (i.e. taken Stats and CompTech in 2nd year) and you’re willing to put in the time and effort to understanding the content. If you’re thinking of taking it due to prerequisites for other modules, please think about your choices carefully – Andy G (online learning)

Ngl, I have no idea why this module is required. Basically nothing we learn is used elsewhere.


Anyway, the first half by mark is fine but either has been taught before (into to ML) or is overly mathematical to explain relatively simple concepts. The CWs were fine (albeit quite long) and helped solidify understanding.


Part 2 was basically nothing. I didn’t understand what was going on at all and the lecturer didn’t really explain at all what was going on. His side of the exam was (and is) and complete dumpster fire and usually took about 10 people over 3 hours to answer part a of one of his papers. - Sam Trew (online year)


Mark was not bad at teaching, but the organization of the first half was awful. He released lecture (online year) at an unregular schedule and didn’t provide any practice material up until a few days from the exam. We got the CW marks in late December after all the exams were done. At least the material covered is quite interesting.


I thought that the first part of the module was not great, but I wasn’t prepared for the second one. The lectures felt rushed, and the interaction on piazza was basically non-existent. Only good thing is that the exam questions are recycled. -Davide (online year)

An extremely useful course, which massively helped with second term modules (especially probabilistic inference). Whilst the teaching pace was quite unstructured for the first half, Mark was great and the actual content was very interesting. The second half was a shambles, but he recycles content every year so it’s easy to pick up the second 50% of the paper for free. - Giovanni P (20-21)

# CO572 Advanced Databases

I’ve found the stuff I learnt in this course the most useful whilst doing my Industrial placement and the knowledge from it was also really helpful in preparing for interviews. Holger is slightly unorganised and his stuff is difficult to prepare from. Expect his exam Qs to be different each year, but on peter’s side he gives you loads of mock questions and then in the exam the Qs will be basically the same but with slight differences. Tiger (2019/2020)

Incredibly useful course, Holger has definitely upped his game and will probably continue to do so. Peter's section has plenty of resources and the exam is always variations on the same questions and Holger is a really fun lecturer. (2019-2020)

Really useful for learning more about algorithms/data structures and how to actually use them in the real world (even if the focus is on databases). Holger is very enthusiastic but the second part of the course is very different and really focuses on real-world applications (like distributed databases) which imo was less interesting. - Sam Trew (19/20)

Really fun course and practical coursework that lets you play around with the areas that interest you. Holger’s part in particular is really fun, the second coursework is exacting but on the easier side. The exam is difficult, especially in the time available, but easy to prepare for - Matthew (2019/2020)

Don’t do it unless the course changes. Shame, because the course itself was relatively well taught (at least the Peter McBrien’s half was) and almost interesting, but the exam was a complete disaster. You aren’t provided with any tutorial questions for the first half of the course and barely any of the past paper questions were still relevant. The exam went really badly for most people but if the course is improved based on SOLE feedback then maybe it’ll be fine. (2018/19)

I think this is a great course, Holger’s section lacked resources but I do think he’s working at changing this (he taught Performance Engineering in the spring and finally upped his game). It’s mega helpful stuff too, applied plenty of this knowledge at my placement this year. - Rohan Pritchard (2018/19)

Highly enjoyed this course. Extremely useful, and Holger is great fun (and very helpful). - Tom (2018/19)

# Spring Term

# CO316 Computer Vision

Really useful course for establishing a baseline in computer vision, goes well with Intro to ML and has quite an easy CW and Exam. The lecturer (Wenja Bai) is really nice (but not the most interesting). however he does give a revision lecture at the end where he goes over pretty much exactly what’s going to be in the exam. Tiger (2019/2020)

CW was pretty easy and the course is well-structured. The exam contents are all covered in the slides and tutorials but definitely harder than CW. The lecturer Wenjia replied Piazza not frequently. - Blair(2019/20)

Would recommend it. I didn’t find the lectures very fun (even boring) but the content of the course is quite interesting when you revise it in the end. The lectures go in depth into mathematical proofs but most of them are not examinable and the exam turned out to be very easy (questions similar and sometimes same as the ones in the tutorials) . Courseworks take very few hours as well (1st one is on filters and 2nd one on Convolutional Neural Nets, a bit disappointed that we didn’t cover something else practically). In the end, you get a good understanding of most Computer Vision methods and challenges. Lots of content is also redundant with Intro to ML but actually explained better in Computer Vision - Theo (2019/2020)

CW was relatively easy, exam (seemed) pretty easy too. I found the content very interesting and goes very well with the other courses I did: Graphics and Intro to ML. Reasonable amount of content so would recommend starting earlyish for this. Wenjia started teaching the course two years ago so we only had a few of his tutorials and one past paper but hopefully there will be more practice for future years. Would recommend. - Avish (2019/20)

Loved it, 12/10. Wenjia really holds your hand through the course and definitely makes it clear when something is examinable and when it isn't. CW1 took like 2 hours, but CW2 took significantly longer, something to keep in mind as the 2nd half of the term tends to be assessment heavy. Tutorial sheets usually contain some variation of his past papers, so worth sticking around for that. There's a few mathematical bits but it's mostly application + describing certain processes. You also finish by week 9 so you get an extra week to start revising for the module - Andy (19/20)

Pretty interesting course and you learn loads about computer vision and some ML stuff to go along with it. However, it is very content heavy and so can be harder to properly revise for. The CW is almost a guaranteed 90-100% and is a nice intro into using python libraries to do everything for you lol. I didn’t find the exam that easy but if you revise properly you should be okay - Sam Trew (19/20)

Courseworks were quite short and fun. Exam was predictable and on the easier side. I found it relatively easy even after switching halfway through the term - Matthew (2019/2020)

Totally recommend: enjoyed a lot, easy CW, useful for intro to ML, not too difficult. Exam was quite easy (but scaling omg kill me), CW took me a total of 2-3 hours for both parts with little to no python knowledge. Lecturer isn’t super interesting, but the material is good and you can do well without going to any lecture. Panoptoed. My solid first choice for term 1. - Dima (2018/19)

Highly regret not taking. Sounded fun and exam was apparently easy. If I were to redo third year I’d definitely take this (instead of Advanced Databases 😡). (2018/19)

Very easy but apparently will get harder for you guys.. - Tom (2018/19)

# CO317 Graphics

Good lecturer and very interesting course. Courseworks 1 and 2 are nice and shouldn’t take more than a few hours each. Last CW takes a disproportionately longer amount of time - I probably spent a total of like 20-25 hours on it. They are all quite fun so could be worse. Maths wasn’t too difficult (I am a JMC but I don’t feel like it makes a big difference) and like posters below said, similar to FP3 vector/matrix stuff. The hard thing about this course ended up being understanding the wording of the exam questions - definitely useful to look at past papers early on. Would recommend if you can dedicate enough time during revision period. - Avish (2019/20)

It was a very fun module, but the content does take a while to go through. We were lucky enough to have it open book due to the pandemic, hence I skipped learning the tiny details of each lecture, but some did end up appearing in the final paper. Past papers are your best bet as he usually repeats some questions. Coursework takes a very long time to wrap your head around - Anindita (19/20)

Do not. Simply don’t. Do not do this to yourself. You have to be very good at comptech and learn a fucking ton of material. I easily spent 60-70% of my term 2 revision on this and I think I failed. Fuck this course. - Dima (2018/19)

“Graphics is fucking aids, your girlfriend will leave you, your life will leave you” - Oscar Zhang (2018/19)

It fucked me too, coursework was fun, exam was a shit show (and I think it was even a fairly easy paper this year… still fucked me) - Rohan Pritchard (2018/19)

I can confirm the above ^. I took this course thinking it was going to be easy, even though I was not interested in Graphics. Coursework was fun, but I had trouble with the theory and the exam. Only take if passionate about Graphics - Radu Lacraru (2018/19)

It wasn't that bad… a lot of FP3 Edexcel vectors and a lot to memorize but nothing too mathematically challenging. - Isaac Hutt (2018/19)

Great course and good lecturer, but tutorials weren’t that relevant to the exam and courseworks take several days to complete for me. Basic linear algebra only in the beginning, so required background is first year/second year linear algebra, and a lot of cool concepts were introduced near the end. Exam was fun, and sort of predictable. - David Ang (2018/19)

Good lecturer, CW is fun, not hard and marked leniently. Good content, physics stuff isn’t examinable. Will need to memorise lots of stuff for the exam. The maths is easy, even if you’re not JMC. - Omar (19/20)

# CO318 Custom Computing

Updated after completing the module and taking an exam:


Custom Computing feels very niche, the number of students attending live meetings and tutorials was really small (~5 undergrads and postgrads) compared to other modules I took in term 2. However, niche =/= bad! I would call it a hidden gem for people who are interested in FPGAs and thoroughly enjoyed learning hardware / digital circuits and computer architecture in year 1 (regardless of who taught them), advanced computer architecture in year 3 and maybe code generation in compilers in year 2.


The first part is about Ruby, a functional hardware description language. It’s a research language not widely known in the FPGA field, but it teaches you to think how to design efficient and correct designs, like Haskell does in the software engineering world. Ruby is not worth learning alone (you’ll definitely not make a career only with it), but it’s a very nice thing to know alongside other languages used in FPGAs like Verilog, VHDL or high-level synthesis. You may think at this point that this module is useless because it apparently teaches only Ruby: wrong! It’s just the first part.


The second part of the course is about MaxJ, a language using Java to describe FPGA designs, something like high-level synthesis probably. Unlike Ruby, MaxJ is a bit more popular and used commercially and I hope to use it as a bridge to other high-level synthesis languages like Vivado HLS (C++ for Xilinx FPGAs). This part also teaches you concepts which I’ll probably find useful in my FPGA-related placement, for example performance metrics in FPGAs.


Overall, both parts are well-connected to each other and it was only after completing the module and practicing for the exam that I truly appreciated stuff taught in Custom Computing. I feel it’s going to be a springboard for my further study about FPGAs. Beware though that the module might seem confusing or useless to you at the beginning (because of the first impression you may have about Ruby). I was in this exact situation and I was close to dropping Custom Computing because of that (I’m glad I didn’t).


When it comes to exams, they are rather predictable and some questions tend to be recycled (even in the online year), so when you go through a few recent past papers, you should be ready to take the exam. (I’ll update this part after receiving my results to either confirm or withdraw my initial feelings here)


Maks (2020/21)

# CO331 Network and Web Security

In short: the module content is really good and relevant, but the exam is not so good unless you treat preparing for it like preparing for math olympiads at high school and therefore attempt a lot of CTF competitions over longer time. This is especially important as the lecturer gives hardly any revision materials that are actually useful (no access to VMs from past papers; no access to prepared websites from past papers; this year’s website with flags was entirely deactivated shortly after the exam, so people who failed to find flags didn’t even have time to figure out what they should have done during the exam; most tutorials covered security topics in isolation). - Maks (2020/21)

Would recommend it. Content is very interesting and fun, lots of practical labs (although you can find plenty of better and free labs online). Lectures are a bit boring though and Maffeis doesn’t panopto which is a real drawback (you should consider recording it for revisions). Exam is really hard if you don’t have previous experience, practice CTF heavily. - Theo (2019/2020)

A very fun course. I didn’t think I was into security going into the course, I came out realising I was. The coursework and exam is challenging but doable, and scaling helps you out if it’s too hard. Sometimes the lectures were a little slow, but the practical components of the course really make up for it - Matthew (2019/2020)

The stuff you learn is pretty useful and interesting and that’s just if you read the slides. Note: the lectures aren’t recorded and you will miss out a lot by not attending and so may not be for everyone’s learning style. Due to pandemic we didn’t have the same practical stuff so can’t compare CW and exam but the CW had some nifty and interesting things about it. Would recommend at least reading over the notes even if you don’t take it (They’re not long) - Sam Trew (19/20)

Simple: take it. Not much to say, best course I ever took, even though the exam is done differently, I would totally do it again. -Dima (2018/19)

Really Great exam format, actually had fun for the majority of the exam, if you have some background in it the content isn't that difficult and can be learnt in a weekend. Practice takes a bit more time though - Isaac Hutt (2018/19)

Probably one of the most fun exams - it’s a CTF with lots of shit jokes, and plenty of exercises to practice. Very useful for industry too. - Tom (2018/19)

# CO333 Robotics

Overall the course is really interesting and you get to basically apply the maths you learnt in high school like pythoagoras to actual robots which become your baby for the term. CW does take up a fair bit of time but the material needed for it is given in most of the slides / lectures. The lectures aren’t the most interesting but the practical side is cool and the exam is really easy at the end (he asks the same questions every few years with subtle differences.) Tiger (2019/2020)

19/20 - Most most most important, make sure your robot can properly drive in a straight line at the beginning, or you’ll be in for hours of pain.

19/20 - Annoying and time-consuming coursework, with lots of little magic numbers to play around with. Nice exam though, CW prepares you really well for it imo. If i were to choose again, I would probably still take the course.

2019/20 - CW Percentage upped to 30%. CW starts easy but expect to spend late nights on the final one if you want near full marks. Exam has reasonable questions, do the coursework properly and you'll be prepared.

Agree with 19/20 above me. CW isn’t too hard but time-consuming. Exam-wise, pretty nice. He recycles questions a lot and it’s basically just implementing variations of functions that you’ve done in the CW. Only like 6 lectures of actual content and none of it is very hard - just need to make sure you do the CW properly and exam should go fine. - Avish (2019/20)

Do this course if you want to optimise for good marks! Coursework took a long, long time, but if you get involved in the coursework, take time to understand the slides and remember the few, easy maths derivations there are in the slides, you're guaranteed to do very well. There is only about one hour of lectures per week and the rest is the robotics gorup project. - Kelvin (2019/20)

Well. CW == Exam, so if you are willing to put the hours in, you will do super well. CW itself, however, is rather shit. Teams are not well balanced, tasks are not well balanced, still only 15% for about 30 hours you spend on that CW etc. Content is rather dull, not too difficult, overall would pick as the easier module if nothing else. Maybe 1st or 2nd choice. - Dima (2018/19)

Highly recommend. Course was relatively fun and exam is easy and questions are recycled. However, the courseworks take up a lot of time so manage your time well and choose your groups carefully. (2018/19)

Fun course, concepts are simple and there’s not a lot of content. You’ll just get very frustrated with the hardware breaking all the time 😂 - Tom (2018/19)

Amazing. Best course i’ve done at Imperial so far. Ethan (2019/2020)

Really well taught. Not that much lecture content to go through since most of the content is practicals. Practicals etc generally pretty easy. Taught remotely in 2021 using Lua + CoppeliaSim. Get a good group but also make sure you put in the effort (really useful for prepping for exams) - JZ, EIE, 2020/21

# CO339 Performance Engineering

Holger’s part was really interesting, pretty well taught imo. Recommend taking ACA if you’re thinking of taking this since he talks about architecture quite a bit. Giuliano’s half was a lot more dull, but the slides and tutorials are good prep for the exam. Holger’s half is harder than Giuliano’s imo. - JZ, EIE, 2020/21

Holger’s part is similarly delivered to advanced databases, however it’s made slightly more practical with labs where you profile things hands-on and the coursework is cool. No one ever seems to have a clue what on earth goes on for Giuliano’s coursework but he was super nice marking it and when it comes to the exam, his questions require you to follow some simple logical steps to get an answer. Tiger (2019/2020)

Another very fun and enjoyable course by Holger, with good, interesting courseworks and a relatively challenging but doable exam. If you’ve taken Holger’s courses before, there shouldn’t be any surprises - Matthew (2019/2020)

Very useful course. Holger’s side is quite accessible even if you don’t have much experience with C++, which he uses frequently, and the lectures are pretty interesting (his side overlaps a lot with Advanced Computer Architecture as both cover branch prediction, speculative execution, vectorized instructions, and a few other topics). Giuliano’s side is fairly easy and exam questions are similar to tutorial sheet questions in terms of structure. - Fawaz (2019/20)

This was an awesome course, super underrated. Holger massively upped his game in this course and provided plenty of resources this time (we had to complain for a while but he got round to it), he’s a really enthusiastic lecturer and there was a sensible amount of content too, giving you enough time to learn all of it thoroughly. I expect this to be one of my best exams. - Rohan Pritchard (2018/19)

Really useful course. Definitely still maturing but was by far the most relevant course you can take in third year if you want to go into software engineering imo - Isaac Hutt (2018/19)

Again, Holger made this course a lot of fun. Don’t go if you want an organised lecturer, plenty of problem sheets and like “learning by the book”, as there’s none of that here. However you will learn many useful techniques. - Tom (2018/19)

# CO347 Distributed Algorithms

They switched the CW back to multi paxos this year and it was very challenging. Yet the course is fine overall. (2020/21)

CW is fine this year since they changed it to RAFT. Many group seems to be getting 20 out of 20. Normally only 2 hours of lecture per week, so it doesn’t really have too much materials. Content is interesting, but teaching can still be improved. - Leonard Ge(2019/20)

CW was actually fine. RAFT is fairly straightforward and easier to understand than PAXOS (as intended lol). Elixir is still a bitch but you will survive. High key the exam requires a little no a lot more extra reading and intuition because ya boy got destroyed - Chandler Low (2019/20)

Stopped turning up. CW is pure cancer, Naranker is super boring, elixir is not taught and most course was simply too much for me with all the other subjects. Theory is useful, new language is always good: but neither of the two was taught well, therefore I dropped it. Did not even bother going to lectures like in pervasive, because they simply put me to sleep. Overall it is a no from me. - Dima (2018/19)

“Your girlfriend will leave you, your life will leave you” - Oscar Zhang (2018/19)

This course is not an easy one, the coursework does take a long time too (although I think they’re looking to reduce the scope of the CW next year). Nevertheless I don’t regret taking it, it’s an interesting course and I think that it’s really relevant, will certainly be useful for the CV. - Rohan Pritchard (2018/19)

I’m using a lot of this stuff in my placement - it’s useful and very interesting. Fair warning however, you will have to debug your own multi-Paxos implementation. - Tom (2018/19)

# CO409 Cryptography Engineering

Apparently quite easy

# CO416 Machine Learning for Imaging

Pending completion of module: If I could choose again I wouldn’t take this module. It’s not bad and the lecturer isn’t bad at all. It’s just that there is so little that is new over Computer Vision.

Maybe the last 3rd/quarter is new but I just feel so drained from going over the exact same content. Pending as cw hasn’t been done yet and neither has exam – Sam Trew (online year)

# CO417 Advanced Computer Graphics

Avoid, it’s hard.

Agree it isn’t easy, but I do think the content is very interesting... That’s not to say I’d like to be examined on it... But in my opinion a flat-out “avoid” is too harsh – James Langley (online year)

Great course. Content is interesting and you will learn a lot. Abhijeet is passionate about this stuff and it shows. Exams are difficult and very tight on time – Jamal (online year)

# CO433 Advanced Robotics

# CO477 Computational Optimisation

Ruth is a good teacher and if you’re comfortable with mathematical analysis, the course isn’t too difficult

An interesting and useful course, nice to add some good maths for a non-JMC student. Some of the exercises can appear pretty difficult at first, but with practice they’re very approachable. Small class size, but very helpful TAs who are great on Piazza. - Giovanni P (20-21)

# CO493 Probabilistic Inference

Pending: Boi oh boi. If this wasn’t compulsory for me, I wouldn’t be taking it. It’s definitely interesting and taught well. But the only other people taking it are JMC or very mathsy people. Very maths heavy module, the cws are actually quite nice and help with understanding but just beware for the computing students. Pending as I haven’t done exam. - Sam Trew (online year)

My favourite course I’ve taken in four years at Imperial! (Perhaps I am biased as this is the focus of my thesis). The content is extremely interesting and very useful, and is a refreshing change from straight Computing modules. It’s very mathematical, so requires a lot of practice and interest to do well, but opens your mind to a very interesting area of machine learning. The courseworks are free 100% as they are just LabTS tests. Mark is an incredible lecturer; he teaches very well, goes into a large amount of detail answering any questions and writes personalized essay responses on piazza - it seems he is very dedicated to helping the students. The one downside with this is that a lot of this content, for example in Q&As and suggested reading, is basically examinable and so the size of the course grows large if you want to keep on top of it. The exercises/tutorials appear very difficult at first, but it seems that he makes the exams much easier. Overall great module, and I would recommend to anyone who was comfortable with the maths from Mathematics for Machine Learning. I cannot stress how useful this course was for understanding certain areas in Deep Learning and NLP courses – there is a huge overlap with generative models. – Giovanni P (19-20).

# CO440H Software Reliability

Used to be a nice full course, combining PL and system sides of SRE. The half course format is rather meh in my opinion, since Alastair no longer teaches, hence less from PL side. A big CW consisting of 33% of mark takes quite a lot of effort, but it is open-ended so you can do a lot of fancy stuff or do the minimal. Exams are weird and the questions may involve unnecessarily small details. - Fangyi

# CO460 Deep Learning

Courseworks are really interesting and relevant

Very useful course, with a helpful set of instructors/TAs. The coursework load is a bit heavy with three courseworks, but they’re pretty much guaranteed marks if you put in (a lot of) effort. The content is all very interesting and approachable, though I imagine the second half would have been fairly difficult without taking Probabilistic Inference or NLP - there’s a big overlap in content. The exam was more difficult than previous years due to its size, but overall the coursework secures a large portion of the grade for the module. - Giovanni P (20-21)