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.

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 version of the book is available in two formats (both contain the same content):

Feedback to the Authors and Mailing List

We’re currently seeking early adaptors and feedback from the CS community.

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