CS 378: Linux Kernel Programming

Spring 2002, Course ID (unique): 51356


This course is designed as a laboratory component in the undergrad Operating Systems curriculum. It will supplement CS372 (Introduction to Operating Systems) and enable students to experiment with a contemporary OS (Linux). Through a series of programming assignments, the students will develop an appreciation in systems programming in general, and gain necessary skills and experiences to work large system software as complex as an OS kernel.

As a collaboration with the Linux Technology Center at IBM Austin, we will also have guest lectures, external expertise, and additional project mentors from IBM.


Course Grading

Syllabus (draft)

  1. Introductions
  2. Linux Basics
  3. Kernel Basics
  4. Using Kernel Services
  5. Managing Memory
  6. Managing Processes
  7. Managing Times and Synchronization
  8. Linux Devices
  9. Linux Filesystems
  10. Linux Networking
  11. Linux Security
  12. Contemporary Topics
  13. Term Projects


The students will first do a series of smaller projects to cover various aspects of a Linux kernel. Then, they will do a bigger term project to explore a particular area.

Reading Materials and References

© 2002 Yongguang Zhang