Going Further

Below you can find a list of exercises representing examples of C projects that are more ambitious than the autocorrected tests you have done until now, while still being quite didactic. They are fully optional and do not need to be done to complete the unit: check these out if you would like to go further. Due to the nature of these exercises, COMP26020 instructors cannot provide support to complete them, so you are on your own!

If you find that kind of work exciting, please consider doing your Y3 project with me 🙂.

  • Writing a Linux kernel module. In this exercise you will write a bit of code and load it at runtime within the Linux kernel. Consider starting to read from the introduction in order to understand how to set up your distribution for kernel development. The rest of the book is great too, covering many aspects of Linux kernel programming.
  • Writing a simple web server. In less than 200 lines of code!
  • Using Linux's optimised io_uring I/O API. Here you will build various simple applications (2 programs equivalent to the cat and cp commands and a simple web server) using the optimised io_uring API which provides significant enhancements vs. using what we saw in the unit i.e. read/write and their variants.
  • Emulate a simple device in Qemu and write a driver for it in Linux. Here you will emulate a simple device in Qemu and will access it from a virtual machine through a driver you'll write. This is part of an assignment for another course I am running, please disregard anything regarding submission/deadlines/marking scheme.
  • Writing a minimal OS kernel. This OS contains the bare bone code (assembly for the boot process, then C) to print on the console. You can access more cool OS tutorials here.
  • Writing a compiler. This is a relatively ambitious project in which you'll build a self-compiling compiler, i.e. a compiler that can compile itself (yes, after all the compiler is itself a program, and is built from source code!).