Course Schedule Fall 2018

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


Part 1. Introduction

Monday Wednesday Friday
Aug. 27
Welcome
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
Assembly
Introduce Nios II, decoding instructions
Sep. 12
DE0-Lite
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
Interrupts
ISR, configuring interrupt peripherals
Oct. 26
Interrupts
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
Caching
Indexing, Direct mapped, associativity
Nov. 7
Caching
Replacement policy, handling writes, impact on MMIO
Nov. 9
Caching
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
Pipeline
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