When professors in MIT’s Department of Electrical Engineering set out to design a computer science curriculum in 1967, they began with three fundamental classes–hardware, software, and systems–and no textbooks.
Since then, most of the 5,000 or so computer science students who have passed through MIT have taken those three classes. Many remember Computer Systems Engineering (6.033, originally known as 6.233) with special fondness, even though they never did get a textbook. But now, after more than four decades, two longtime 6.033 professors have published Principles of Computer System Design: An Introduction.
Jerry Saltzer ‘61, SM ‘63, ScD ‘66, was fresh out of grad school when he designed and began teaching Computer Systems Engineering in 1967. To start, he wrote some notes and mimeographed them for the class. The next year, he added more notes. The next year, still more. As computing changed, so did Saltzer’s notes. Other professors contributed comments and problem sets. Students suggested improvements. For the many years that Saltzer taught the class, his course material expanded and changed with the field. And every year, he copied the growing stack of notes for incoming students.
Fast-forward to the spring of 1994, when Frans Kaashoek began to take over teaching 6.033, using Saltzer’s notes. The course was evolving more rapidly (that Internet thing had taken off), and Kaashoek was adding summaries of his own lectures to the stack.
to view chapters 7 through 11 of Principles of Computer System Design: An Introduction through MIT OpenCourseWare.
By the late 1990s, Kaashoek decided that it was time to impose some order. He approached Saltzer, who agreed to the project. “We needed to fill in some gaps and create a coherent structure,” says Saltzer. “But we still viewed it as just organizing the notes.”
In 2005, having distilled thousands of pages of notes, Saltzer and Kaashoek sent a book proposal to six publishers. And in 2009, 6.033 got its first textbook.
The book reflects 6.033’s breadth and scope. Saltzer always tried to make the course timeless, emphasizing universal principles that underlie diverse computer systems. A section of the class notes from the 1970s about information protection, which was published then as a tutorial paper, outlined 10 principles of computer security. The principles contained in the current chapter on security are “basically identical,” Kaashoek says. “Think of how much has changed since those were written down. There were no PCs. No Internet. And yet they still apply.”
Principles contains six chapters, and five more are available free online through MIT OpenCourseWare. “The publishers thought you couldn’t market something that’s more than 700 pages,” Saltzer explains. “We had 1,200 pages of material. We puzzled over this and realized there’s this natural division, where everyone needs the first six, and the next five are somewhat more pick-and-choose. The combination might help us reach a broader audience. It’s a great experiment.”
Principles of Computer System Design is intended for students. But Saltzer says he and Kaashoek get occasional e-mails from alumni seeking a copy to replace mimeographed class notes squirreled away somewhere in their attic.