[net.lang.c] C/Unix projects needed for a class ...

weltyrp@rpics.UUCP (Richard Welty) (10/24/85)

I think that the following got lost in a crevase, so here
it is again ...


I am currently teaching a course on C and UNIX, and
am looking for suggestions for good projects to illustrate
basic and advanced concepts of both C and UNIX.

Background:

The students are seniors and grads.  They know Pascal,
and most have taken introductory courses in
Hardware architecture and in Systems Programming.

The texts are harbison & steele, and kernighan & pike.
kernighan & ritchie is available to the students.

The students have already endured lectures on C,
using UNIX, some details on system internals, and
on various utilities.

What I am looking for:

Projects that illustrate various aspects of UNIX,
such as programming with multiple processes,
filters, etc.  Also, projects that are not C programs
(but use such things as awk and other utilities to
solve problems without writing new C programs) are
of interest.

I want the students to finish this course understanding
C programmming, and also understanding when to write a
C program, and when to use the system utilities.
I also want them to understand the difference between
writing a small program to be handed in, and writing
part of a massive system with n other programmers
(thus justifying Make and SCCS to them -- it turns
out to be damned difficult to explain to the normal
student why he should care about such things).

Thanks in advance for any help.
-- 
				Rich Welty

	"P. D. Q.'s early infancy ended with a striking decision;
	at the age of three, P. D. Q. Bach decided to give up music"
			- Prof. Peter Schickele,
			from "The Definitive Biography of P. D. Q. Bach"

	CSNet:   weltyrp@rpics
	ArpaNet: weltyrp.rpics@csnet-relay
	UUCP:  seismo!rpics!weltyrp

jacobsn@csd2.UUCP (Nicholas H. Jacobs) (10/25/85)

Some good programs (and useful tools too) can be found in Kerninghan and
Plauger's _Software Tools_ (as if everyone didn't know), but a good pro-
ject is to have the students write them in C rather than a super-charged
version of Pascal (as many inexperienced C programmers do). For example, 
make the issues of efficiency important; have them use dynamic allocation, 
use pointers rather than arrays. All of these things are more idiomatic 
of advanced programs, and it seems that these are some of the more difficult
operations to learn. Especially useful are examples which require double
indirection using pointers and dynamic allocation.

                                    Nicholas Jacobs
                                    jacobsn@csd2