|
| 1 | + |
| 2 | + |
| 3 | +<!-- |
| 4 | + * @version: |
| 5 | + * @Author: StevenJokes https://github.com/StevenJokes |
| 6 | + * @Date: 2020-08-18 16:08:50 |
| 7 | + * @LastEditors: StevenJokes https://github.com/StevenJokes |
| 8 | + * @LastEditTime: 2020-08-18 16:11:20 |
| 9 | + * @Description: |
| 10 | + * @TODO:: |
| 11 | + * @Reference:http://csapp.cs.cmu.edu/3e/students.html |
| 12 | +--> |
| 13 | + |
| 14 | +# CS:APP3e Student Site |
| 15 | + |
| 16 | +This page contains additional resources for students using the CS:APP3e text. |
| 17 | + |
| 18 | +Material from the CS:APP Textbook |
| 19 | +Labs for self-study students (without solutions) |
| 20 | +Original PowerPoint line drawings and Excel graphs |
| 21 | +Code examples |
| 22 | + |
| 23 | +Linux Reference Books |
| 24 | + |
| 25 | +Michael Kerrisk, The Linux Programming Interface, No Starch Press, 2010. |
| 26 | +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. |
| 27 | +Online GDB Materials |
| 28 | +Beej's Quick Guide to GDB (based on the very handy gdb -tui mode) |
| 29 | +Two-page x86-64 GDB cheat sheet (pdf, txt) |
| 30 | +Online C and Linux Materials |
| 31 | +CS:APP3e Unix FAQ |
| 32 | +Prof. Norm Matloff's Unix/C Tutorial Center |
| 33 | +The GNU project provides online manuals for all GNU tools, including Emacs, GCC, GDB, and Make. |
| 34 | +IA32 and x86-64 Documentation |
| 35 | +The definitive Intel 64 and IA-32 Architectures Software Developer's Manuals are available online. These include: |
| 36 | + |
| 37 | +Volume 1: Basic Architecture |
| 38 | +Volume 2a: Instruction Set Reference, A-M |
| 39 | +Volume 2b: Instruction Set Reference, N-Z |
| 40 | +Volume 3a: System Programming Guide, Part 1 |
| 41 | +Volume 3b: System Programming Guide, Part 2 |
| 42 | + |
| 43 | +Chapter 1: A Tour of Computer Systems |
| 44 | + |
| 45 | +1993 article by Dennis Ritchie on the Development of the C Language. |
| 46 | + |
| 47 | +Chapter 2: Representing and Manipulating Information |
| 48 | + |
| 49 | +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. |
| 50 | +The CS:APP book presents several examples where the interplay between signed and unsigned arithmetic leads to bugs and security vulnerabilities. A book by 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. |
| 51 | +Official report on the Ariane 5 failure. |
| 52 | + |
| 53 | +Chapter 3: Machine-Level Representation of Programs |
| 54 | + |
| 55 | +Chapter 4: Processor Architecture |
| 56 | + |
| 57 | +Y86-64 tools and documentation |
| 58 | +Source distribution (README) |
| 59 | +Simulator guide (pdf) |
| 60 | +Technical report describing a successful effort at formally verifying an earlier version of the pipelined Y86 implementations. (pdf) |
| 61 | + |
| 62 | +Chapter 5: Optimizing Program Performance |
| 63 | + |
| 64 | +Complete code used as demonstration of program profiling |
| 65 | +Source distribution (README). |
| 66 | +Text files to benchmark word frequency analysis program |
| 67 | +Full text of the collected works of Shakespeare. |
| 68 | +Full text of Moby Dick. |
| 69 | + |
| 70 | +Chapter 6: The Memory Hierarchy |
| 71 | + |
| 72 | +Generate your own memory using the ECT memperf tool developed by Tom Stricker (the inventor of the memory mountain) and Christian Kurmann at ETH. |
| 73 | +A less sophisticated program from the CS:APP3e text for generating the memory mountain (tar) |
| 74 | + |
| 75 | +Chapter 10: Virtual Memory |
| 76 | + |
| 77 | +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). |
| 78 | +Comprehensive reference on storage allocators. |
| 79 | + |
| 80 | +Chapter 12: Network Programming |
| 81 | + |
| 82 | +The Tiny Web server (tiny.tar). |
| 83 | +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. |
| 84 | +The authoritative list of MIME types. |
0 commit comments