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

Though this is currently a beta version of the book that we’ll continue to improve, it’s already in use by intermediate-level CS courses at West Point (Computer Organization) and Swarthmore College (Intro to Computer Systems). It also serves as supplemental background textbook for upper-level courses that cover Operating Systems, Computer Architecture, Compilers, Networks, Databases, and Parallel Computing.

If you’re interested in using our textbook (and possibly providing us feedback), we would love to hear from you! We are actively seeking chapter reviewers and looking for feedback from the larger community.

If you have any questions, please do not hesitate to reach out to us!

Beta Access

As this is a beta release, we’re currently requiring a password to access the content. If you’re an instructor, please contact Kevin to arrange access for your course. If you’re a student taking a course that is using Dive into Systems, please verify your account credentials with your instructor.

The beta release is available in two forms:

  • Stable is a version of the book frozen as of Sept. 2 2019. During the fall and spring semesters, the stable version will only receive changes that correct problems. It won’t receive new content, but 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.

    The stable version of the book is available in two formats (both contain the same content):

For Fall 2019, the stable version is IA32 only. We’re planning to release the x86_64 version as part of the Spring 2020 update.

Mailing List

If you’d like to get in touch with the authors, ask questions about the book, or report bugs, please join our mailing list or contact one of us directly.

Chapters Available Now (in beta form)

  • 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

  • The Memory Hierarchy and Caching

  • Code Optimization

  • The Operating System

  • Shared Memory Parallel Programming

Chapters Coming Soon

  • Parallel Programming — Beyond Shared Memory