Cover of The Elements of Computing Systems: Building a Modern Computer from First Principles

The Elements of Computing Systems: Building a Modern Computer from First Principles

In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, "The Elements of Computing Systems" gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system. Indeed, the best way to understand how computers work is to build one from scratch, and this textbook leads students through twelve chapters and projects that gradually build a basic hardware platform and a modern software hierarchy from the ground up. In the process, the students gain hands-on knowledge of hardware architecture, operating systems, programming languages, compilers, data structures, algorithms, and software engineering. Using this constructive approach, the book exposes a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other courses fit into the overall picture. Designed to support one- or two-semester courses, the book is based on an abstraction-implementation paradigm; each chapter presents a key hardware or software abstraction, a proposed implementation that makes it concrete, and an actual project. The emerging computer system can be built by following the chapters, although this is only one option, since the projects are self-contained and can be done or skipped in any order. All the computer science knowledge necessary for completing the projects is embedded in the book, the only pre-requisite being a programming experience. The book's web site provides all tools and materials necessary to build all the hardware and software systems described in the text, including two hundred test programs for the twelve projects. The projects and systems can be modified to meet various teaching needs, and all the supplied software is open-source.

Audience
adult
Length
medium · 325 pages

Click a tag to see books like this one that share it. Point at it (on a phone, tap it) for less of it instead.

Read it? Sign in to help tag it.

Liked The Elements of Computing Systems: Building a Modern Computer from First Principles? Here’s where I’d start.

These suit anyone who liked The Elements of Computing Systems: Building a Modern Computer from First Principles. Sign in and mark a few books for picks shaped around your own taste.

  1. Computer Systems: A Programmer's Perspective Shares computer science, programming, cs
  2. Types and Programming Languages Shares computer science, programming, cs
  3. Compilers: Principles, Techniques, and Tools Shares computer science, programming, cs
  4. Purely Functional Data Structures Shares programming, computer science, tech

“People who read The Elements of Computing Systems: Building a Modern Computer from First Principles tend to reach for these next.”

  1. Let Over Lambda
  2. Concepts, Techniques, and Models of Computer Programming
  3. On Lisp: Advanced Techniques for Common Lisp
  4. Advanced Programming in the UNIX Environment

“If you want more of the same (science about technology), start with these.”

  1. jQuery in Action
  2. Database System Concepts
  3. The UNIX Programming Environment
  4. Java Puzzlers: Traps, Pitfalls, and Corner Cases

“If it was the computer science that hooked you, try one of these.”

  1. Code: The Hidden Language of Computer Hardware and Software
  2. Introduction to Algorithms
  3. Selected Papers on Computer Science
  4. Concepts of Programming Languages

“These start from a similar idea, even if they go somewhere else with it.”

  1. Getting Started with Raspberry Pi
  2. Beginning Programming for Dummies [With CDROM]
  3. Computer Organization & Design: The Hardware/Software Interface
  4. An Embedded Software Primer