Bare metal programming is the practice of writing code for the CPU without an operating system (like Linux) on board. In this online course from Alex Chadwick of the University of Cambridge Computer Lab, you can learn how to use assembly code to write your own OS for the Raspberry Pi.