This page gives access to information about the course offerings of ``Unix and C Programming'' as taught (in Fall 1991) by Gary T. Leavens for the Department of Computer Science at Iowa State University. Information is available under the following headings.
Also available are the following.
Computer Science 218 was a course in Unix and C programming.
The following information reflects the Fall 1991 offering. I must say that this offering wasn't very successful, due to two policies of mine:
The ISU catalog description of the course is as follows:
Introduction to the C programming language and the UNIX operating system[,] and their effective use for problem solving. Topics in UNIX include the establishment of user environments, creation and management of files and directories, common UNIX commands, programming in [the] UNIX shell language, and electronic mail. Topics in C include basic programming constructs, use of standard program libraries, multiple and parallel process control, and interprocess communication. (3 credits).
The focus in the course will be on ``effective use'' of Unix and C ``for problem solving.'' Problems are best solved by working at an appropriately high level; that is by abstracting away the details of the solution so that the big picture becomes clear. This kind of abstraction will be the theme of the course. Unix illustrates this theme by providing a programming environment where one can build tools (e.g., in C) and combine them to solve large problems abstractly.
Com S 218, ``Unix and C Programming,'' was usually taken by sophomores, juniors, and seniors (and a few graduate students). It was something of a service course.
The class had a ``lecture'' that met 3 times a week, for 50 minutes a time. It also had a lab section that meets once a week (for 50 minutes) with a teaching assistant. There are usually 43 or 44 lecture meetings in a semester. The course carried 3 credit hours.
The formal prerequisites for Com S 218 in the ISU catalog were two semesters of programming.
At the end of this course you will be able to:
In all cases, you will be able to use reference material and notes about specific details of Unix and C including the course texts and your notes. You will not be expected to implement an operating system, to write truly large programs, to analyze the space/time efficiency of the Unix operating system, to understand details of the Unix kernel's implementation, to formally specify programs, or to formally verify programs.
You must learn to use Unix and to program in C primarily by experience; trying to learn to use Unix and program in C by just reading about them is like trying to learn how to play piano by just reading a book. So the main objective for the course is not, primarily, to teach the details of Unix and C: it is to show you one way that these tools can be used to achieve worthy goals; hence the first objective. The way that both Unix and C (as well as most programming languages) are used most effectively is by building larger programs from smaller pieces; hence the next two objectives.
The reason for learning to program with abstract data types is that it is a very fruitful way to organize programs; use of abstract data types makes programs clearer, and easier to maintain.
The reason for learning the principles that underly the details of the course is mentioned above.
There were two texts: Introducing Unix System V by Rachel Morgan and Henry McGilton (McGraw-Hill Book Company, New York, 1987) and The C Programming Language, Second Edition by Brian W. Kernighan and Dennis M. Ritchie (Prentice Hall, Englewood Cliffs, NJ, 1988).
In addition, the university book store had a packet containing excerpts from the GNU Emacs Manual (Fourth Edition, Version 17) by Richard Stallman, which describes the emacs editor.