# 4th Year DoC Module Feedback

Things to know about DoC modules:

  • DoC modules are typically 20% coursework based 80% exam based. Exams take place on the last week of term, and are predeeded by week where no new material can be taught (no lectures last 2 weeks of term). The majority of DoC exams will be open book this year, where students will be allowed to bring 2 sheets A4 or something similar into exams.
  • They do not release past paper solutions. There are instead crowd-sourced solutions which can be found here (opens new window)
  • Some courses will assume you have knowledge which you might be missing (e.g. Operating Systems). A 4th year DoC student Eugene has a repository of rendered LaTeX notes, which are really useful in covering some of this content, which you can find here (opens new window).
  • You can find seperate DoC module feedback here (opens new window), but keep in mind it contains feedback from students with a different background.

# Autumn Term

# Privacy Engineering

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 2 respondants.

  • Content: 4.5 out of 5
  • Organisation: 3.5 out of 5
  • Lecturer: 5.0 out of 5
  • Overall: 4.0 out of 5
# Comments

Good module overlall, although many people were disappointed with exams results. Would take it again however!

Exam was slightly harder than expected, but still manageable.

# 2021-22

# Quick Summary

Average module scores from 3 respondants.

  • Content: 3.33 out of 5
  • Organisation: 4.67 out of 5
  • Lecturer: 3.67 out of 5
  • Overall: 3.33 out of 5
# Comments

I found the 1st half much more interesting and better organised than the 2nd one. The coursework could be better, it only covers 2 lectures out of the 1st half, completely omitting the rest of the module. The tutorial/labs are of very high quality, so that helps with learning

Boring

I found this module quite boring in all honesty. The coursework was kinda stupid as well. A bit meh all round I think – wasn't that interesting but I've taken worse modules before. JZ

# Complexity

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 2 respondants.

  • Content: 4.5 out of 5
  • Organisation: 5.0 out of 5
  • Lecturer: 4.0 out of 5
  • Overall: 4.5 out of 5
# Comments

Very interesting module, not the most popular, but if you can get your head around the early content it is a very useful module. Doesn't require much maths, even if the content feels that way at times - relies a lot on logic. Exam seemed to be scaled up quite a lot.

# Mathematics for Machine Learning

Imperial Module Page: here (opens new window)

N.B: EIE students are exempt from taking this course as a pre-requisite for DoC Deep Learning

# 2021-22

# Quick Summary

Average module scores from 1 respondants.

  • Content: 4.0 out of 5
  • Organisation: 4.0 out of 5
  • Lecturer: 3.0 out of 5
  • Overall: 3.0 out of 5

# Program Analysis

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 1 respondants.

  • Content: 5.0 out of 5
  • Organisation: 3.0 out of 5
  • Lecturer: 5.0 out of 5
  • Overall: 5.0 out of 5

# 2021-22

# Quick Summary

Average module scores from 1 respondants.

  • Content: 3.0 out of 5
  • Organisation: 3.0 out of 5
  • Lecturer: 4.0 out of 5
  • Overall: 3.0 out of 5

# Scheduling and Resource Allocation

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 3 respondants.

  • Content: 5.0 out of 5
  • Organisation: 4.33 out of 5
  • Lecturer: 4.0 out of 5
  • Overall: 4.33 out of 5
# Comments

Decent module with many applications. Only issue is that Dario (teaches resource allocation) sometimes makes simple concepts incomprehensible by using unexplained notation. Keep an eye out for this and make sure to ask for clarification if anything seems off.

This was my favourite DoC module of the year, covering a really interesting class of optimisation problems which are considered computationally "hard" in the first half, and providing very interesting insights into how to incentivise positive outcomes in systems composed of multiple selfish agents seeking only to maximise their own outcomes in the second (for example, how a government could place tolls on roads to minimise total commute time). The methods covered in the first half of the course are highly applicable to a wide range of problems (basically anything with graph search), making the content covered quite useful in a wide range of applications (I used a lot of what was covered writing a chess puzzle solver (opens new window) over Spring break). I found both lecturers to be quite good (but not outstanding), with Giuliano being a bit slow at times (although it makes pretty much everything he teaches very easy to follow). I personally really enjoy Dario's teaching style (who you may be familiar with if you took Operations Research (OR) in Y3), but others may find him more difficult to follow. There's also some repeated content (Game Theory) which Dario also covers in OR, making this content easier to grasp if you've taken it, but is fully explained from scratch, so not a prerequisite for the module. The coursework for the module was an absolute blast, where you essentially had to write your own scheduler to solve a given optimisation problem, and experiment with different (algorithmic) optimisations to obtain better schedules in a fixed number of iterations. You're free to choose the language of your choice, and I found it to be a great opportunity to use C++ again. I probably spent a bit more time than needed working on it (because it was more fun than most other things going on in Autumn Term), but I think it's very doable to complete it in 3-5 days of full-time work (with a partner). As with most DoC courseworks, requirements were very clear, and it was easy to obtain near-100% marks. The exam was surprisingly difficult, especially given that the lecturers assured us that it would be easier than previous years since it was in-person and closed-book (which is probably the only downside of the module), although I think results were moderated upwards. However, most of it was still quite doable, despite having only 1 past paper to practice on. Overall, a thoroughly enjoyable module which doesn't take up too much of your time which I would highly recommend to anyone who enjoyed OR, discrete maths, or is interested in learning techniques used to solve a large number of real-world problems. - Simon

# Spring Term

# Cryptography Engineering

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 3 respondants.

  • Content: 3.33 out of 5
  • Organisation: 4.33 out of 5
  • Lecturer: 4.0 out of 5
  • Overall: 3.33 out of 5
# Comments

This module has very strong synergy with EE Coding Theory (CT), essentially focusing on how cryptographic solutions are applied in practical modern settings. There is minimal overlap in terms of encryption schemes, and covers new concepts like AES, Elliptic Curves and Quantum Encryption Schemes, but the mathematical background developed in CT is incredibly helpful in understanding these concepts, and unfortunately this module doesn't spend enough time on the background theory / doesn't explain it particularly well. As such, I would caution against taking this module if you haven't taken CT, or don't have a strong background in number theory, as you will most likely struggle / need to spend more time on these topics to properly follow a lot of the content covered here. It's also worth keeping in mind that this module focuses more on applications of encryption schemes, and doesn't really look at how these are implemented in practice, meaning that you don't really learn these topics in that much depth, and more-so develop a top-level, system design view of modern cryptography. The course uses a flipped classroom approach, with multiple short videos to watch each week, which aren't particularly engaging, but the length of each video makes it relatively easy to get through, and a single in-person class, which goes over some questions on the material covered. The coursework is very easy, essentially just a sample exam paper that you have almost the entire term to complete in a team of up to 4 students, and shouldn't take more than a day to finish. The exam is also very easy to revise for, with minimal deviation from year-to-year, and found this year's paper to be especially straightforward (although funnily enough it was my lowest scoring technical module due to a stupid mistake - that's DoC moderation for you). If you're looking to get the most possible out of your modules this year, I'd say to take Coding Theory and skip this module, but if you want a low-effort, reasonably high scoring module which will give you a modern overview of the state of cryptography in practice, then look no further. - Simon

# 2021-22

EIE: coding theory covers similar overlaps and more in depth with encoding (Hamming and co)

  • Moderate in difficulty – good self-contained lecture notes. The hardest thing for me was understanding the group/ring theory and how it related to some of the concepts – people who have taken a group theory course will have a significant advantage on that part of the module, and the module doesn't always explain the ideas well. On the other hand, it isn't directly tested in the exam.
  • Michael Huth is OK – competent but not outstanding. Except for a week where he didn't answer on EdSTEM (and attributed it to EdSTEM not notifying him which I am inclined to believe), he was fairly active on EdSTEM and responded reasonably fast.
  • There were also optional Python notebooks prepared by a TA and made reasonably well. The coursework was not hard (3 exam-styled questions to be done in groups of 4), though interestingly no one managed to get full marks (median = 92, highest mark = 99, so still high scoring).
  • The exam was not hard either – there is a significant amount of "cranking" in that one question is always about elementary probability and (for the last couple of years at least) one question about Shamir Secret computation (the latter can be a timesink, so use an online calculator for find the inverse of an element in a group).
  • Overall, while this was the least interesting module for me this semester, that doesn't mean that it is bad (I'm just not good with very pure material).

# Principles of Distributed Ledgers

# 2022-23

# Quick Summary

Average module scores from 5 respondants.

  • Content: 4.6 out of 5
  • Organisation: 4.2 out of 5
  • Lecturer: 4.4 out of 5
  • Overall: 4.4 out of 5
# Comments

Favourite module at IC so far. Highly recommend! Expect some time to wrap your head around it at the start but will get better quickly!

One of the best courses I have taken. Reasonable workload, fair exam and coursework, and interesting, very up-to-date content. Would highly recommend if interested in Blockchain / DeFi / web3.

Good introduction to blockchain, cryptocurrency, DeFi that provides some working knowledge for Solidity. Similar to Intro to ML in depth / usefulness. Relatively straightforward exam.

Very interesting module. The lectures were very nicely structured and quite a lot of important concepts were covered in good details.

The lecturers, although this being their first year of teaching, were very good, nice, and helpful.

The CW was enjoyable and gave relatively high easy marks if you understood what you were doing.

# Machine Learning for Imaging

Imperial Module Page: here (opens new window)

This module was suspended for a couple of years and has now come back

# Advanced Computer Graphics

Imperial Module Page: here (opens new window)

No feedback available - see DoC feedback

# Computational Optimisation

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 2 respondants.

  • Content: 4.5 out of 5
  • Organisation: 5.0 out of 5
  • Lecturer: 4.5 out of 5
  • Overall: 4.0 out of 5
# Comments

Similar to EE Optimisation, DoC Computational Optimisation is another "maths-only" module covering various methods of how to optimise functions (typically minimisation problems). It notably spends much more time looking at the properties of convexity, and how to identify convex functions / problems, which isn't really touched on in EE Optimisation, but is something I think is very useful in this subject. If you took DoC's Operations Research last year, you'll already be familiar with the formulation of the kinds of problems being solved, but it's by no means a pre-requisite for taking this module - a strong understanding of linear algebra is much more important to do well (e.g. taking the derivative of vectors / matrices), but this is something you can learn during the course through the revision materials provided. If you watched all the lectures for EE Optimisation, then understanding some of the content covered in this module should be easier, but if you're anything like me, you won't have learnt the content properly since the EE exam is much later, and so odds are you'll properly learn most of the content in this module, meaning that taking EE Optimisation first isn't that much of an advantage. The class size for this course was also much smaller than in EE Optimisation, allowing you to engage more closely / personally with the lecturers. Ruth (who you may remember from Y3 Operations Research) takes the first half of the course, and is a fantastic lecturer (probably one of the best at Imperial imo), all of her sessions were really enjoyable to attend. Panos records his lectures, and they aren't nearly as engaging as Ruth's (2.5/5 lecturer), but his classes are still a good way to start to learn some of the more difficult questions you'll need to solve in the exams (some of his questions are absolutely unhinged). It's worth noting that he's very big on student engagement, and will try to get you to try and solve the problem on the board first before providing a solution, so keep this in mind if this is a major turn-off for you. The coursework for this module is essentially two past exam questions, although it took me quite a while to work through them and get them in a state I was confident with, taking around 3 full-time days. The exam is more difficult to revise for the EE Optimisation, partially because DoC don't publish past paper solutions, but also because there is more variety in the exams. For some reason they made the first exam back in person especially brutal, but DoC moderation is incredibly juiced and substantially boosted the final mark for the module. Nevertheless, if you only want to choose one between this module and EE Optimisation, I'd recommend the latter as I think it's more consistent (both in lecturer quality and exams), although I really think you should attend Ruth's part of the course for the lectures, which are both different from what is covered in EE Optimisation, and very useful for it. However, as I mentioned in my review of EE Optimisation, I think taking both will really help you fully get to grips with the content, so if you don't have any other modules you're particularly keen on taking, I'd recommend this one. - Simon

# Probabilistic Inference

Imperial Module Page: here (opens new window)

No feedback available - see DoC feedback

# Software Reliability

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 2 respondants.

  • Content: 5.0 out of 5
  • Organisation: 5.0 out of 5
  • Lecturer: 4.5 out of 5
  • Overall: 5.0 out of 5
# Comments

Bit more coursework required than normal for DoC but this is transparent from the beginning. Interesting and useful content for anyone wishing to pursue software engineering.

# 2021-22

# Quick Summary

Average module scores from 1 respondants.

  • Content: 5.0 out of 5
  • Organisation: 5.0 out of 5
  • Lecturer: 4.0 out of 5
  • Overall: 5.0 out of 5

# Deep Learning

Imperial Module Page: here (opens new window)

# 2022-23

# Quick Summary

Average module scores from 4 respondants.

  • Content: 4.25 out of 5
  • Organisation: 3.0 out of 5
  • Lecturer: 3.5 out of 5
  • Overall: 3.75 out of 5
# Comments

First half of this module overlaps significantly with Intro to ML. Second half is an order of magnitude more challenging. Courseworks have been shortened and seemed to be much more manageable than in previous years. Follow some online tutorials and it's easy to score 90+. Exam this year was a bit of a mess, with lots of mistakes in the paper. Content is pretty up to date, with discussion of Chat-GPT etc.

This module was really something. First, the content is actually pretty interesting, the first half taught by Bernhard is accessible and covers some of the state of the art, as well as problems and how various architectures overcame them and about architecture choices and design, which is interesting and highly applicable. The coursework that assessed his half was pretty chill and required you to just implement some functions (such as convolution and pooling), and then just perform hyperparameter tuning on one of the architectures performed in class. You only need to bump up the training score by a minimum amount, which makes the overall coursework pretty accessible and possible to do in about half a day's effort. Beware that the hidden tests on the function implementations may bite you on the back, you are also not given any of the functional tests, only dimension checking tests, so make sure to verify against the PyTorch versions of implementations and also check for weird corner cases.

Yingzhen's half was, something. It's quite the step up, very quick difficult, almost Dark Souls-esque difficulty spike. Taking MML or Probabilistic Inference may help to soften the blow a bit, and I highly recommend just flicking through the resources for those modules (even if not taking for credit), just to familiarise yourself with some of the concepts covered. The content covered is highly theoretical but interesting to see in how it is applied to Generative Models and such. The associated coursework is, like the half itself, harder, but still very accessible and reduced in size compared to previous years, requiring you to implement a VAE and a GAN model. Doing these models can be somewhat straight forward as resources exist on the internet to help you implement, however training these can be very, VERY long, and so that's where the time can really eat at you.

The exam this year was poorly administered, the exam content is more or less largely similar year on year, and Yingzhen's half is definitely one to focus on (given the average on her half was something like 7/20 a few years ago), but don't neglect Bernhard's half, which was much tougher this year. There were mistakes laden in the paper and a lot of interruption and poor management of the exam overall confusing many students on what was correct, what had to go where, etc. The coursework was also poorly administered, using Paperspace as the platform (the first coursework can be done using Google Collab, but the second one is much more GPU intensive and thus Paperspace was selected as the platform of choice). Paperspace frequently crashed, was not available, falsely told you that you had overused your allocated credits or simply just did not cooperate with you. This meant that a lot of the time people were unable to do the coursework for days at a time resulting in numerous coursework extension times eating into exam revision time. The content is overall good, challenging in the right places (sometimes too much), and interesting in its own right, but administration of the module definitely needs improvement.

The lecturers are quite boring. The content is okay and covers what you would expect.

The two CWs are challenging but achieving high marks is very possible (if your stuff works).

The exam was awful.

# 2021-22

# Quick Summary

Average module scores from 1 respondants.

  • Content: 4.0 out of 5
  • Organisation: 4.0 out of 5
  • Lecturer: 4.0 out of 5
  • Overall: 4.0 out of 5
# Comments

Must have for anyone considering any ML/DL job in academia/industry. Goes quite quickly through the whole landscape of research in DL, up to the most recent advancements. Very intensive coursework, and still a 50% exam, so not an easy module. First half explained better than the second, but that's also partially due to the second one covering much more difficult topics.

# Quantum Computing

Imperial Module Page: here (opens new window)

No feedback available - I think it's a new module