COMP-4364 Details
COMP 4364 Contemporary Systems Architecture
Course Description
This course provides a practical, modern understanding of computer systems and the technologies that comprise contemporary infrastructure. The curriculum is structured as a progression, beginning with a foundation in core operating system concepts with a focus on practical mental models. It then builds on this foundation to explore how OS principles are applied in virtualization technologies, such as virtual machines and containers. Finally, the course examines how these technologies are orchestrated and scaled to create the large-scale, distributed systems that power modern cloud computing platforms. The objective is to equip students with a knowledge of the systems they will encounter in a modern professional software development career.
Course Learning Objectives
The overall learning objectives for this course are understanding and applying operating system fundamentals, virtualization and containerization in real-world scenarios to solve problems. Additionally, familiarity and knowledge of cloud computing fundamentals, and an ability to identify and analyze use cases for cloud computing architectures.
Unit 1: Operating System Fundamentals
- Understand the Role and Structure of Operating Systems
- Analyze Hardware Components Managed by the OS
- Apply Core OS Abstractions
- Use System Calls and Shell Interfaces
- Understand Processes and Threads
- Implement CPU Scheduling Concepts
- Address Concurrency and Synchronization Issues
- Explain Deadlocks and Their Conditions
- Understand Memory Management and Virtual Memory
- Analyze File System Design and Implementation
Unit 2: Virtualization and Containerization
- Understand Principles of Virtualization
- Analyze Hypervisor Types and Techniques
- Explore Linux Container Foundations
- Construct Containers Manually
- Apply Docker for Container Management
- Implement Advanced Docker Features and Security Practices
Unit 3: Cloud Computing
- Understand Cloud Computing Fundamentals
- Apply Cloud Architecture and Design Patterns
- Manage Containerized Applications
- Evaluate Serverless Computing Models
- Implement Infrastructure as Code (IaC)
- Explore Major Cloud Platforms
- Perform Hands-On Cloud Deployment
Course Topics
Unit 1: Operating System Fundamentals
- Introduction to Operating Systems — role of the OS as an abstraction layer and resource manager; kernel vs. user mode
- Computer Hardware and OS Structure — overview of CPU, memory hierarchy, and I/O devices; monolithic OS structure and boot process
- Core OS Abstractions: Processes and Files — processes as programs in execution; file abstraction and directory hierarchy
- System Calls and Shell — system call interface, POSIX standard, and shell as a command interpreter
- Processes and Threads — process lifecycle, states, hierarchies; threads as lightweight execution units
- CPU Scheduling — scheduling algorithms: FCFS, SJF, Round-Robin, Priority; modern schedulers like Linux CFS
- Concurrency and Synchronization — race conditions, mutual exclusion, semaphores, mutexes; Producer-Consumer problem
- Deadlocks — conditions for deadlock; Dining Philosophers example
- Memory Management and Virtual Memory — base/limit registers, paging, page tables, MMU, TLB; page replacement algorithms
- File Systems — file attributes, allocation methods (contiguous, linked, indexed), links, journaling, VFS
Unit 2: Virtualization and Containerization
- Principles of Virtualization — VMs on a single host; hypervisor requirements (safety, fidelity, efficiency); types: full system, OS-level (containers), process-level
- Hypervisors and Techniques — Type 1 vs. Type 2 hypervisors; handling privileged instructions: hardware-assisted, binary translation, paravirtualization
- Linux Containers: Namespaces and Cgroups — kernel features for isolation and resource control; namespaces (PID, network, mount); cgroups for CPU/memory limits
- Containerization in Practice — combine kernel features (unshare, chroot, namespaces, cgroups) to build containers; network namespaces; rootless containers
- Introduction to Docker — image, container, Dockerfile, Docker Hub; build and run images; multi-container apps and networks
- Advanced Docker and Security — Docker Compose for multi-container apps; image security risks; best practices: minimal base images, multi-stage builds, non-root users
Unit 3: Cloud Computing and Distributed Systems
- Introduction to Cloud Computing — cloud model and economic shift (CapEx to OpEx); essential characteristics; service models (IaaS, PaaS, SaaS); deployment models (public, private, hybrid, multi-cloud)
- Cloud Architecture and Design Patterns — patterns for resiliency (clustering, failover) and scalability (load balancing, autoscaling); distributed system design patterns (retry, circuit breaker, queue-based load leveling)
- Container Orchestration — principles of orchestrating containerized applications; cluster architecture; core objects for deployment and networking
- Serverless Architectures — event-driven computing; models (functions vs. containers); pay-per-use billing; automatic scaling; benefits and limitations
- Infrastructure as Code (IaC) — automating resource provisioning; declarative configuration; workflow for planning and applying infrastructure changes
- Cloud Platform Case Studies — overview of major cloud providers; global infrastructure concepts; compute, storage, database, networking, and identity services