Official course specification including learning outcomes, weekly topics, grading policy, references, programming projects, academic policies, and course expectations.
Course overview, expectations, development environment, Linux review, OS structure, system calls, user mode, kernel mode, and basic command-line tools.
Process abstraction, process creation, fork, exec, wait, context switching, POSIX threads, thread models, and system call interfaces.
Race conditions, critical sections, locks, condition variables, semaphores, monitors, deadlock, and concurrent programming patterns.
Scheduling policies, fairness, response time, throughput, real-time scheduling, multiprocessor scheduling, and scheduling tradeoffs.
Address spaces, memory allocation, segmentation, paging, page tables, translation lookaside buffers, and memory protection.
Demand paging, page replacement algorithms, working sets, swapping, copy-on-write, memory-mapped files, and virtual memory performance.
File abstraction, directories, inodes, block allocation, journaling, crash consistency, file system layout, and reliability.
Disk scheduling, SSD behavior, I/O stacks, buffering, caching, device drivers, storage performance, and benchmarking.
Virtual machines, hypervisors, hardware-assisted virtualization, virtual CPUs, virtual memory, device virtualization, and VM isolation.
Containers, namespaces, cgroups, union file systems, Docker, container security, and lightweight isolation mechanisms.
Distributed process management, remote procedure calls, distributed file systems, naming, transparency, fault tolerance, and consistency.
Operating systems for cloud environments, resource management, cluster scheduling, serverless platforms, and infrastructure abstraction.
Access control, privilege separation, sandboxing, authentication, kernel attack surfaces, isolation, and security case studies.
Linux kernel architecture, kernel modules, process management, memory subsystems, file systems, system calls, and kernel debugging.
Profiling, tracing, benchmarking, bottleneck analysis, Linux performance tools, scalability, and experimental evaluation.
Student project presentations, system demonstrations, evaluation results, research discussion, and final course review.
The course evaluation may include programming assignments, laboratory work, research paper summaries, quizzes, a midterm exam, and a final project. Exact percentages can be updated based on department policy.
Recommended resources include operating systems textbooks, Linux documentation, kernel source code, systems research papers, and practical manuals for Linux, Docker, virtualization, and performance tools.
This course emphasizes understanding operating systems by building, measuring, debugging, and analyzing real system components. Students are expected to connect theoretical concepts with practical implementation and to critically read modern systems research.