Course Schedule Fall 2019

This schedule is subject to change. Please check back frequently.


Part 1. Introduction

Monday Wednesday Friday
Aug. 26
Welcome
Course overview
Aug. 28
C review
Types, functions, binary/hex numbers
Aug. 30
C review II
Structs, pointers, Introduction to ISA
Sep. 2
Labor Day - no class
Sep. 4
D flip-flops and Registers
Building register files and updating state
Homework 1: Numbers and C due 6pm
Sep. 6
Instruction registers
PC, intro to branches/control flow

Part 2. Assembly

Monday Wednesday Friday
Sep. 9
Assembly
Introduce Nios II, decoding instructions
Sep. 11
DE0-Lite
Assembler directives, creating Nios program from scratch
Sep. 13
Assembly II
Basic assembly examples
Sep. 16
Number representations
Two's complement, sign extension
Sep. 18
Number representations 10
Floating point
Sep. 20
Logic operations
ALU design/logic operations, overflow
Project 1: Assembly due 6pm
Sep. 23
Turing C into assembly
Compiler examples
Sep. 25
Memory layout
Loads/stores, stack, MMIO
Sep. 27
Memory alignment
bytes vs words, alignment
Homework 2: Logic and ALUs due 6pm
Sep. 30
Exam 1 review
Prepare for first exam
Oct. 2
Exam 1
In-class exam
Oct. 4
Basic peripherals
Switches, hex displays, buttons, ADC/DAC

Part 3. Interfaces

Monday Wednesday Friday
Oct. 7
Basic I/O
Busy wait vs polling, UART
Oct. 9
Interacting with peripherals
Bit-bang WS2812 interface
Oct. 11
Application Binary Interface (ABI)
function calls in assembly, caller/callee saved
Oct. 14
Procedure calls
Return addresses, assembly examples
Oct. 16
Procedure calls
Calling C functions from assembly
Oct. 18
Buffer overflows
Smashing the stack for fun and profit
Project 2: Basic I/O due 6pm
Oct. 21
Overflows, continued
Buffer overflow walkthrough
Oct. 23
Interrupts
ISR, configuring interrupt peripherals
Oct. 25
Interrupts
Code walkthrough, Interrupts in C
Homework 3: Functions due 6pm
Oct. 28
Interrupt example
continue code walkthrough
Oct. 30
Interrupts continued
continue code walkthrough
Nov. 1
Advanced Embedded Systems
Priority Inversion, DMA
Project 3: Calling Convention due 6pm

Part 3. CPU design

Monday Wednesday Friday
Nov. 4
Caching
Indexing, Direct mapped, associativity
Nov. 6
Caching
Replacement policy, handling writes, impact on MMIO
Nov. 8
Caching
Spacial vs. temporal, predictive, multi-layer caches
Nov. 11
Exam 2 review
Nov. 13
Exam 2
In class, open notes
Nov. 15
Exam 2 solutions
Project 4: Interrupts due 6pm
Nov. 18
Pipeline
CPU pipeline stages, data hazards
Nov. 20
Pipeline stage 2
pipeline stalls, basic out-of-order execution
Nov. 22
Pipeline stage 3
Branch prediction, speculative execution
Homework 4: Caching and Interrupts due 6pm
Nov. 25
Fall break - No class
Nov. 27
Fall break - No class
Nov. 29
Fall break - No class
Dec. 2
Virtual Memory
Paging, multi-level page tables
Dec. 4
Virtual Memory Level 2
MMU, permissions
Dec. 6
Speculative hazards
Spectre / Meltdown
Homework 5: Pipelines and Virtual Memory due 6pm
Dec. 9
System calls
OS privileges, system calls
Dec. 11
Exam review
Dec. 13
No class

Final Exam   TBD