I am teaching Software Systems this fall, which is an introduction to operating systems and C programming, with a splash of networks and databases. Last time I taught it, I started work on a new textbook, called Think OS, to address some of the problems I ran into:
- Most Operating Systems classes, and the books that go with them, are written for students who already know C.
- Most OS books are big, and get into details about implementation that are not always relevant to programmers.
- Most OS books have a chapter on synchronization, but if you only spend a week on it, most students don’t really get it.
So Think OS is aimed at a different audience. I assume that readers are just learning C, so I start out using only the most basic language features and work my way up. And I focus on the parts of operating systems most relevant to programmers. Think OS is my answer to “What do programmers really need to know about the OS?”
Over the last week or so, I revised the existing chapters of Think OS and added new chapters on synchronization. The current draft is up now at Green Tea Press.
A few weeks ago I heard about a group in the Netherlands that uses Scrum methods in the classroom. They call it eduScrum, and their web page is here. The fundamental idea is that the teacher, as product owner, creates the product backlog, which specifies what the students should learn. The students pull items from the product backlog into their sprint backlog and make their own decisions about which items to work on, how to proceed, and in some cases how to demonstrate what they have learned.
I am planning to try it in Software Systems, so we’ll see how it goes!
UPDATE 6 October 2015: We just finished Sprint 2. Things are going well so far. Here’s what the standups look like.