Tuesday, August 2, 2011

Origins: Designing A New Computer Systems Course

As I described in an earlier post, I had been teaching computer architecture to computer science students for many years without much success.  Students did not share my innate fascination with how computer systems are designed.

Meanwhile, at one of our faculty lunches, Garth Gibson described the challenges he had in his operating systems course with the students’ lack of understanding of how programs are executed.  He would say “To do a context switch, the OS needs to push the values of the registers onto the stack,” to which the students responded “Registers? Stack?  What are those?”  I told Garth that the students learned all that in my architecture course, but we realized that my course was not a prerequisite for operating systems, and it wouldn’t really work to make it so, in terms of student schedules.

So, Dave O’Hallaron (who had cotaught the computer architecture course with me) and I started thinking about a new course that would

  1. Provide a programer’s perspective, rather than a computer architect’s perspective on computers systems, and 
  2. would come early enough in the curriculum that it could then feed into our systems courses, including OS.
As we started working through the course material, we jettisoned everything about CPU design.  After all, how many people in the world ever design CPUs?  Perhaps a few thousand.  In presenting caches, we wouldn’t talk about how to design a cache---e.g., to set its size, determine its associativity, etc.  Instead, we would show how programs can be written such that their memory access patterns led to good (or bad) cache behavior.

We also decided to introduce the basics of operating systems and networking, again from a programmer’s perspective.  These include the ideas of processes and the Unix API for managing them, along with the basics of TCP/IP and the sockets interface.  This material would help students be better programmers and also prepare them for our OS and networking courses, where they actually implement these aspects of computer systems.We decided to simply call the course Introduction to Computer Systems.

Randy Bryant

1 comment:

  1. I teach Computer Architecture in Bulgaria. I know all editions of your book. I think it is a very good book, which supports the education of students. I recommend it and think ahead and do it. I would like to recommend to the authors - more examples of 64 bit mode. I could have helped create them. I would like to recommend to the authors - more examples of 64 bit mode. I could have helped create them. This recommendation does not reduce my assessment of your book. The book is excellent.