Stanford’s experimental operating systems course, where you buy a Raspberry Pi and write your operating system on the bare metal by using the reference specifications.
You should take this class if: 1. You write code well OR (you don’t yet write code well AND have a lot of time to devote to the class); 2. AND you find these systems topics interesting.
By the end of the class you will have built your own simple, clean OS for the widely-used, ARM-based raspberry pi — including interrupts, threads, virtual memory, and a simple file system. Your OS should serve as a good base for interesting, real, sensor-based / embedded projects.