CS 240 Computing Systems and Concurrency

This course covers introductory material on the design and implementation of computer-based systems, with an emphasis on distributed systems. Students will gain an understanding of the principles and techniques behind the design of modern, reliable, and high-performance systems. Topics include server design, network programming, naming, transactions, concurrency and locking, consistency models and techniques, security, data-intensive computing and fault tolerance. Modern techniques and systems employed at some of the largest Internet sites (e.g., Google, Facebook, Amazon) will also be covered. Through programming assignments, students will gain practical experience designing, implementing, and debugging real distributed systems.




Prerequisite: equivalent of an undergraduate course on operating systems (or computer system architecture or concurrency control). Good programming skills. Knowledge and comfort with systems programming.