Each lecture title is a link to notes for that lecture. The notes for some lectures have a section at the end for questions asked during or after that lecture by the audience this year or in previous years.
Note: I will be revising the material to fit with the new 'V2' micro:bit (which has a different processor), and an updated operating system micro:bian (which has a slightly different system call interface from the operating system used in previous years). Lectures above The Line below have been revised, and those below the line are unrevised, but give some kind of guide to what will be in the course. Not all of the slides or handouts have been revised yet – that will happen as the term progresses.
The first few lectures will be about programming a microprocessor in assembly language, including the detail of how each kind of instruction operates.
 Building a program. Compiling and building a program.
 Multiplying numbers. Conditional and unconditional branches. Instruction encodings. Execution time.
 Number representations. Signed and unsigned numbers. Numeric comparisons.
 Loops and subroutines. A better multiplication algorithm. Stack frames and nested suboroutines.
 Memory and addressing. Addressing modes. Arrays. Example: "Bank accounts".
 Buffer overrun attacks. A hacker's guide.
- A set of slides used in the lectures.
Input and output
The next lectures are about different kinds of I/O interaction, including interrupts.
 Serial I/O. Serial protocol. A simple, polling UART driver.
 The interrupt mechanism. What the hardware does with interrupts.
Embedded operating systems
The last part of Hilary Term has lectures about using and then implementing a simple process scheduler, allowing asynchronous events to be handled in a manageable way.
 Introducing micro:bian. Processes and messages.
 Device drivers. Server processes. Interrupts as messages from the hardware.
 Context switching. Implementing interleaving of processes by saving and restoring context.
 Implementing processes and messages. Process table. Ready queue. Send and receive.
 We're going on a bug hunt!. Exploring the operating system by fixing a bug.
In the first part of Trinity Term, the lectures are about constructing logic gates from transistors, and then building those logic gates into modules we can later use to design a computer. Helpful reading for this part of the course is the appendix on Basics of Logic Design from the recommended book by Patterson and Hennessy.
 Introduction. Plan for the term. Combinational logic.
 Transistors and logic gates. Building gates from transistors. CMOS logic.
 Sequential logic. Flip-flops. Designing sequential circuits.
 Architectural elements. Circuits for arithmetic. Multiplexers. Register files. Arithmetic-Logic Unit. Barrel shifter.
The second part of Trinity Term has lectures about using architectural modules to build a simplified implementation of the Thumb instruction set.
 Designing a datapath.
 Designing a datapath (continued). Continuation
 Three instructions. Using the datapath to implement three typical instructions.
 micro:bian device drivers – a sample exam question.