vzendara / CMU_15213_CSAPP3E_Lab

Self-Study: The Class lab of CMU-15213(2015 version) http://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/schedule.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The lab of 15-213: Intro to Computer Systems: Fall 2015 version

This Repo is for the lab of CMU-15-213: Intro to Computer Systems

or

The lab from book : Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e)

You can go to CMU website to watch the lecture video.

Running Environment: Ubuntu 18.04

Updating...

  • 1. Data Lab : Students implement simple logical, two's complement, and floating point functions, but using a highly restricted subset of C. This lab helps students understand the bit-level representations of C data types and the bit-level behavior of the operations on data.(wait for the lab report.)
  • 2. Bomb Lab : The lab teaches students to understand assembly language, and also forces them to learn how to use a debugger. It's also great fun. A legendary lab among the CMU undergrads.
  • 3. Attack Lab : Students are asked to modify the behavior of the targets by developing exploits based on either code injection or return-oriented programming. This lab teaches the students about the stack discipline and teaches them about the danger of writing code that is vulnerable to buffer overflow attacks.
  • 4. Cache Lab: Students write a general-purpose cache simulator, and then optimize a small matrix transpose kernel to minimize the number of misses on a simulated cache. This lab uses the Valgrind tool to generate address traces. Note: This lab must be run on a 64-bit x86-64 Linux system.
  • 5. Shell Lab: Students implement their own simple Unix shell program with job control, including the ctrl-c and ctrl-z keystrokes, fg, bg, and jobs commands. This is the students' first introduction to application level concurrency, and gives them a clear idea of Unix process control, signals, and signal handling.
  • [Bonus] Linking: this project just a summary for the knowledge of linking, which also mainly from the book CS:APP3e
  • 6. Malloc Lab: Students implement their own versions of malloc, free, and realloc. This lab gives students a clear understanding of data layout and organization, and requires them to evaluate different trade-offs between space and time efficiency. One of our favorite labs. When students finish this one, they really understand pointers!
  • 7. Proxy Lab: Students implement a concurrent caching Web proxy that sits between their browser and the rest of the World Wide Web. This lab exposes students to the interesting world of network programming, and ties together many of the concepts from the course, such as byte ordering, caching, process control, signals, signal handling, file I/O, concurrency, and synchronization.

About

Self-Study: The Class lab of CMU-15213(2015 version) http://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/schedule.html

License:MIT License


Languages

Language:C 57.7%Language:Assembly 32.7%Language:Perl 4.8%Language:Shell 3.0%Language:Makefile 1.1%Language:Python 0.7%Language:HTML 0.1%