Courses Based on CS:APP
The CS:APP Preface
proposes 5 basic styles of systems courses
(ORG, ORG+, ICS, ICS+,
and SP) that could be taught from the book:
Chap
| Topic |
ORG |
ORG+ |
ICS |
ICS+ |
SP |
1 | Tour of systems | X | X | X | X | X |
2 | Data representation | X | X | X | X | X (d) |
3 | Machine language | X | X | X | X | X |
4 | Processor architecture | X | X | | | |
5 | Code optimization | | X | X | X | |
6 | Memory hierarchy | X (a) | X | X | X | X (a) |
7 | Linking | | | X (c) | X (c) | X |
8 | Exceptional control flow | | | X | X | X |
9 | Virtual memory | X (b) | X | X | X | X |
10 | System-level I/O | | | | X | X |
11 | Network programming | | | | X | X |
12 | Concurrent programming | | | | X | X |
Notes: (a) Hardware only, (b) No dyn. storage alloc,
(c) No dyn. linking, (d) No f.p.
Specific Examples
Here are some variants on these styles that real instructors have
developed for their classes.
- St. Louis University, Departments of Math and CS, and ECE
CSCI 224/ECE 317 - Computer Architecture
Jason Fritts, Spring 2015 (16-week semester)
A variant of the ORG course that covers the first four chapters of
CS:APP, culminating with a study of processor architecture.
- University of Nebraska, Dept. of Computer Science and Engineering,
CSCE/RAIK 284H - Foundations of Computer Systems
Steve Goddard, Spring 2010 (14-week semester)
- An interesting variant of an ORG+ course that augments the usual topics
of data representation, assembly language, processor architecture, and the
memory system, with additional coverage of basic system-level programming.
To see how the student's respond to Steve's dedication to the material, check out
this picture
- Northwestern University, Dept. of Computer Science,
EECS 213: Introduction to Computer Systems,
Fabian Bustamante, Spring 2012 (10-week quarter).
- A good example of a variant of an ICS course for schools on the
quarter system. It skips coverage of code optimization, but includes
some coverage of systems programming.
- Carnegie Mellon University, School of Computer Science,
15-213/18-213: Introduction to Computer Systems,
Taught every semester (14 weeks)
- This is the ICS+ course, the primary inspiration for the CS:APP text.
- Carnegie Mellon University, School of Computer Science,
15-349: Introduction to Processor Design,
Randy Bryant and David O'Hallaron, Summer 2002 (3-week mini-course).
- A well-received mini-course on processor architecture that we taught
to help us debug the material in Chapter 4.
- The original course material has been updated for CS:APP3e.