This course provides an in-depth exploration of computer system engineering, encompassing both software and hardware aspects. Key topics include:
Participants will engage with case studies of existing systems and current literature to draw comparisons and learn from design projects that reinforce theoretical concepts.
This module revisits the classical shortest paths problem, specifically analyzing directed minor-free graphs that contain negative arc lengths without negative-length cycles. The discussion will include advanced algorithms designed for such graphs.
We will delve into:
This module focuses on fault isolation in client-server architectures. We will examine techniques for ensuring that failures in one client do not impact the overall system.
Topics include:
This module introduces the concepts of virtualization and virtual memory, discussing their roles in modern computing environments.
Key areas covered include:
This module delves into the concepts of virtual processors, threading, and coordination. We will discuss how these elements contribute to efficient computing systems.
Topics include:
This module emphasizes performance metrics and analysis in computer systems to ensure efficient operation. We will explore various methods for measuring and enhancing performance.
Key areas of focus include:
This module introduces networking fundamentals, covering essential concepts and technologies necessary for modern computer systems.
We will explore:
This module discusses the principles of layering in network design, focusing on the link layer and its significance.
Topics include:
This module covers the network layer and routing protocols, essential for directing data across networks.
Key topics include:
This module focuses on the end-to-end layer of the network architecture, discussing its significance in communication systems.
We will cover:
This module explores distributed naming systems, essential for identifying resources in a networked environment.
Topics include:
This module addresses the concept of reliability in computer systems, focusing on ensuring consistent performance under varying conditions.
Key areas covered include:
This module introduces atomicity concepts, crucial for ensuring that operations in computer systems are completed reliably and consistently.
Topics include:
This module covers recoverability, emphasizing strategies for maintaining system functionality after failures.
Key areas include:
This module addresses the importance of isolation in computing systems, focusing on how to separate processes to prevent interference.
Key topics include:
This module discusses transactions and consistency in computing, focusing on maintaining reliable operations across distributed systems.
Key areas include:
This module covers multi-site atomicity, essential for maintaining reliable processes across distributed systems with multiple sites.
Key topics include:
This module introduces security concepts in computing systems, focusing on the essentials of protecting data and resources.
Key areas covered include:
This module focuses on authentication methods in computing systems, emphasizing their importance in securing user identities and data.
Key topics include:
This module discusses authorization and confidentiality, focusing on controlling access to data and resources within systems.
Key areas include:
This module covers advanced authentication techniques, emphasizing their role in enhancing system security.
Topics include:
This module investigates complex, trusted systems, emphasizing the design and implementation of systems that require high levels of trust and reliability.
Key areas include: