Design and Engineering of Computer Systems
Week 1 - Introduction to computer systems.• Introduction and overview of the course• Principles for designing computer systems• Overview of computer system hardware and softwareWeek 2 - Process management and CPU virtualization• Process abstraction and process management in operating systems• Threads and concurrency• Virtual machines and containersWeek 3 - Memory management• Memory management in operating systems• Virtual memory and paging• Optimizing memory access in user programsWeek 4 - Disk and network I/O• Filesystem data structures and implementation• Synchronous and event-driven APIs for socket-based network communication• Network I/O subsystem in operating systemsWeek 5 - Computer networking• Architecture of the Internet• Internet routing, transport and applications• Network securityWeek 6 - End-to-end application design• Inter-process and inter-thread synchronization• Architecture of multi-tier applications• Case studies and examples of systems designWeek 7 - Performance engineering• Performance measurement and analysis• Techniques to improve performance of computer systems• Caching, horizontal and vertical scaling, load balancingWeek 8 - Reliability engineering• Techniques for fault tolerance in computer systems• Replication, consistency, and atomicity• Case studies of designing reliable computer systems