University of Miami,
Department of Computer Science
CSC322 - C Programming and UNIX
C probably has been the most influential programming language during
the last 25 years. It was originally introduced for the implementation
of UNIX, but is now used for a large variety of very different tasks.
Both C++ and Java owe most of their syntax and much of their sematics
to C, but have not managed to replace the original language.
The course will introduce the C programming language in the context of
the UNIX operating system. We will also cover UNIX from a user and a
programmer perspective.
Prerequisites
CSC220 (substitute: EEN218). You should be able to read and write
reasonably sized programs in an imperative language (Java
qualifies). Students who do not meet the prerequisites must tell the
instructor.
Office Hours and Lab time
The course will be taught by Dr. Stephan
Schulz. My office hours are Monday, Wednesday, Friday, 1pm to
2:30pm, or by email appointment.
To remotely log onto the Lab machines, use an ssh client
(ssh under UNIX/Linux, Putty should work under
Windows) and connect to lee.cs.miami.edu (students.cs.miami.edu does
not work anymore). A TA for the course is in the lab Friday
4-6pm, and Sunday 2-6pm. To change your password, use
yppasswd. Please also check the password policy page.
Course Material Online
Assignments and lecture notes (updated Fri Dec 6 10:35:42 EST
2002)
are on the web. Lecture notes should be available on the
evening before any given class (note should, but I'm
tring...).
Other material:
- The base converter program
(18/9/2002).
- The RPN Calculator
(25/9/2002). Download it and run gtar xzfv
RPN_CALC.tgz to unpack everything into the directory
RPN_CALC. Run make in
RPN_CALC to compile the program automatically.
- The demo program for linear lists
(7/10/2002). Download it and run gtar xzfv
LIST_DEMO.tgz to unpack everything into the directory
LIST_DEMO. Run make depend;make in
LIST_DEMO to compile the program automatically.
- The source code for the signal_test program.
- The source code for the rudimentary ls program.
- The simple shell,
Classes
Monday, Wednesday and Friday, 11:00 to 11:50 a.m., LC192
Assessment (preliminary)
- 5% Initial essay
- 20% Weekly assignments
- 10% Midterm exam
- 15% Internet programming assignment
- 50% Final exam
To recieve a particular grade, you may have to qualify for it in each
individual category.
Some topics
- A short history of UNIX and C
- UNIX structure
- The user's point of view - windows and shells
- Text editing under UNIX
- Introduction to C
- UNIX tools for C
- Dynamic datatypes in C
- The C standard libray
- The UNIX system call interface
- Advanced features and scripting
Suggested literature
Books (Dead Trees)
I rely on students to have a good quality C book for reference
purposes, and have officially recommended the New Testament
written by two of the original authors of UNIX and C:
- The C Programming Language (2nd Edition), Brian
W. Kernighan, Dennis M. Ritchie
I think K&R2 is the best book on C among those I have encountered up
to now. However, it is quite terse and some people find its learning
curve to be too steep. If you want to have a gentle introduction, try
- C Programming: A Modern Approach, K.N. King
No other books should be needed for the course. However, there is a
very large number of good books about different aspects of UNIX if you
are interested. I like the following ones:
- Advanced Programming in the UNIX Environment, W. Richard
Stevens. This is by many considered to be the best reference to
the UNIX programming interface. It covers much more than the
course material, but is well worth its price and probably will be
very useful for anybody doing serious programming for UNIX.
- The UNIX Programming Environment, Brian W. Kernighan,
Rob Pike. This is dated, but shows the basic UNIX approach quite
well. It also emphasizes the software tools approach
typical for UNIX.
- UNIX Network Programming, Volume 1, W. Richard
Stevens. Get the second edition (or later). This covers most
important networking stuff. It's a sibling of APUE (both were
created by splitting the first edition of UNP).
Online Resources
Note: Do not post any homework questions to the newsgroups!
The regulars don't like it. I don't like it. If you have any
specialized questions that you cannot answer after your own research,
asking either me or a newsgroup is fine.
Miscellaneous
Finally, here are some sources that might help you to get into the
UNIX mindset (and out again):
- The
UNIX-Haters Handbook, Simson Garfinkel, Daniel Weise, and Steven
Strassmann (eds.). It seems to be severely out of print - I cannot
find it on either Amazon or Abebooks. However, there are some parts
of it online.
- The New Hacker's
Dictionary, Eric S. Raymond (ed.). This one is in print, and,
even better, fully available on the net.
Stephan
Schulz,schulz@cs.miami.edu, Thu Aug 22 13:35:31 EDT 2002