This course covers the principles of designing and engineering real-world computer systems, covering important concepts cutting across operating systems, computer networks, performance analysis, and distributed systems. The topics covered in the course include the process and thread abstractions for application design, memory and storage hierarchy, and abstractions for communications like sockets. We will study how large systems manage complexity via layering, modularity, and multi-tier architectures. We will learn also how to design scalable, fault-tolerant systems, and how to measure and optimize system performance. By the end of the course, students will be able to understand several practical aspects of designing and engineering computer systems.
Will be announced
Will be announced
Will be announced
Will be announced
Will be announced
Will be announced
Will be announced
Will be announced