The ICS (Introduction to Computer Systems, 15-213/18-213/15-513) course of Carnegie Mellon University provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation.
C Programming Lab
Data Lab
Bomb Lab
Attack Lab
Cache Lab
Shell Lab
Malloc Lab
Proxy Lab
The following is about a containerized developing environment for 15213, based on Docker and Ubuntu.
$ git clone [email protected]:Maecenas/ICS-15213-CSAPP3e-CMU.git && cd ICS-15213-CSAPP3e-CMU
$ docker-compose run --rm shark
# can also run with Docker
$ docker run --rm -v "`pwd`"/labs:/usr/src/app/ -it lx70716/cmu-15213
Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e), Randal E. Bryant and David R. O'Hallaron, Pearson, 2016
Table of Content