Software Systems: Behind the Abstractions

Next running

4 Jan - 4 Mar 2022
5:00pm-6:30pm PT Tue/Fri
Live online

(and three subsequent sessions)

Price

$3600

Apply for this course

As a field, computer programming advances from one abstraction to another. It's hard to imagine a world without high level languages, operating system services, network sockets and database query languages. However, no abstraction is perfect—some very far from it! Unfortunately, a software engineer who can't peer through, subvert, modify or replace these abstractions thus has a cap on their abilities.

This course is a first look under the hood of many important systems including the CPU itself, compilers and interpreters, operating systems and computer networks. It is intended for professional software engineers with some working familiarity with these systems, but little or unsatisfactory fundamental understanding of them. It also serves as a preview of our Computer Science Intensive program.

Projects and exercises

Almost all individual classes involve a pre-class exercise, to motivate the topic and bring a programmer’s perspective. Some examples of exercises are:

  • Writing a few short programs in x86-64 assembly
  • Writing a tree-walk interpreter for a simple language
  • Implementing a stack-based bytecode virtual machine
  • Write a basic shell program
  • Implementing a basic container runtime
  • Parsing a packet capture file
  • Writing a small HTTP proxy
  • Writing a traceroute clone
  • Writing a basic database query executor, including a join node (hash join or sort-merge join)

Assumed knowledge

This course doesn't assume any prior computer science background, however we do expect that you are comfortable with your programming language and tools of choice, ie that you will not require assistance with any of the programming aspects of exercises. In addition, if you don't have experience with a systems language (such as C/C++, Golang or Rust) we would encourage you to pick up some basic familiarity with such a language before the course starts, e.g. by working through The C Programming Language.

Available sessions

4 Jan - 4 Mar 2022
5:00pm-6:30pm PT Tue/Fri
Live online
21 Mar - 19 May 2022
5:00pm-6:30pm PT Mon/Thu
Live online
7 Jun - 5 Aug 2022
5:00pm-6:30pm PT Tue/Fri
Live online
19 Sep - 17 Nov 2022
5:00pm-6:30pm PT Mon/Thu
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.