Dive into Systems
Suzanne J. Matthews, West Point
Tia Newhall, Swarthmore College
Kevin C. Webb, Swarthmore College
The Dive into Systems project develops and evaluates teaching resources specifically for introductory computer systems, computer organization, and parallel computing courses. Our primary projects include:
-
Dive into Systems: our free, online textbook (also available is a low cost print version from No Starch Press).
-
Interactive, online learning tools.
-
Interactive, online exercises.
The Textbook
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 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 includes one or more chapters on the following topics: Introduction to Computer Systems; C Programming (covers most of the C language, debugging with gdb and valgrind, and code optimization); Computer Organization and Architecture (includes binary representation, computer architecture, memory hierarchy, and caching); Assembly Programming (covers 64-bit x86, 32-bit x86, and 64-bit ARM); The Operating System; and Parallel Computing (focus on shared memory and threads, and also looking ahead to others).
Read The Book
Our textbook is available free, on-line in two different formats (mult-page, and single page). Additionally, a low-cost print version of our textbook is available from No Starch Press (note that our textbook will always remain free on-line here). Instructors, if you are using our textbook for your course, please let us know (please email us at authors@diveintosystems.org sharing this information with us).
Free On-line Version
This is release of Version 1.2 of the Dive into Systems textbook that was updated on August 25, 2023. This version includes two new appendices and links to early versions of interactive exercises.
The two Appendices added since Version 1.0 of our book are:
-
Appendix 1: "Chapter 1 for Java Programers". This is a version of Chapter 1 that uses Java code examples to compare to C code (Python examples are used in Chapter 1).
-
Appendix 2: "Using Unix". This starts with the basics of Unix command line and Unix file system, and then covers a wide range of Unix commands and utilities (e.g., tar, make and Makefiles, editors, chmod, ssh, man, io redirection, …). It also introduces some more advanced features like pipes, getting system state, and writing shell scripts. With each topic we include links to resources for further information.
If you find any errors, typos, etc., please contact us. We appreciate your feedback!
Instructors: if you are using our textbook for your course, please let us know. Please email us at authors@diveintosystems.org sharing this information with us.
Print Version
A low cost print version of our textbook is available by purchase directly from No Starch Press, and from numerous other sellers including Amazon.
Please keep in mind that the online version of our textbook will always remain free from our website.
Dive into Systems Print Version, No Starch Press, August 2022 (ISBN-13: 9781718501362).
Interactive Tools
As part of our NSF funded project, we are developing interactive book exercises and related interactive learning tools.
ASM Visualizer
ASM Visualizer is our assembly visualization tool. It is designed to help students learn assembly programming, aiding in their understanding of how assembly instructions are executed and the relationship between assembly and equivalent high-level language code. Our tool allows a user to step both forward and backward through the execution of an assembly program, one instruction at a time, seeing how instructions use and modify values in stack memory and CPU registers.
ASM Visualizer supports three user-interface modes for different stages of learning assembly programming.
-
Arithmetic Mode is designed for beginners. It hides the assembly code for the containing function’s stack set up and return, allowing the user to to enter basic arithmetic and control instructions, and to set some initial values in registers and on the stack (for local variables), used by their instructions.
-
Function Mode is for users who want practice with function call/return and stack set-up and tear-down, and with writing functions in assembly. This mode provides the start of a
main
function with some stack set up and tear down and return instructions added. A user adds additional instructions tomain
, including support for adding calls to additional functions that they add. -
Full Program Mode is for users who want to write a full program to trace through. This mode does not provide any starting point assembly scaffolding code like the other two modes.
See our SIGCSE'25 paper for more information about this tool, including an evaluation of its use in introductory systems courses.
Interactive Exercises
With external exercise developers and our students, we are currently adding interactive exercises to our online textbook. Some of these also include our development of new interactive exercise tools specifically for exercises on computer systems topics.
This work is currently under development. Our in-progress exercises are available online (and are also linked to from our online textbook chapters): Dive into Systems Interactive Exercises
Exercise Developers
Our NSF sponsored project supports experts from our community to help develop book exercises, and supports students to help with the development of interative tools and with the implementation of the exercises in their interactive, online form.
We are grateful to our team of exercise developers for their work in helping to create these exercises:
-
Tanya Amert, Carleton College
-
Jeannie Albrecht, Williams College
-
John Barr, Ithaca College
-
David Bunde, Knox College
-
Danielle Ellsworth, Colorado College
-
Sat Garcia, University of San Diego
-
Roberto Hoyle, Oberlin College
-
Bill Kerney, Clovis Community College
-
Zachary Kurmas, Grand Valley State University
-
Sunjae Park, Wentworth Institute of Technology
-
Crystal Peng, Park University
-
Christine Reily, Skidmore College
-
John Stratton, Whitman College
-
Richard Weiss, The Evergreen State College
-
Bryce Wiedenbeck, Davidson University
Activities
Announcements
We are delighted to announce our NSF sponsored project to add interactive content to our textbook. As part of this effort we are seeking community help to create and add dynamic visualizations, interactive exercises, and worked examples to augment our textbook with online resources that will include exercises for students and supplemental resources for instructors.
To learn about recruiting and events associated with this project, and to hear about other information about and updates to our book, please subscribe to our low-volume Mailing List.
Events
-
SIGCSE'25 Affiliated Event: Collaboratively Developing Dynamic and Interactive Materials for Dive into Systems. Wednesday, February 26, 2025, 1-5:45 PM, See the link for more details, and to fill out the RSVP form to register for this event.
-
SIGCSE'25 Paper Presentation: "ASM Visualizer: a Learning Tool for Assembly Programming" Sat, March 1, 10:45 AM EST
Past Events/Presentations
-
Presentation, NSF June 2024.
-
SIGCSE'24 Affiliated Event: Building interactivity into Dive into Systems. Wednesday, March 20, 2023, 1-5:45 PM, See the link for more details.
-
Presentation, WCAE'23 "A Free Online Textbook Introducing Computer Architecture Topics", Tia Newhall, Suzanne Matthews, Kevin Webb, Orlando, FL, USA, June 17 2023. (paper, talk slides)
-
SIGCSE'23 Affiliated Event: Building interactivity into Dive into Systems. Wednesday, March 15, 2023, Toronto, CA. (program link)
-
Presentation, CCSC Eastern'22: "Adding Interactive Content to Dive into Systems, a free online textbook for introducing students to computer systems". (talk slides)
-
Panel: "How do you write an open-access textbook and why should you do it?". Panelists: Carmelo Galanti, Temple University, Donald Wargo, Temple University, Tia Newhall, Swarthmore College. Moderated by Suzanne J. Matthews, West Point. Oct. 13, 2022, Friends Center, Philadelphia, PA. Sonsored by the Aydolotte Foundation and Swarthmore College Libraries.
-
Presentation, SIGCSE'21: "Dive into Systems: A Free, Online, Textbook for Introducing Computer Systems". (open access paper, talk slides)
-
Panel, SIGCSE'21: "TextbooksForAll: Free textbooks and their place in computer science education". Suzanne Matthews, Chris Mayfield, Remzi Arpaci-Dusseau, Kevin Webb. (abstract)
Papers
See our open-access paper from SIGCSE'21 for more information about our textbook, including an evaluation from student and faculty participants in our 2019-2020 Early Adopters Program.
-
"ASM Visualizer: a Learning Tool for Assembly Programming" Tia Newhall, Kevin Webb, Isabel Romea, Emma Stavis, Suzanne Matthews, To appear in Proceedings of the 56th ACM Technical Symposium on Computer Science Education (SIGCSE'25), March 2025.
-
"A free Online Textbook Introducing Computer Architecture Topics", Tia Newhall, Suzanne Matthews, Kevin Webb. In Proceedings of the Workshop on Computer Architecture Education (WCAE'23) in conjunction with the 50th International Symposium on Computer Architecture (ISCA), June 2023. (talk slides)
-
"Dive into Systems: A Free, Online Textbook for Introducing Computer Systems", Suzanne J. Matthews, Tia Newhall, Kevin C. Webb. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education (SIGCSE '21), March, 2021. (talk slides)
Using Dive into Systems
Everyone is free to use Dive into Systems in their course! The book will remain free online. If you are using Dive into Systems at your institution, please reach out and let us know (authors@diveintosystems.org)! This information will really help us continue to expand the book.
2019-2020 Early Adopters
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 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 was a huge help to the authors, as it helped us get valuable insight into student and faculty experiences with the textbook. We used the feedback we receive to improve and strengthen the content of Dive into Systems, and are very thankful to everyone who completed our student and faculty surveys.
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)
Current Adopters
The following institutions are currently using Dive into Systems. If you don’t see your institution listed, please reach out to us (authors@diveintosystems.org)!
U.S. Adopters

Alabama
Arkansas
California
Colorado
District of Columbia
Delaware
Florida
Illinois
Indiana
Iowa
Kentucky
Massachusettes
Minnesota
|
Missouri
New Jersey
New York
North Carolina
Ohio
Oregon
Pennsylvania
Tennesee
Washington
Wisconsin
|
International Adopters
-
NYU Paris - Paris, France
-
Polish-Japanese Academy of Computer Science - Warsaw, Poland
-
IT University of Copenhagen - Copenhagen, Denmark
People
Principle Investigators
-
Suzanne J. Matthews, West Point
-
Tia Newhall, Swarthmore College
-
Kevin C. Webb, Swarthmore College
Current Students:
-
Emily Dai, Swarthmore College
-
Zhengfei (Alex) Li, Swarthmore College
-
Akiva Sherin, Swarthmore College
-
Xiaoya (Yana) Yuan, Swarthmore College
Past Students:
-
Grace Kim, West Point
-
D’Angelo Gourdine, West Point
-
Dylan Green, West Point
-
Jasmine Fan, Swarthmore College
-
Isabel Romea, Swarthmore College
-
Emma Stavis, Swarthmore College
-
Yue Zhang, Swarthmore College
-
Noor Ali, Swarthmore College
-
Arys Aikyn, Swarthmore College
-
Kuzivakwashe Mavera, Swarthmore College
-
Sigrid Lokensgard, Swarthmore College
-
Paulina Trifonova, Swarthmore College
-
Rezhwan Kamal, Swarthmroe College
Mailing List
To hear announcements and updates related to the textbook, please consider joining our low-volume mailing list.
Contact Us
If you have any questions, comments or want to see your institution listed, please e-mail us at authors@diveintosystems.org