Computer Systems
The Introduction to Computer Systems 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.
Course Website: https://www.cs.cmu.edu/~213/
Textbook: Computer Systems: A Programmer’s Perspective, Third Edition
Course Overview
Abstraction is good, but don't forget reality.
Programs and Data
Bits operations, arithmetic, assembly language programs
Representation of C control and data structures
Aspects of architecture and compilers
The Memory Hierarchy
Memory technology, memory hierarchy, caches, disks, etc.
Aspects of architecture and operating systems
Exceptional Control Flow
Hardware exceptions, processes, process control, UNIX signals, non-local jumps
Aspects of compilers, operating systems, and architecture
Virtual Memory
Virtual memory, address translation, dynamic storage allocation
Aspects of architecture and operating systems
Networking and Concurrency
High-level and low-level I/O
Internet services and web servers
Concurrency, threads
I/O multiplexing with select
Aspects of networking, operating systems, and architecture
Last updated