CS360 -- Systems Programming

Jian Huang --- Fall 2020


Professor: Jian Huang

Teaching Assistants:

Class:

Lab Sessions:


Textbook

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.


Grading Policy

  • Midterm: 20%
  • Final: 25%
  • Labs: 55%
  • Class Participation: 5% extra credit

    Note:


    Labs

    The first lab session will take the entire allotted time, attendance is mandatory since the TAs will go over general things that you need to know for the entire semester. Subsequent lab sessions are not mandatory. 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 and for getting face-to-face time with the TAs.

    You may go to either lab session as long as there is space. If there is not enough space, preference goes to those who have signed up for the specific lab. As you cannot use the labs when other classes are having their labs, you may want to use both lab times as dedicated work times, again in which the TAs are available to help you.


    Lab Submission

    All submissions are to be through SVN. Please refer to TA's page for detailed instructions. All lab assignments are due by midnight of an announced date (usually on a Wednesday).


    Early Submission Bonus

    If you submit early, you will receive bonus points for early submission at a rate of 10% per day, with a 30% cap. Please note the unit. It's not 10 points per day, it's 10% of your lab score.


    Late Submission Penalty and a One-Time Waiver

    If you happen to have missed the dealine of an assignment, you should always still submit it. We assess a 20% 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.


    Academic Misconduct

    All lab assignments and exams must be completed on your own. Discussions are encouraged, but each student is expected to undertake all intellectual exercises without any compromise. The following are a few examplary scenarios that we hope will not take place this semester: