CS:APP2e Student Site
This page contains additional resources for students using the
CS:APP2e text.
Material from the CS:APP Textbook
Linux Reference Books
- Michael Kerrisk, The Linux Programming Interface, No Starch Press, 2010.
- The essential Linux system programming guide by the
maintainer of the Linux man pages. Clear, authoritative, and
encyclopedic. Includes file I/O, processes, signals, time, threads,
shared libraries, IPC, synchronization, and sockets. A great book.
Online C and Linux Materials
IA32 and x86-64 Documentation
The definitive
Intel 64 and IA-32 Architectures Software Developer's Manuals
are available online. These include:
- Volume 1: Basic Architecture
- Volume 2a: Instruction Set Reference, A-M
- Volume 2b: Instruction Set Reference, N-Z
- Volume 3a: System Programming Guide, Part 1
- Volume 3b: System Programming Guide, Part 2
Chapter 1: A Tour of Computer Systems
Chapter 2: Representing and Manipulating Information
- Practice Problem 2.9: This problem uses the RGB color system
as an illustration of a Boolean algebra.
Here's a full color depiction
of this color system.
- The book presents several examples where the interplay between signed
and unsigned arithmetic leads to bugs and security vulnerabilities. Here's
a CERT
Advisory (from the
Computer Emergency Response Team)
that describes a more complete
collection of vulnerabilities and provides secure coding guidelines.
Note in particular their advice to use unsigned data types for loop indices.
- Official report on the Ariane 5 failure.
Chapter 3: Machine-Level Representation of Programs
Chapter 4: Processor Architecture
- Y86 tools and documentation
-
Source distribution
(README)
- Simulator guide (pdf)
- Technical report describing a successful effort at formally
verifying an earlier version of the pipelined Y86 implementations.
(pdf)
Chapter 5: Optimizing Program Performance
- Text files to benchmark word frequency analysis program
Chapter 6: The Memory Hierarchy
- Generate your own memory using the
ECT memperf tool
developed by Tom Stricker (the inventor of the memory mountain)
and Christian Kurmann at ETH.
- A less sophisticated program from the CS:APP2e text for generating
the memory mountain (tar)
Chapter 10: Virtual Memory
- P. Wilson, M. Johnstone, M. Neely, and D. Boles, Dynamic
Storage Allocation: A Survey and Critical Review, International
Workshop on Memory Management, Kinross, Scotland, Sept, 1995.
(ps).
Comprehensive reference on storage allocators.
Chapter 12: Network Programming
- The Tiny Web server (tiny.tar).
Expands with tar xvf tiny.tar into a directory called
./tiny that contains everything you need to test the Tiny
web server, including sample HTML files, GIFS, CGI scripts, and the
csapp.c and csapp.h files.
Compiled and tested on Linux boxes.
-
The authoritative list of
MIME types.