CS360 -- Systems Programming

Jim Plank --- Spring, 2004

General Information


Professor: Jim Plank Teaching Assistants: Jonathan Gardner and Jun Xu. See the CS360 Lab Home Page for their information. Class TT 3:40-4:55 in Claxton 206

Lab Wednesday 8:00-11:00 in Claxton 105 and Wednesday 11:15-2:15 in Claxton 105

Grading is roughly 55% labs, 20% exam 1, 25% exam 2.

Lab grading policy will be set by the TA's. See their web page for information.

Lab questions should be directed to the TA's first, and then me.


Lecture Notes

There will lecture notes for each lecture. These will be put on the web with a pointer hanging off the class home page. The point of lecture notes is to give you a hard reference for the things that we talk about in class, since they are often not covered in the book.

All programs that I go over in class will also be online in a directory for that class (~plank/cs360/notes/name). The point here is that you don't have to try to copy them down in class, as that's a waste of your time.

I will try to make lecture notes available as soon as possible after class. Usually that will be by the end of the afternoon. I will notify you that the notes are completed by email.


Labs

Besides the first week, whose lab will probably take the entire session, lab attendance is mandatory in the beginning, during which time the TA's will go over general things that you need to know. After that, you may leave or stay as you see fit. This is a very good time, however, to get an early start on the lab, and use the TA's to answer questions.

You may go to either lab as long as there is space. If there is not space, precedence 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 TA's is available to help you.

The homeworks are where you are going to learn the most in this class. They are going to require far more than 3 hours per week. Thus, you will have to use evenings or weekends to get machine time. Work this out. Some classes will let you use extra machines if they are available and you are quiet. I believe there are no labs scheduled during evening and weekend hours. You may also want to explore remote login from UTCC machines, or from your own terminal and modem if you own one. Ask the TA's about how to log in remotely.


Homeworks

Homeworks will always be due at 11:59:59PM on tuesday night. Once you have finished writing your code, you must document it, create a makefile for it, and a shell script to show that it works. the TA's will go over this in detail in lab. To submit homeworks, you should go through the following steps: You may talk with the TA, other students, or me about your homeworks, but do the programming on your own. Copying other students' code is considered plagiarism.

The Textbook, and Its Code

The textbook for this class is Advanced Programming for the Unix Environment,'' by Richard Stevens. This is a wonderful reference book for Unix hacking, and it contains much valuable information. My only complaint with it is that it goes so much into issues of portability and Unix standards, that sometimes you get lost in the overload of information. This happens --- after a while, you'll figure it out. Reading the textbook is kind of like reading man pages: It takes a while to figure out how to get information from it, but once you do, it becomes an extremely valuable reference.

All of the code in the textbook is available online in the directory ~plank/cs360/book_examples. This code was ported by a student a few years back, and I don't know if anyone made use of it. I never looked at it. However, if you are reading the book and would like to try its programs, that is the place to look.


Unix Man Pages

Another valuable resource in this class are the Unix man pages. These can be viewed online, by typing ``man xxx,'' where you want to learn about xxx. For example, try ``man cat'' to learn about all the things you can do with the program cat You will find that there are Unix tools for doing many things you'd like to do. The routines sprintf, sscanf, strcmp, strdup, atoi, and of course malloc will all be of great use to you throughout the semester. Read up on them. If you'd like to know if there is a man page on a certain topic, try ``man -k topic.'' Or read the man page for man....