CS 3214 Computer Systems
CS 3214: Introduction to Computer Systems is a required Computer Science course that focuses on operating system principles as they are relevant to appliation-level programmers. The course was designed by Godmar Back to replace CS 3204: Operating Systems, and serves as a prerequisite to the Systems and Networking Capstone course. In addition to Back, the class has historically been taught by William McQuain, Ali Butt, and Dennis Kafura.
Topics covered include: operating systems design and architectures; processes, threads, synchronization techniques, deadlock; CPU scheduling; system call interfaces, system level I/O and file management; shell programming; separate compilation, loading and linking; interprocess communication (IPC); virtual and physical memory management and garbage collection; network protocols and programming; virtualization; performance analysis and optimization.
The course tends to have the same projects year-to-year, including:
- Buffer lab, which requires students to use buffer overflows to execute undefined behavior
- A malloc implementation
- An extensible shell (esh) that can run modules written by other students
- A threadpool
- A multithreaded systatd web server