The website is being updated often, please check back frequently for the latest information.

Basic Information

  • Syllabus: pdf
  • Lectures: TR 3:30-4:45pm, Pamplin Hall 31
  • Instructor: Huaicheng Li, huaicheng@vt.edu
    • Office hours: 10-11am on Fridays, Gilbert Place 4109
  • TAs:
    • Hanchen Xu, hanry@vt.edu (Office hours: Wed 2:30-3:30pm, Gilbert Place 4211)
    • Hansen Idden, hansenidden@vt.edu (Office hours: Mon 2:30-3:30pm, Gilbert Place 4211)
  • Online forum: Ed Discussion
    • Please turn on the notifications to avoid missing important updates!

Lecture attendance is mandatory. Each student is allowed to miss three lectures over the course of the semester; students missing more than three lectures will not receive participation credit (5%) unless there is a compelling reason for the absences.

Please ask questions during the lectures to make the class more interactive!

Acknowledgement: LKP at VT was designed by Dr. Changwoo Min. We will customize and adapt the course materials based on Dr. Min’s version, including lectures, exercises, and projects.

Lectures

The Lectures will cover

  • Various components in the Linux kernel, including
    • Syscall
    • Kernel data structures and debugging
    • Process management and scheduling (scheduler, ebpf, etc)
    • Interrupt handling
    • Kernel synchronization
    • Timer management
    • Memory management (address space, in-kernel memory allocation, page table and fault management, heterogeneous memory management)
    • File system and block layer (VFS, page cache, NVMe storage)
    • Networking stack (TCP, RDMA, TBD)
  • Recent/classic OS research papers

  • Guest lectures (TBD)
    • industry trends, emerging technologies

Grading

ComponentWeight
In-Class Quizzes (8 × 3%)24%
Final Exam20%
Projects (P1 6% + P2 8% + P3 10% + P4 12%)36%
Exercises (5 × 2%)10%
Paper Reading (5 × 1%)5%
Participation5%

In-Person Assessment: 44% (Quizzes + Final Exam) - verifies understanding

Component Details

  • In-Class Quizzes (24%): Bi-weekly knowledge checks on recent lectures
    • Closed-book, in-class, ~15 minutes each
    • Tests conceptual understanding, not implementation details
  • Final Exam (20%): Comprehensive closed-book exam
  • Projects (36%): Major kernel programming projects (individual)
    • P1 (6%): Syscall
    • P2 (8%): Profiling
    • P3 (10%): Memory Management
    • P4 (12%): File System (TBD)
  • Exercises (10%): Individual kernel programming exercises (Ex0-Ex4)
    • Topics are tentative and may be adjusted
    • Additional exercises may be offered as bonus
  • Paper Reading (5%): Recent OS research paper discussions
  • Participation (5%): Lecture attendance and engagement
  • Bonus (up to 5%): Bonus exercises, great questions, helping others on Ed

Reading Materials

No required textbooks for the class. The lectures are defined by the instructor to focus on topics which are not fully covered by one specific textbook. However, there are many great resources (books, online resources, etc.) I recommend if you would like to go deeper in understanding and hacking Linux/OS.

Textbooks

Linux specific:

  1. (highly recomended) Linux Kernel Development (3rd edition), By Robert Love

  2. (optional) Professional Linux Kernel Architecture, by Wolfgang Mauerer

  3. (optional) Understanding the Linux Kernel, by Daniel P. Bovet, Marco Cesat

  4. (optional) Linux Device Drivers, 3rd Edition, by Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman

  5. (optional) Linux Kernel Programming: A Comprehensive and Practical Guide to Kernel Internals, Writing modules, and Kernel Synchronization, Second Edition, by Kaiwan N. Billimoria

OS textbooks:

  1. OSTEP, Operating Systems: Three Easy Pieces, by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau, free OS textbook!

  2. OS:PP, Operating Systems: Principles and Practice (2nd edtion), by Tom Anderson and Michael Dahlin

Linux Kernel Programming

There are tons of online materials talking about Linux kernel programming, see below for some examples:

Research Papers

File Systems

Memory Management

Scheduling

Systems Programming

Systems programming skills are necessary for this course. If you would like to sharpen your C/C++ systems programming skills in the UNIX/Linux environment, the following books are worth reading:

Writing OSes

Interested in building an OS? See the exciting projects below:


Back to top

LKP: (Advanced) Linux Kernel Programming (Spring 2026) - Huaicheng Li