Course Schedule Fall 2018

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

Part 1. Introduction

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

Part 2. Assembly

Monday Wednesday Friday
Sep. 10
Introduce Nios II, decoding instructions
Sep. 12
Assembler directives, creating Nios program from scratch
Sep. 14
Number representations
Two's complement, sign extension
Sep. 17
Number representations 10
Floating point
Sep. 19
Logic operations
ALU design/logic operations, overflow
Sep. 21
Turing C into assembly
Compiler examples
Sep. 24
Memory layout
Loads/stores, stack, MMIO
Sep. 26
Memory alignment
bytes vs words, alignment
Homework 2: Logic and ALUs due 6pm
Sep. 28
Basic peripherals
Switches, hex displays, buttons, ADC/DAC
Project 1: Assembly due 6pm
Oct. 1
Exam 1 review
Prepare for first exam
Oct. 3
Exam 1
In-class exam
Oct. 5
No class

Part 3. Interfaces

Monday Wednesday Friday
Oct. 8
Basic I/O
Busy wait vs polling, UART
Oct. 10
Interacting with peripherals
Bit-bang WS2812 interface
Oct. 12
Application Binary Interface (ABI)
function calls in assembly, caller/callee saved
Oct. 15
Procedure calls
Return addresses, assembly examples
Oct. 17
Procedure calls
Calling C functions from assembly
Oct. 19
Buffer overflows
Smashing the stack for fun and profit
Project 2: Basic I/O due 6pm
Oct. 22
Overflows, continued
Buffer overflow walkthrough
Oct. 24
ISR, configuring interrupt peripherals
Oct. 26
Code walkthrough, Interrupts in C
Homework 3: Functions due 6pm
Oct. 29
Interrupt example
continue code walkthrough
Oct. 31
Interrupts continued
continue code walkthrough
Nov. 2
Advanced Embedded Systems
Priority Inversion, DMA

Part 3. CPU design

Monday Wednesday Friday
Nov. 5
Indexing, Direct mapped, associativity
Nov. 7
Replacement policy, handling writes, impact on MMIO
Nov. 9
Spacial vs. temporal, predictive, multi-layer caches
Nov. 12
Exam 2 review
Nov. 14
Exam 2
In class, open notes
Nov. 16
Exam 2 solutions
Nov. 19
Fall break - No class
Nov. 21
Fall break - No class
Nov. 23
Fall break - No class
Nov. 26
CPU pipeline stages, data hazards
Nov. 28
Pipeline stage 2
pipeline stalls, basic out-of-order execution
Nov. 30
Pipeline stage 3
Branch prediction, speculative execution
Project 4: Interrupts due 6pm
Dec. 3
Virtual Memory
Paging, multi-level pages
Homework 4: Caching and Interrupts due 6pm
Dec. 5
Virtual Memory 2
MMU, permissions
Dec. 7
Speculative hazards
Spectre / Meltdown
Dec. 10
System calls
OS privileges, system calls
Homework 5: Pipelines and Virtual Memory due 6pm
Dec. 12
Exam review
Dec. 14
No class

Final Exam   Monday, December 17 7:30-10:00pm ECCR 200