Course Schedule Fall 2020

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

Part 1. Introduction

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

Part 2. Assembly

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

Part 3. Interfaces

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

Part 3. CPU design

Monday Wednesday Friday
Nov. 2
Interrupts continued
continue code walkthrough
Nov. 4
Interrupts continued
continue code walkthrough
Nov. 6
Indexing, Direct mapped, associativity
Nov. 9
Exam 2 review
Nov. 11
Exam 2
During class, open notes
Nov. 13
Replacement policy, handling writes, impact on MMIO
Nov. 16
Spacial vs. temporal, predictive, multi-layer caches
Nov. 18
CPU pipeline stages, data hazards
Nov. 20
Pipeline stage 2
pipeline stalls, basic out-of-order execution
Project 4: Interrupts due 6pm
Nov. 23
Virtual Memory
Paging, multi-level page tables
Nov. 25
No class
Homework 4: Caching and Interrupts due 6pm
Nov. 27
Fall break - No class
Nov. 30
System calls
OS privileges, system calls
Dec. 2
Hardware side channels
Mistakes we continue to make
Dec. 4
Speculative hazards
Spectre / Meltdown
Homework 5: Pipelines and Virtual Memory due 6pm
Dec. 7
Exam review
Dec. 9
No class
Dec. 11
No class

Final Exam   Thursday, December 10 7:30-10:00pm