CSC 271
Software I
Utilities and Internals
Instructor: Dr. Stephen Bloch
Fall, 2008
The rest of this page is copied from the last time I taught the
course; many of the links don't work yet, but they will Real Soon
Now!
This course meets from 11:00-11:50 AM in Science 227.
We'll use two or three textbooks for this course,
as well as a lot of online documentation and some handouts.
- Unix Power Tools, by Powers, Peek, O'Reilly, and Loukides,
published by O'Reilly
- C in a Nutshell, by Prinz & Crawford, also published by O'Reilly
- (optional, recommended reading) The Art of Unix
Programming, by Eric S. Raymond, published by Addison-Wesley
All three books have been ordered through the University Bookstore, but
you can probably get them for significantly less money somewhere else.
My office hours are MTTh 1:00-2:15, W 10:00-12:00, and other times by
appointment.
I taught this course in Fall 1994,
Fall 1995, Fall
1996,
Fall 1997,
Fall 2005, and
Fall 2007 as well,
and some information and handouts are still available from those classes.
Reading assignments
The calendar lists what chapters of
what textbook are relevant to which class meetings.
In the Unix Power Tools book,
the first few "articles" in each chapter
are usually the basic stuff you have to know,
while the later "articles" in the same chapter are
advanced or obscure stuff. So although I may have assigned, say,
chapters 10, 12, and 14 to read for a particular day, you really only
need to read the first half (or so) of each
of those three chapters.
Look at the "article" titles and
read the ones that look interesting.
This book wasn't intended to be read
sequentially, from beginning to end, so follow your nose.
Anyway, by the end of the semester I'd like
you to have read and understood at least half of the textbook.
Later in the semester, we'll switch to the C in a Nutshell
textbook. Since you're all also in CSC 270 and will
therefore have already seen C++, much of this will be review; you should
be able to read through this book fairly quickly, watching for things
that are different from C++ or Java.
On-line documentation for Unix commands
- UNIXhelp for Users
(within which I particularly direct your attention to the section on
shell scripts)
- man mkdir, man rmdir, man pwd
- man mv, man cp, man touch, man
rm
-
man ls, man du
- man tcsh (sections on file completion, history
substitution, aliases, variables, command substitution,
wild cards, and globbing)
- man file, man find
- man tcsh (sections on jobs, fg,
bg), man ps, man kill
- man tcsh (section on umask), man chmod
- man ln
- man tcsh (sections on pushd and popd)
- info info, read that page, then hit "h" for an interactive
tutorial on the "info" program. You can then use info to learn
about other programs.
On-line documentation for programming tools
- info gdb (No, I don't expect you to read it all,
but get started on it.)
-
man flex
-
info make
On-line documentation for C library functions
C high-level I/O
- man stdio, which leads to...
- man fopen (including freopen)
- man fclose
- man fprintf (including printf, sprintf)
- man fscanf (including scanf, sscanf)
- man feof
- man putc (including putchar, fputs, etc.)
- man getc (including getchar, fgets, etc.)
- man perror
C string and environment manipulation
- man getenv
- system
- man strlen
- man strcat (including strcat, strcpy, strdup, strcasecmp)
- man strspn (including strcspn)
- man strchr (including strrchr, index, rindex)
- man strtok
Low-level Unix system calls
- man open
- man creat
- man read
- man write
- man exec
- man pipe
- man fork
- man socket, man bind, man listen, man accept, man connect
Last modified:
Fri Jun 1 13:21:54 EDT 2007
Stephen Bloch / sbloch@adelphi.edu