Materials

For learning about operating systems, we recommend coming to class and paying attention. Then, some time after class, read the assigned reading. This way you can make sure you are understanding what is going on as we plow through the material.

For an OS text book, we provide you with a free one we have developed here at Wisconsin. Here you can find the free OS book. It pretty much covers what we talk about in class, and more! All yours for the amazing price of free. That said, if you want a printed copy, you can buy one, no problem; visit the free OS book web page for details on how to pay for a free OS book!

For help with projects, you should consider the following two books. They are awesome and useful.

The first book s about C programming, written by the people who invented it. This is a highly recommended book for the course.

The following topics are especially important to understand:

  • character arrays, null terminated strings, character pointers (1.9, 5.5, 5.10)
  • pointer arithmetic (also called address arithmetic) (5.4)
  • using array notation on pointers and vice-versa (5.3)
  • pointer arrays (5.6)
  • function pointers (pointers to functions) (5.11, 5.12)
  • external declarations and the difference between definition and declaration (4.3, 4.4, A8)
  • preprocessor file inclusion (#include) and macro substitution (#define) (for constant style definitions) (4.5, 4.11)

You can also read this short, free, and incomplete introduction to the C programming environment, available for your viewing convenience off of the book home page here.

You may also want to watch this video Links to an external site. for a C tutorial. The tutorial is given by a former CS 537 instructor and goes over details of C that are especially useful for the projects in CS 537. The following topics are covered: pointers and arrays, structs, function pointers, preprocessor, multiple files, and gdb. Again, you might want to pause the video while you try out the examples yourself.

The second book is about programming in the Unix environment, and it is particularly important if you'd like to become a Unix expert. But, you can absolutely get by without it and it is completely optional.