Syllabus
Topics will not necessarily be covered in this order. We will revisit core concepts, such as resource sharing and isolation, throughout the semester to illustrate the tussle faced by system designers. Each item will roughly occupy one lecture.
- Introduction
- Operating systems, browsers and networks: sharing resources
- Security: protecting resources and data
- Operating system concepts
- Core components of an operating system
- Isolation and resource sharing: threads and processes
- Scheduling (with comparison to networks)
- Process synchronization
- Main memory
- File systems
- I/O devices (audio, video)
- Interrupts and event/interrupt-driven programming
- Networking concepts
- Internet overview
- Isolation and sharing: From wires to virtual circuits and packets
- Physical infrastructure
- The basic network infrastructure: core and access
- Differences between designing software and networks
- Protocol layering for complexity management
- Applications: HTTP, remote login, email, audio/video
- Support and mapping services: DNS, DHCP
- The role of transport protocols
- Address sharing, flow control and congestion control: UDP and TCP
- Getting packets from A to B: IP and routing overview
- Networks as an operating system service
- Day in the life of a web request
- Security
- Causes of security failures (stack attacks, information leakage, privilege escalation, denial-of-service, social engineering, ...)
- Isolation and defense-in-depth
- Authentication, authorization and non-repudiation
- Core concepts of encryption and hashing
- Introduction to public key cryptography; TLS
- ACL
- Web-based attacks (cross-site scripting, SQL insertion)