Learn CS

15-213 Introduction to Computer Systems



The ICS course 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.

Prerequisite: CS106B

Schedule (Fall 2017)

  1. Overview pptx pdf code video pdf tar
  2. Bits, Bytes, & Integers I pptx pdf video
  3. Bits, Bytes, & Integers II pptx pdf code video
  4. Floating Point pptx pdf video
  5. Machine Prog: Basics pptx pdf video
  6. Machine Prog: Control pptx pdf video
  7. Machine Prog: Procedures pptx pdf video
  8. Machine Prog: Data pptx pdf video
  9. Machine Prog: Advanced pptx pdf code video-partA video-partB
  10. Code Optimization pptx pdf video
  11. The Memory Hierarchy pptx pdf video
  12. Cache Memories pptx pdf video
  13. Linking pptx pdf video code
  14. ECF: Exceptions & Processes pptx pdf video code
  15. 7pm - 9pm Exam Review in Rashid Auditorium stack-cache float assembly
  16. ECF: Signals & Nonlocal Jumps pptx pdf video code
  17. System Level I/O pptx pdf video code
  18. Virtual Memory: Concepts pptx pdf video
  19. Virtual Memory: Systems pptx pdf video
  20. Dynamic Memory Allocation: Basic pptx pdf video
  21. Dynamic Memory Allocation: Advanced pptx pdf video
  22. 7pm - 9pm Malloc Bootcamp in Rashid Auditorium pdf video
  23. Network Programming pptx pdf video code
  24. Network Programming pptx pdf video code
  25. Concurrent programming pptx pdf video code
  26. Synchronization: Basic pptx pdf video code
  27. Synchronization: Advanced pptx pdf video code
  28. Thread-Level Parallelism pptx pdf video code
  29. Future of Computing I pptx pdf video
  30. Future of Computing II pptx pdf video
  31. 7pm - 9pm Final Review in Rashid Auditorium pdf pptx thread-sync virt-mem io-processes malloc signals


From Labs for self-study students (without solutions) on CS:APP3e Student Site

  1. Data Lab handout starter code
  2. Bomb Lab handout starter code
  3. Attack Lab handout starter code
  4. Cache Lab handout starter code
  5. Shell Lab handout starter code
  6. Malloc Lab handout starter code
  7. Proxy Lab handout starter code

There are some other labs available (Architecture Lab, Performance Lab) on CS:App3e Student Site, but those labs are not included in 15-213's course schedule. You can try these if you are interested.