Course Schedule Fall 2020

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


Part 1. Introduction

Monday Wednesday Friday
Aug. 24
Welcome
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
Assembly
Introduce Nios II, decoding instructions

Part 2. Assembly

Monday Wednesday Friday
Sep. 7
Labor Day - no class
Sep. 9
DE0-Lite
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
Interrupts
ISR, configuring interrupt peripherals
Oct. 23
Interrupts
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
Caching
Indexing, Direct mapped, associativity
Nov. 9
Exam 2 review
Nov. 11
Exam 2
During class, open notes
Nov. 13
Caching
Replacement policy, handling writes, impact on MMIO
Nov. 16
Caching
Spacial vs. temporal, predictive, multi-layer caches
Nov. 18
Pipeline
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