Lecture notes (Digital Systems)
Each lecture title is a link to notes for that lecture. It's difficult to predict how far we will get in each lecture, so I will move material around after each lecture so as to provide a more accurate record of where we have reached.
(a) Ask them during the lecture, or save them to ask at the beginning of the next lecture, or
(b) Add them to the top of the FAQ page, and I will add an answer, or send them by e-mail, and I will add them to the FAQ page myself.If a question occurs to you, then it is likely that it will occur to others in the course too, and it is far more efficient for each question to be answered once so that everyone hears or sees the answer than for me to answer it many times for different individuals.
The first few lectures will be about programming a microprocessorAn integrated circuit that contains a complete CPU. in assembly languageA symbolic representation of the machine code for a program., including the detail of how each kind of instruction operates.
 Microcontrollers and embedded programming. Architecture of the micro:bit. Programmer's model. Execution of an instruction.
 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. Recursive calculation of binomial coefficients.
 Memory and addressing. Addressing modes. Arrays. Example: Catalan numbers.
 Buffer overrun attacks. A hacker's guide.
Input and output
The next lectures are about different kinds of I/O interaction, including interrupts.
 Introducing I/O. Memory-mapped I/O. GPIO(General-Purpose Input/Output). A peripheral interface that provides direct access to pins of the microcontroller chip. Pins may be configured as inputs or outputs, and interrupts may be associated with state changes on certain input pins. On the <span style="font-family: 'Roboto Slab', Ubuntu, sans-serif">micro:bit</span>, the LEDs and pushbuttons are connected to GPIO pins.. Multiplexed LED display.
 Serial I/O. Serial protocol. A simple, polling UART(Universal Asynchronous Receiver/Transmitter). A peripheral interface that is able to send and receive characters serially, commonly used in the past for communication between a computer and an attached terminal. It is commonly used in ''duplex'' mode, with the transmitter of one device connected to the receiver of the other with one wire, and the receiver of the one connected to transmitter of the other with a different wire. The ''asynchronous'' part of the name refers to the fact that the transmitter and receiver on each wire do not share a common clock, but rely instead on the signalling protocol and precise timing to achieve synchronisation. driver.
 Programming with interrupts. Interrupt-based driver for UART.
 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.
Programming with processes and messages.
Implementing processes and message-passing.