Dive into Systems

Suzanne J. Mathews, West Point
Tia Newhall, Swarthmore College
Kevin C. Webb, Swarthmore College


Dive into Systems is a free, online textbook that serves as a gentle introduction to computer systems, computer organization, and parallel computing. The book is intended for an audience that has only a CS1 background. It guides readers through a vertical slice of a computer to develop an understanding of a variety of systems topics, including:

  • how a computer runs a program, from a program expressed in a high-level language to low-level binary representation and circuits

  • programming in C and Assembly, assuming a Python CS1 background

  • introduction to operating systems and the systems costs that affect program performance (the memory hierarchy, caching, and code optimization)

  • introduction to parallel computing with shared memory and pthreads

Dive into Systems is designed to be present topics in as independent manner as possible so that it can be used as a primary textbook for a wide range of introductory-level computer systems courses, or as a supplemental background textbook for upper-level courses that cover Operating Systems, Computer Architecture, Compilers, Networks, Databases, and Parallel Computing.

Dive into Systems was first piloted as a textbook in the Computer Organization course at West Point in Fall 2018 and in the (Intro to Computer Systems) at Swarthmore College in Spring 2019. In Fall 2019, Dive into Systems launched its Early Adopters Program, which enabled faculty around the United States to pilot the stable release of Dive into Systems at their institutions.

Current Status — Release Candidate 1.0

This is a Release Candidate of version 1.0 of the Dive into Systems textbook. We are still editing content to improve readability, eliminate typos, etc. We appreciate your feedback!

Although we currently don’t plan to reorganize sections, such changes may still become necessary before the final 1.0 release.

Instructors: if you are using our textbook for your course, please let us know. Please email one of the authors sharing this information with us.

Stable Version

Stable is a version of the book frozen as of August 14, 2020. During the fall and spring semesters, the stable version will only receive changes that correct problems. It won’t receive new content, and you can count on the section titles and numbers not changing. Between semesters, we’ll update the stable version to include new content from the development version.

As a collection of documents (easier to navigate)

As a single-page document

Development Version

Development is a version that contains the latest content additions. As we get content feedback from our reviewers and the community, we’ll apply changes in the development version. While we don’t presently anticipate making any major reorganizations, it’s possible that section names or numbers might change in the development version.

As a collection of documents (easier to navigate)

As a single-page document

Print Version

We are pleased to announce that No Starch Press has agreed to produce a low cost version of our textbook. While we do not yet have a release date for the print addition, we will update this page with more details as they are forthcoming.

Please keep in mind that the on-line version of our textbook will always remain free from our website.

Mailing List

If you’re interested in announcements about our textbook or providing feedback, we would love to hear from you! We have a low-volume mailing list, or you can contact one of the authors directly.

If you have any questions, please don’t hesitate to reach out to us.

Chapters Available

  • Introduction to Computer Systems

  • Getting Started in C (for python programmers)

  • A Deeper Dive into C

  • C Debugging Tools (gdb, valgrind)

  • Binary Data Representation

  • Computer Architecture

  • Assembly Programming (3 different assembly languages covered: 64-bit x86, 32-bit x86, and 64-bit ARM)

  • The Memory Hierarchy and Caching

  • Code Optimization

  • The Operating System

  • Shared Memory Parallel Programming

  • Parallel Programming — Beyond Shared Memory

Early Adopters

An alpha release of Dive into Systems was piloted at West Point in Fall 2018; The beta release of the textbook was piloted at West Point and Swarthmore College in Spring 2019. In Fall 2019, Dive into Systems launched its Early Adopter Program, which enabled faculty around the United States to pilot the stable release of Dive into Systems at their institutions. The Early Adopter Program is a huge help to the authors, as it helps us get valuable insight into student and faculty experiences with the textbook. We use the feedback we receive to improve and strengthen the content of Dive into Systems, and are very thankful to everyone who has completed our student and faculty surveys.

2019-2020 Early Adopters

The following individuals piloted Dive into Systems as a textbook at their institutions during the 2019-2020 Academic Year:

  • John Barr (Ithaca College) - Computer Organization & Assembly Language (Comp 210)

  • Chris Branton (Drury University) - Computer Systems Concepts (CSCI 342)

  • Dick Brown (St. Olaf College) - Hardware Design (CSCI 241)

  • David Bunde (Knox College) - Introduction to Computing Systems (CS 214)

  • Bruce Char (Drexel University) - Systems Programming (CS 283)

  • Bryan Chin (U.C. San Diego) - Computer Organization and Systems Programming (CSE 30)

  • Stephen Carl (Sewanee: The University of the South) - Computer Systems and Organization (CSci 270)

  • John Dougherty (Haverford College) - Computer Organization (cs240)

  • John Foley (Smith College) - Operating Systems (CSC 262)

  • Elizabeth Johnson (Xavier University) - Programming in C

  • Bill Kerney (Clovis Community College) - Assembly Programming (CSCI 45)

  • Deborah Knox (The College of New Jersey) - Computer Architecture (CSC 325)

  • Doug MacGregor (Western Colorado University) - Operating Systems/Architecture (CS 330)

  • Jeff Matocha (Ouachita Baptist University) - Computer Organization (CSCI 3093)

  • Keith Muller (U.C. San Diego) - Computer Organization and Systems Programming (CSE 30)

  • Crystal Peng (Park University) - Computer Architecture (CS 319)

  • Leo Porter (U.C. San Diego) - Introduction to Computer Architecture (CSE 141)

  • Lauren Provost (Simmons University) - Computer Architecture and Organization (CS 226)

  • Kathleen Riley (Bryn Mawr College) - Principles of Computer Organization (CMSC B240)

  • Roger Shore (High Point University) - Computer Systems (CSC-2410)

  • Tony Tong (Wheaton College, Norton MA) - Advanced Topics in Computer Science: Parallel and Distributed Computing (COMP 398)

  • Brian Toone (Samford University) - Computer Organization and Architecture (COSC 305)

  • David Toth (Centre College) - Systems Programming (CSC 280)

  • Bryce Wiedenbeck (Davidson College) - Computer Organization (CSC 250)

  • Richard Weiss (The Evergreen State College) - Computer Science Foundations: Computer Architecture (CSF)