CS-701 Software Design

Course Description

Introduction

CS-701 introduces you to the standard tools for developing and managing large software projects. There is some chicanery involved in this effort, since we do not have time in one semester both to introduce the tools and actually to implement large projects. The compromise is to learn enough about the tools to use them in a few "medium-sized" projects.

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.

Your Background

The prerequisite for the course is satisfactory completion of CS-700. Your background must include a course in principles of operating systems and a working knowledge of the C language. You must also know how to use Unix commands to log in and perform basic file manipulations (create and list directories; edit, move, and copy files).

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:

Remember that each graduate student in the Computer Science Department has an account on the Academic Computer Center's timesharing system running Unix, qcunix, which you can use to bring your C programming up to speed before the course begins.

Course Description

This course uses a sequence of programming exercises to illustrate the use of library and system calls, process management, interprocess communication, and graphical user interface programming. Exercises in recent semesters have included a program to study algorithm timings, an interactive shell program, a World Wide Web server, a World Wide Web browser, and a text annotation system.

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:

All documentation will be graded on the basis of proper English usage as well as on content and structure. You should consult a standard style manual, such as Strunk's Elements of Style, which is available on-line.

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.

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.

Christopher Vickery
Queens College of CUNY
Home Page