Computer Architecture and the Hardware/Software Interface

Next running

14 Oct - 21 Nov
7:00pm-8:30pm Mon/Thu

Location

San Francisco

Price

$1800

Apply for this course

Computer architecture—sometimes called “computer organization”—is an important first look at computing from below the software surface. In our experience it is one of the most neglected area among self-taught software engineers.

The course is scoped as an introduction to the topic, designed for software engineers who wish to be better software engineers, rather than prospective hardware engineers.

The focus is on building a strong mental model of the actual execution of programs by a microprocessor, so that you can better reason about the code you write. This manifests most clearly as the ability to write faster code, whether by better understanding the available instruction set, by reasoning more clearly about branch prediction or cache coherence, or by understanding the limits of parallel execution.

Classes

  1. Binary Encodings of Data
  2. Lab: Writing a Virtual Operating System
  3. Lab: C Programming and Reverse Engineering
  4. The Memory Hierarchy
  5. The Fetch-Decode-Execute Cycle
  6. Introduction to Assembly Programming
  7. Lab: Writing a Virtual Machine
  8. A Brief Tour of Logic Circuits
  9. The Structure of a Simple CPU
  10. Sequential Circuit Components
  11. Introduction to Operating Systems: Booting, Loading, and Virtual Memory
  12. An Overview of C, the Portable Assembly Language

Projects and exercises

The practical component of this course involves a number of small exercises, mostly writing C or assembly code to understand the hardware/software interface, or designing simple circuits to really understand what your microprocessor does. A favorite exercise among students involves profiling and refactoring a snippet of code to dramatically improve performance based on understanding CPU cache levels.

Assumed knowledge

This course assumes confident general programming abilities. Some familiarity with C and/or assembly programming is advantageous but not required: both are covered in class.

Available sessions

14 Oct - 21 Nov
7:00pm-8:30pm Mon/Thu
San Francisco
7 Jan - 14 Feb 2020
5:00pm-6:30pm PT Tue/Fri
Live online

This course will next be taught by

Oz Nova

Oz is the lead instructor at Bradfield, and most frequently teaches Algorithms and Data Structures, Computer Architecture, Databases, Operating Systems and Distributed Systems. Prior to co-founding Bradfield, he worked for a decade as a software engineer and engineering manager, including as CTO and Co-founder of Topguest (acquired by Switchfly) and Vida.com.