Professor: Jian Huang
Teaching Assistants:
Class:
Mandatory Lab Session:
Since about a year ago, we stopped requiring an official text book for CS360. In part because the electronic programming guides and reference manuals are very good and also because the CS360 online course materials have become quite comprehensive. In light of this, however, we do still recommend getting and reading the following three books.
Advanced Programming for the Unix Environment, by Richard Stevens. This book is one of the most definitive and classic reference book for any serious developers that deal with the system level. This book provides comprehensive descriptions of various subject. However, sometimes an information overload is created, especially portability and Unix standards are involved. This issue will gradually go away once you have mastered a necessary level of familiarity with the subject. This book is published by Addison Wesley and has been around for a long time. As far as this course is concerned, it does not matter which edition you have.
Since early days, C has been the standard programming language for operating systems. Although most of you have been taught to program in C already, few among you can tell me what features in C have made that role possible. The C Programming Language, 2nd Ed., by Kernighan and Ritchie, Prentice Hall, is the most authoritative source of information on this subject. In fact, this book is one of the books that I personally go back and read from time to time. As the designer of the language, the authors provided a great illustration of how the language is designed and how it is intended to be used. This book is not required for the class, however, having a copy on your desk could be very beneficial as you dewell on the subject.
Since we focus on the principles and methodologies of operating system, Unix to be specific, it would be very helpful to understand the design ideas as well as the process of how Unix evolved over the years. The Art of Unix Programming by Eric Raymond is a book that tells the tale. I like this book because it unwraps what operating system development has been through and reveals all the driving forces behind technology evolution that are both technical and non-technical. Each week during the semester, I would leave reading assignments with the class from this book. Fortunately, an electronic source is available and you don't have to buy this book.
Note:
Attending the first lab session is mandatory since the TAs will go over general things that you need to know for the entire semester. Subsequent lab sessions are optional. You may attend, leave or stay as you see fit. However, you should know that lab session is a very good time for getting an early start on lab assignments. You may go to any lab session as you choose.
All submissions are to be through git. Please refer to TA's page for detailed instructions. All lab assignments are due by midnight of an announced date (usually on a Wednesday).
If you submit early, you will receive bonus points for early submission at a rate of 5% per day, with a 15% cap. Please note the unit. It's not 5 points per day, it's 5% of your lab score.
If you happen to have missed the dealine of an assignment, you should always still submit it. We assess a 10% penalty for each day that you have missed the deadline. Every student is entitled to a waiver of late submission penalty for one lab assignment throughout the semester. For example, Frodo has too many other obligations when Lab6 is due. Not being able to finish Lab6 before the announced deadline, Frodo chooses to submit his Lab6 two weeks late and use his only penalty waiver to still receive full credit for Lab6. Frodo also understands that for all subsequent lab assignments, he does not have this benefit any more. Please always save this waiver for a truly needy scenario.