- Going in depth is tempting for teachers but confusing for students.
- Focus less on tradeoffs and analysis of system design choices, and more on a subset of common motivating themes for features and simple examples of how they are implemented, focusing on understanding the mechanics of how they work. For example, motivate process and virtual memory abstractions as a solution to making the system easy to use and more efficient, and then focus on understanding the mechanism of how simple single-level paging works to translate the virtual address from the instruction executed by the CPU to the physical address used to access physical memory.
- Focus on simple examples of how the systems work using simple exercises. For example, focusing on the mechanics of caching and leaving the discussion of different policies for upper-level courses. Motivating caching by program locality can help link it to other parts of the course (system architecture, assembly, the memory hierarchy, ...).
- In a breadth or survey type course it is particularly helpful to explicitly tell students how the topics are linked to each other and how each is linked to the main theme(s) of the course.
- For example, in a systems breadth course, explaining how the current topic fits into a course theme of "how to efficiently run programs" or "how does a computer run programs" and linking it to previous topics helps students see the relationships and common themes among the set of specific topics covered in the course. It is often difficult for students to see these links on their own.