| 1 |
Aug 25 |
Introduction |
| 2 |
Aug 28 |
Computer Architecture — information processor, memory, embedded systems, peripherals (sensors and actuators); what distinguishes software/hardware, codes/programs/algorithms, chips/modules/boards/boxes |
| 3 |
Sep 8 |
Information Processor — Von Neumann architecture, instructions, instruction pointer, RISC/CISC, CPU/GPU, CGRA/FPGA/ASIC, self-modifying programs/circuits, input/output, interrupts |
| 4 |
Sep 11 |
Assembly Programs — registers, operation mnemonics, labels and jumps, time-sensitivity, faults and bitflips, errors such as overflow, error masking |
| 5 |
Sep 15 |
Data Structures and Memory — arrays, linked lists, pointer structures; memory layout (order, alignment, padding); automatic/dynamic memory allocation (stacks, heaps) |
| 6 |
Sep 23 |
Procedural Programming — stack operations, expressions, procedures, recursion, interrupt routines |
| 7 |
Sep 30 |
Operating Systems — POST, BIOS/UEFI firmware, kernel drivers and privilege separation, virtual memory, file systems, event logs, users, authentication and authorisation, delegation |
| 8 |
Oct 1 |
Layered Architecture in Cyber Operations — functions and local/global properties of layered computer architectures in the context of cyber operations |
| 9 |
Oct 20 |
Concurrent and Distributed Systems — cooperative/preemptive multitasking, threads/warps, streaming multiprocessing, racing, conflict, synchronization, message passing |
| 10 |
Oct 30 |
High- vs Low-Level Programming — 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) |
| 11 |
Nov 3 |
Advanced Concepts — deterministic networking, cache coherency, hypervisors, cluster computing, live migration |
| 12 |
Nov 6 |
Supply Chain Risks — hardware/software asset management, security risks in hardware/software supply chains and deployment environments |
| 13 |
Nov 10 |
Specification, Implementation, and Verification — the importance of separating these, and how small errors in computer systems can lead to catastrophic outcomes |
| 14 |
Nov 17 |
ARM Practical — low-level programming and firmware flashing on an ARM processor |
| 15 |
Nov 20 |
Presentation |
| 16 |
Nov 24 |
Wrap-up and exam preparation |