CS:APP3e, Bryant and O'Hallaron (original) (raw)
CS:APP3e Student Site
This page contains additional resources for students using the CS:APP3e text.
Material from the CS:APP Textbook
- Labs for self-study students (without solutions)
- Original PowerPoint line drawings and Excel graphs
- Code examples
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 GDB Materials
- Beej's Quick Guide to GDB (based on the very handy gdb -tui mode)
- Two-page x86-64 GDB cheat sheet (pdf, txt)
Online C and Linux Materials
- CS:APP3e Unix FAQ
- Prof. Norm Matloff's Unix/C Tutorial Center
- The GNU projectprovides online manuals for all GNU tools, including Emacs,GCC,GDB, and Make.
IA32 and x86-64 Documentation
The definitive Intel 64 and IA-32 Architectures Software Developer's Manualsare 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
- 1993 article by Dennis Ritchie on theDevelopment of the C Language.
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 depictionof this color system.
- The CS:APP book presents several examples where the interplay between signed and unsigned arithmetic leads to bugs and security vulnerabilities. A bookby Robert Seacord (from the Computer Emergency Response Team) describes a more complete collection of vulnerabilities and provides secure coding guidelines. Note in particular the 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-64 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
- Complete code used as demonstration of program profiling
- 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:APP3e 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. (pdf).
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 thecsapp.c and csapp.h files. Compiled and tested on Linux boxes. - The authoritative list of MIME types.