Launch the Computer Systems course →
Topics
Computer architecture (information processor, memory, embedded systems, peripherals such as sensors and actuators) and what distinguishes software/hardware, codes/programs/algorithms, chips/modules/boards/boxes.
Information processor (Von Neumann architecture, instructions, instruction pointer, RISC/CISC, CPU/GPU, CGRA/FPGA/ASIC, self-modifying programs/circuits, input/output, interrupts).
Assembly programs (registers, operation mnemonics, labels and jumps, time-sensitivity, faults and bitflips, errors such as overflow, error masking).
Data structures (arrays, linked lists, pointer structures), memory layout (order, alignment, padding), and automatic/dynamic memory allocation (stacks, heaps).
Procedural programming (stack operations, expressions, procedures, recursion, interrupt routines).
Operating systems (POST, BIOS/UEFI firmware, kernel drivers and privilege separation, virtual memory, file systems, event logs, users, authentication and authorisation, delegation).
The functions and local/global properties of layered computer architectures in the context of cyber operations.
Concurrent and distributed systems (cooperative/preemtive multitasking, threads/warps, streaming multiprocessing, racing, conflict, synchronization, message passing).
High-level versus low-level programming and assembly, compilation, interpretation processes (complex data structures, advanced control flow, fault tolerance, classes/objects/reflection/ontologies, passive/reactive/active objects, emergence/reification/invariance/Gestalt properties).
Advanced concepts in computer systems (deterministic networking, cache coherency, hypervisors, cluster computing, live migration).
Hardware/software asset management, security risks in hardware/software supply chains and deployment environments.
The importance of separating specification/implementation/verification and how small errors in computer systems can lead to catastrophic outcomes.
Practical experience with the ARM processor, including low-level programming and firmware flashing.
Schedule (2026)
Week 35:
- August 25, 8:10 – 8:55
- August 25, 9:00 – 9:45
- August 28, 10:10 – 10:55
- August 28, 11:00 – 11:45
Week 37:
- September 8, 12:40 – 13:25
- September 8, 13:30 – 14:15
- September 11, 10:10 – 10:55
- September 11, 11:00 – 11:45
Week 38:
- September 15, 14:30 – 15:15
- September 15, 15:20 – 16:05
Week 39:
- September 23, 14:30 – 15:15
- September 23, 15:20 – 16:05
Week 40:
- September 30, 14:30 – 15:15
- September 30, 15:20 – 16:05
- October 1, 14:30 – 15:15
- October 1, 15:20 – 16:05
Week 43:
- October 20, 12:40 – 13:25
- October 20, 13:30 – 14:15
Week 44:
- October 30, 8:10 – 8:55
- October 30, 9:00 – 9:45
Week 45:
- November 3, 10:10 – 10:55
- November 3, 11:00 – 11:45
- November 6, 8:10 – 8:55
- November 6, 9:00 – 9:45
Week 46:
- November 10, 8:10 – 8:55
- November 10, 9:00 – 9:45
Week 47:
- November 17, 10:10 – 10:55
- November 17, 11:00 – 11:45
- November 20, 8:10 – 8:55
- November 20, 9:00 – 9:45
Week 48:
- November 24, 10:10 – 10:55
- November 24, 11:00 – 11:45
Materials
- Logic Gates, Circuits, Processors, Compilers and Computers
Jan Friso Groote, Rolf Morel, Julien Schmaltz, Adam Watkins
ISBN: 9783030685522
Assessment
Placeholder text for the assessment scheme.
Miscellaneous
Cover image: Aileen Devlin, Jefferson Lab