I will be offering two programming courses in the Fall 1995 semester, CS-701 and CS-704. This page introduces you to both of those courses to help you decide which of them you might want to take. (Take both!)
The focus of CS-701 is to introduce 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 the tools and to use them in several smaller projects.
The focus of CS-704 is to introduce you to systems programming using a real-time operating system. The development tools available to us are more primitive than the ones used in CS-701, but in exchange we get to write programs that genuinely perform such low-level operations as interrupt, process, and memory management.
CS-701 is generally the more popular of the two courses because you get to work with well-known industry standards: Unix running on Sun SPARC workstations, C (or C++ if you prefer), the X Window System, and TCP/IP-based client-server computing. In contrast, CS-704 uses a relatively obscure real-time operating system (Intel's iRMX) running on PCs, but it is gaining in importance as the multimedia revolution makes the issues of real-time computing more visible to the computing public. We will not be doing multimedia computing in CS-704, but we will be dealing with fundamental issues of real-time computing methodology.
Students who take either CS-701 or CS-704 are expected to have completed the equivalent of a Queens College undergraduate major in computer science. For many Master's students, this requirement is met by taking our CS-601, CS-602, and CS-640 courses. In addition, CS-700 is a prerequisite for both of these courses.
Both courses assume 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 either course:
In addition, I will expect you to have studied operating system principles, including process scheduling, process synchronization, memory management, and I/O design before taking either 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.
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.
Programming exercises are implemented using standard software development tools: SCCS or RCS for software version control, make for automating the construction and installation of multi-module programs, and gdb/ddd for interactive debugging.
Written documentation is an important part of this course. You will write separate documentation for each of the three nominal parties of a software project: man pages for end-users, installation guides for program owners, and code documentation for program developers/maintainers. All documentation will be graded on the basis of proper English usage as well as on content and structure.
Stevens, W. R. Advanced Programming in the Unix Environment, Addison-Wesley, 1992. Required.
Sobell, M. G. Unix System V: A Practical Guide, Third Edition, Benjamin Cummings, 1995. Required.
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. Highly Recommended.
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. Highly Recommended.
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.
Oram, A. and Talbott, S. make, O'Reilly & Associates, 1991. Recommended.
van der Linden, P. Expert C Programming: Deep C Secrets, Prentice-Hall, 1994. Recommended.
The programming environment for this course will be Intel's iRMX real-time operating system. Real-time systems must support traditional systems programming operations, such as concurrency control and memory management, by application developers. Thus, the resources that are available for real-time development are ideal for studying systems programming techniques.
iRMX for Windows is an extended version of iRMX III that runs on any machine that runs DOS (provided it has an 80386 or higher processor, at least 6 MB of RAM, and 15 MB of disk space). Copies of iRMX for Windows will be available for students to install on their own computers if they wish. There will also be computers running iRMX for Windows in the OS Lab. Microsoft Windows is not required in order to run iRMX for Windows, but may be run if desired. To use iRMX for Windows, you boot DOS, and then load iRMX, which encapsulates DOS as an iRMX task. Both operating systems share the same DOS file system.
Projects will be done in C using standard development tools: Intel's C compiler and linker, (iC386 and BND386),the make utility, and SoftScope, the iRMX debugger. The development tools may be run under either iRMX or DOS, and there is a version of SoftScope that runs under Windows, so you can code and build projects without access to iRMX, although you have to have an iRMX system to run and test your code. Standard DOS/Windows development tools (Borland or Microsoft C, for example) are not compatible with iRMX at the present time, although a new release of the operating system due during the Fall will support both Borland and Microsoft C when it becomes available. The C++ language is not compatible with iRMX and will not be supported in the next release either. iRMX for Windows is not compatible with Windows95 either.
Projects will emphasize I/O, concurrency, and object management in a networked environment. Students will work individually on all projects. Students will be expected to be reasonably familiar with DOS and Unix before starting the course. Programming projects will include complete documentation of the code, and at least one project will consist of a set of experiments that will be written up as a research report.
Vickery, C. Real-Time and Systems Programming, McGraw-Hill, 1993. Required
Harbison, S. P. and Steele, G. L. Jr. C: A Reference Manual, Fourth Edition, Prentice-Hall, 1995. Highly Recommended
Oram, A. and Talbott, S. make, O'Reilly & Associates, 1991. Recommended
van der Linden, P. Expert C Programming: Deep C Secrets, Prentice-Hall, 1994. Recommended
Documentation Set for the iRMX Operating System, Intel Corporation, 1994. You may take a complete iRMX documentation set home for the semester, courtesy of Intel Corporation.