Cambridge Devsummit 2014: OS-related teaching working group
Session chair: Robert Watson
Attending: Sofian Brabez, Matthew Huxtable, Andrew Moore, Sevan Janiyan, Piete Brooks, Jonathan Price, Alan Jude, (ARM), Daniel Peyrolon Lago, Ruslan Bukin, Hiroki Sato, Jonathan Anderson, Ed Maste, Robert Watson
The purpose of this session was together people currently teaching, preparing to teach, or interested in teaching operating-system courses based on FreeBSD.
Attendees were asked about past and current teaching plans and interests.
- Robert: Preparing an 8-week masters course based on OS tracing/profiling at Cambridge; January 2015
- Jon: Preparing to teach a 13-week final-year OS course at Memorial University; January 2015
- Sato-san: Currently teaches a low-level CPU design course and considering a new OS course at Tokyo University of Science.
- David: Previously has taught an undergraduate OS course that involved writing a FreeBSD kernel module at Swansea.
- Alan: Has previously taught OS system administration for FreeBSD.
- Andrew: Currently teaches a masters-level hardware-software codesign course "Build an Internet Router" at Cambridge. This involves FPGA and software design. Also describes teaching at Sidney at the undergrad level.
The problem space
FreeBSD might be used both as a platform and subject matter for teaching. We discussed a number of teaching styles/audiences, and the applicability of FreeBSD to each:
- Undergrad: simulator/embedded-based course using a 'toy' OS
- Undergrad: a real OS, but extreme risk mitigation
- Masters: a real OS, but moderate risk mitigation
- Developer/corporate-focused 'training': strong technical background, but not necessarily in FreeBSD, or with a desire for more depth. E.g., architecture ports, embedded targets, kernel internals, etc.
- Self teaching on the Internet: self-paced online lectures, VMs to download and play with, documentation, etc -- not necessarily a MOOC, but with some properties of a MOOC.
All were of significant interest to the group. There was a consensus that preparing and sharing reusable material that can be used in different teaching styles and by various participants is very important. Topics that recur include how to manage risk for OS-related teaching, avoiding 'startup overhead' associated with building, and reproducibility -- e.g., via virtual machines. Where VMs are discussed, a differentiation is made between user-hosted VMs, where the experience may be inconsistent, and hosted VMs in EC2 or a teaching setup, which has more overhead but is much more robust and offers the opportunity to inspect/assess/debug student work. One suggestion was that when having students working on more complex projects, forcing them to work via Subversion or similar where instructors can also check out and try out experimental work has value.
- Lots of interest in the various different teaching styles, with participants often interest in addressing more than one
- A key concern is risk mitigation: real-world OSes are extremely interesting, but teaching with them exposes students to a lot of sharp edges where even a problem with a build system can produce a lot of work; both VM-based and tracing approaches seem plausible
- There is interest in multiple platforms for teaching: embedded boards, virtual machines hosted on a student computer, virtual machines on centrally managed systems
- Many ideas from MOOC-style teaching are of interest: we'd like a good source of not just online videos/documentation/etc, but also the ability to download VMs to do exercises on, automated marking/assessment/etc, and ways to facilitate open-source teaching communities
- Many participants in the session are directly involved in teaching and will have hands available to produce course material, exercises, etc over the next 12 months
- Preparing a single "one true course" is a non-goal
- VM checkpointing is one way to limit risk for kernel development
- Tracing-oriented approaches is another way to limit risk for kernel-centered teaching
- It's very useful to provide continuous-integration-style tools/tests/etc for students to use to manage complexity; reference implementations are also invaluable
- Peer support is also very useful: for community material, can we encourage community support? Synchronised teaching has benefits so that student peer support can occur via cohorts
- TAs or someone willing to play a TA role are also very important for lab-based teaching; while peers can help, you really want a community support framework -- e.g., along the lines of freebsd-questions
- The perfect is the enemy of the good: want to develop material iteratively with lots of testing and improvement cycles, and sharing can really make this scale better
- Various efforts are in flight, including one by Robert Watson, George Neville-Neil, and Gabor Pali during July/August 2014 in Cambridge to develop masters-level material that will go online