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. Please contact Kevin if you’d like access.

The beta release is available in two forms: stable is a version of the book as of Sept. 1 2019, and current is version that contains edits past this date.

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

The Stable version of the book is a snapshot of the book taken on Sept. 1, 2019. It is also available in two formats:

  • As a collection of documents: link TBA by Sept. 1, 2019

  • As a single-page document: link TBA by Sept. 1, 2019

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