Course Texts

Operating Systems: Three Easy Pieces

The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence. In understanding the conceptual, you will also learn the practical, including how an operating system does things like schedule the CPU, manage memory, and store files persistently.

Dive into Systems

Dive into Systems is a free, online textbook that serves as a gentle introduction to computer systems, computer organization, and parallel computing.

Assembly Programming

x86-64 Machine-Level Programming

CMU’s x86_64 Assembly guide. Covers various aspects of programming in assembly.

Caveat: Lists the %rbp register among the ordinary caller-save registers, whereas we keep its special meaning as the stack frame base pointer in this course.

C Programming

Stanford’s Essential C

Learn C

The C Programming Language

Lynda Tutorial

Free access here.

Godbolt Compiler Explorer

See the relationship between C code and Assembly, and quickly test out simple C programs.

The Development of the C Language

Operating Systems

Understanding the Instruction Pipeline

Modern Microprocessors

Other Tools

Useful man Pages

The Basics

man, ls, pwd, mkdir, rmdir, rm, cd, mv, cp, touch, echo, whoami, sort, cat, nl, cut, grep

Processes

ps, clone, getpid, fork, exec, proc

File I/O

open, close, read, write

Emacs

Guided Tour of Emacs

Emacs Cheat Sheet

Vim

Getting Started with Vim

PacVim

Vim Cheat Sheet

Git

Codecademy Git & GitHub Guide

GitHub Videos

Version Control Guide & Vocab

Useful for getting familiar with common version control terminology, independent of specific software like git.