Each student works individually in the course. There is some practice in writing code that must interface with existing code written by others, but you do not work as part of a group for any of the assignments.
You will work with well-known industry standards: Unix System V (Solaris version 2.5) running on Sun SPARC workstations, the C programming language (or C++ if you prefer), the Motif window manager and toolkit for the X Window System, and TCP/IP-based client-server computing. All development tools are from the Free Software Foundataion (Project GNU): The gcc or g++ compiler, the gdb debugger, the GNU make utility, and the RCS project management tool. You will also have the use of the ddd X Window interface to gdb, which comes from the Technische Universitaet Braunschweig, Germany.
The course assumes that you already know how to program in C. To give you an idea of the degree of programming competence I expect, here is a list of some of the things you should be able to do in C before you start the course:
Writing documentation is an important part of this course. You will write separate documentation for each of the three nominal parties of a software project:
For material used in this course this term, go to the CS-701 Home Page.
Textbooks
Curry, D. A. Unix Systems Programming,
O'Reilly & Associates, 1996. Required.
You will be responsible for the material in all Chapters except 12, 15, and 16.
Sobell, M. G. Unix System V: A Practical Guide, Third Edition, Benjamin Cummings, 1995. Highly Recommended.
You will need this book or its equivalent to know how to use the Unix operating system in the laboratory, especially if you are not too familiar with Unix yet. There are chapters on the editor, the shell, using the file system, and various utility programs you will be using. Be sure your book is for Unix "SVR4" (System V Release 4) rather than some other Unix variant, such as SunOS, BSD, Coherent, or Linux.UNIX man pages. Required. Access these on-line.
Harbison, S. P. and Steele, G. L. Jr. C: A Reference Manual, Fourth Edition, Prentice-Hall, 1995.Recommended.
Everybody needs a C reference manual, and this is the one I use. Alternatively, you might prefer to use a C++ reference manual, such as one of the volumes by Stroustrup:Both of these are published by Addison-Wesley.
- Stroustrup, B. The C++ Programming Language, Second Edition
- Ellis, M. and Stroustrup, B. The Annotated C++ Reference Manual
Nye, A. and O'Reilly, T. X Toolkit Intrinsics Programming Manual: OSF/Motif 1.2 Edition, Volume 4 in "The Definitive Guides to the X Window System," O'Reilly & Associates, 1993. This volume may also be called "Volume 4M" rather than "Volume Four: Motif Edition." In any case, the ISBN is 1-56592-013-9. Highly Recommended.
In past semesters we have not had enough time to do proper justice to Motif programming, and students have been able to complete their assignments without buying this book. In those semesters I gave out sample code for a Motif application, and students learned just enough about Motif to be able to modify it. I plan to follow the same strategy this semester. However, you will learn more from the sample code if you have this book available than if you just rely on what I say about it in class. Also, this book or its equiavalent will be essential to you if you ever do any Motif programming beyond this course.
Heller, D. and Ferguson, P. M. Motif Programming Manual for OSF/Motif Release 1.2, Volume 6A in "The Definitive Guides to the X Window System," O'Reilly & Associates, 1994. Recommended.
The same material is available on-line, so this one is not so important to buy.
Oram, A. and Talbott, S. make, O'Reilly & Associates, 1991. Recommended.
More than you will need to know about make for this course, but an excellent source if you really want to master this utility.
van der Linden, P. Expert C Programming: Deep C Secrets, Prentice-Hall, 1994. Recommended.
Read this if you want to learn the tricks of the trade used by professional C programmers. Some of the material is oriented towards Sun systems, but the vast majority applies to all systems. You could call this book, "Things you should have learned in school but probably didn't." It's very entertaining as well as informative.