Linux and the Student Hands-On Experience

CSI400/500 Operating Systems Fall 2012 and 3 previous times.

Syllabus Learning "goals" are demonstrable

  1. Explain what a complex software/hardware system does during normal and abnormal operational scenarios, and "drill down" to details of those subsystems that were studied. (Which one? Modern general purpose computer operating environment, emphasis on Linux/Unix.)
  2. Do intermediate (1st yr. grad., 4th sem. undergrad. semester) complexity C and some i386 assembler projects that utilize and/or simulate technologies listed in the course descriptions.
  3. Solve problems: Analyze scenarios for each topic, including identifying and comparing consequences of alternative choices. Utilize numbers, graphs, formulas, sequence diagrams, etc., together with accurate logical reasoning.
  4. Install Linux systems, build Linux kernels and kernel modules, find and annotate code in Linux sources for given OS functions, run, debug and test kernel modifications and modules. Report and interpret OS behavior using system tools and interfaces.

Practical Work

Particular Lab Benefits

Modern Topics

  1. Direct Rendering Interface
  2. Journaling Flash File System

Other "Open Source" or "cost-free" Learning Resources

  1. Linux Documentation Project: Learning to deal with fast technology change! Fix out-of-date things in the lab!
  2. IBM Developer Works
  3. Prof. Margo Seltzer's Harvard Course
  4. Old Linux Journal articles
  5. http://free-electrons.com/docs/
  6. Software Carpentry

Linux Source Sources

Reverse Engineering Diagrams

Drawing begins in lab, team can clean it, we image it, and team presents it in a Lecture meeting.

Particular GNUs

Linux should be called "GNU/Linux" (Stallman), but course emphasizes the Linux Kernel.