The University of Chicago
Department of Computer Science

CSPP 51081 Resource Guide
Fall 2010

Unix Systems Programming

Required Texts Recommended Texts Online Resources Links Page Supplemental Reading

Required Texts
You should acquire the latest (i.e., currently published) editions of the following:
1.Advanced Programming in the UNIX(R) Environment, Richard Stevens, Addison-Wesley, ISBN: 0201563177
(2 copies on Ready Reserve in Eckhart)
2.Effective awk Programming, 3rd ed., Arnold Robbins
available online at: http://www.gnu.org/software/gawk/manual/gawk.html
AND Choose ONE of the following:
3.a.If you are a total newbie to Unix and Unix C programming (i.e., a beginner with minimal hands-on experience):

Beginning Linux Programming, 2nd Ed., Matthew & Stones, Wrox Press, ISBN:  1861002971
(2 copies on Ready Reserve in Eckhart)
3.bIf you already have a little hands-on experience with C programming (this should be most students)

Understanding Unix/Linux Programming: A Guide to Theory and Practice, Molay, Prentice Hall, ISBN:  0130083968
(1 copy on Ready Reserve in Eckhart)
3.c.If you already have substantial experience with both Unix and C programming use

UNIX Systems Programming, Curry, O'Reilly, ISBN:  1565921631
If you choose 3.a or 3.c these texts are highly recommended.
4.UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI (2nd Edition), Richard Stevens, Prentice Hall, ISBN: 013490012X
(2 copies on Ready Reserve in Eckhart)
5.Programming with POSIX Threads, Butenhof, Addison-Wesley, ISBN:  0201633922
(2 copies on Ready Reserve in Eckhart)

Recommended Texts
C Language Instruction:

If you are new to C and need a good and substantive introduction to the language, we recommend either of:

Introductory C, Petersen; Morgan Kaufmann Publishers; ISBN: 0125521421 ; 2nd edition (January 15, 1997)

C Programming:  A Modern Approach, King; W.W. Norton & Company; ISBN: 0393969452 ; (April 1996)

General Unix C Programming:

Managing Projects with Make , Andy Oram and Steve Talbott, O'Reilly, 1991

Unix Systems Programming with SVR 4, David Curry, O'Reilly,   1996

Linux Socket Programming By Example, Warren Gay

Pthreads Programming, Nichols et. al, O'Reilly, 1996

The Unix Programming Environment, Kernighan & Pike, Prentice Hall, 1984

Advanced Unix Programming, Rochkind, Prentice Hall, 1985

Interprocess Communications in UNIX:  The Nooks & Crannies , Gray, Prentice Hall, 1988

Unix Distributed Programming, Brown, Prentice Hall, 1994

Power Programming with RPC, Bloomer, O'Reilly, 1992

Using C on the UNIX System, Curry, O'Reilly, 1989

GNU Online Documentation for make, gcc, gdb, etc.

General Unix:

Learning the UNIX Operating System , 4th Edition , Peek, et. al., Orielly, 1997

A Practical Guide to Linux , Mark Sobell, Addison-Wesley, 1997

Portable Shell Programming , Bruce Blinn, Prentice Hall, 1996

UNIX Power Tools, Peek et. al., O'Reilly, 1993

Learning the Bash Shell, 2nd. Ed., Newham & Rosenblatt, O'Reilly, 1998

Sed & Awk & Regular Expressions:

Unix Awk and Sed Programmer's Interactive Workbook, Peter Patsis, Prentice Hall, 1999

Mastering Regular Expressions , Jeffrey E. F. Friedl, O'Reilly, 1997

sed & awk , Dale Dougherty, O'Reilly, 1990

The AWK Programming Language , Aho, Kernighan, Weinberger, Addison-Wesley, 1988

General Operating Systems:

Modern Operating Systems, 2nd. Ed., Tanenbaum, Prentice Hall, 2001

Operating System Concepts, 5th Ed., Silberschatz & Galvin, Addison-Wesley, 1998

UNIX Internals:  The New Frontiers, Vahalia, Prentice Hall, 1996

UNIX Internals:  A Practical Approach, Pate, Addison-Wesley, 1996

The Unix Philosophy, Gancarz


Online Reference and Resources
General:

Common Unix Commands

Norman Matloff's Unix Tutoral Center

IBM Developerworks Library

The Unix Reference Desk

Davin's collection of unix programming links

Unix Guru Universe

Unix FAQ Index at faqs.org

Stanford CS Education Library (C tutorials, programmer tools pdf, pointer references, fun with Binky, et. al.)

History of Unix by Mike Loukides

History of Unix by Dennis Ritchie

DDD Debugger

glibc Manual

Regular Expressions:

Regular Expression HOWTO

Single UNIX Specification:  Regular Expressions

 Steve Ramsay's Guide to Regular Expressions

Awk:

How to Get Things Done With Awk

Awk Filters

C Programming:

Unix C Programming FAQ

A. D. Marshall's Programming in C:  UNIX System Calls and Subroutines using C

Introduction to C Programming

C Programming on Unix Tutorial at University of Strathclyde

POSIX Threads:

Threads FAQ

Programming Posix Threads Bounce Point


Supplemental Reading
(in no particular order)

Mastering Regular Expressions, Jeffrey E. F. Friedl (O'Reilly & Assoc. 1997, ISBN: 1-56592-257-3). An thorough discussion of an inexhaustible subject.

Learning the UNIX Operating System , 4th Edition, Jerry Peek, Grace Todino & John Strang (Orielly & Associates, 1997, ISBN: 1-56592-390-1) A virtual "Cliffs Notes" for the Unix Operating System.

Using C on the UNIX System, David A. Curry (O'Reilly & Assoc., 1985, ISBN: 0-937175-23-4). A good introduction to C programming on Unix.

Learning GNU Emacs, Debra Cameron & Bill Rosenblatt (O'Reilly & Assoc., 1991, ISBN: 0-937175-84-6). A good introduction to emacs.

UNIX for the Impatient, Paul W. Abrahams & Bruce R. Larson (Addison-Wesley Publishing Company, 1992, ISBN 0-201-55703-7). Good, clear coverage of the utilities, recommended for Unix beginners.

UNIX in a Nutshell: A Desktop Quick Reference for System V & Solaris 2.0 (O'Reilly & Associates, Inc., 1992, ISBN 0-56592-001-5). A handy reference for SysV and Solaris 2.

When You Can't Find Your UNIX System Administrator, Linda Mui (O'Reilly & Associates, Inc., 1995, ISBN 1-56592-104-6). The title says it all.

UNIX Power Tools, Jerry Peek, Tim O'Reilly, and Mike Loukides (O'Reilly & Associates, 1993, ISBN 0-679-79073-X). An excellent compendium of tricks of the masters, written for beginners and intermediates. Includes a CDROM of useful software.

Exploring the UNIX System, Stephen G. Kochan & Patrick H. Wood (SAMS, a division of Macmillan Computer Publishing, 1989, ISBN 0-8104-6268-0).(OUT OF PRINT)

Learning GNU Emacs, Debra Cameron and Bill Rosenblatt (O'Reilly & Associates, 1992, ISBN 0-937175-84-6).

Unix Shell Programming, Stephen G. Kochan & Patrick H. Wood (Hayden Book Co., 1990, ISBN 0-8104-6309-1). The classic on shell programming. The third edition is available at amazon

The Unix C Shell Field Guide, Gail Anderson and Paul Anderson (Prentice Hall, 1986, ISBN 0-13-937468-X).

A Student's Guide to UNIX, Harley Hahn. (McGraw-Hill, 1993, ISBN 0-07-025511-3). This, and its almost identical sister, Open Computing's Unix Unbound (same author and publisher), is an excellent aid for beginners. Hahn's wry humor runs throughout.

Tricks of the UNIX Masters, Russell G. Sage (Howard W. Sams & Co., Inc., 1987, ISBN 0-672-22449-6).

Unix System V: A Practical Guide , Mark Sobell (Benjamin/Cummings, 1995, ISBN 0805375678) (A classic)

Unix Network Programming, Volume 1: Networking APIs: Sockets and XTI , Richard Stevens (Prentice Hall, 1998, ISBN 013490012X) The definitive work on Unix Sockets

Unix Network Programming, Volume 2: Interprocess Communication, Richard Stevens(Prentice Hall, 1999, ISBN 0130810819) The definitive work on IPC.

Applied Unix Programming, Volume 2 , Bharat Kurani (Prentice Hall, 1997, ISBN 0133043460) The Unix C Library Reference Manual, includes C Library, math library, socket library, transport library, and internet library.

Advanced Programming in the Unix Environment , Richard Stevens (Addison-Wesley, 1992, ISBN: 0201563177). A practical guide to the theory of sockets and IPC on Unix.

The C Programming Language, Brian Kernighan and Dennis Ritchie (Prentice Hall, 1988, ISBN 0131103626). The definitive tutorial on the C Programming Language.

Pointers on C, Kenneth Reek (Addisson-Wesley, 1998, ISBN 0673999866). A good introduction to the C Programming Language.

C: A Reference Manual, Fourth Edition , Harbinson and Steele (Prentice Hall, 1995, ISBN 0133262243). A good reference manual for the C langugage.

Absolute Beginner's Guide to C , Greg Perry (Sams, 1994, ISBN 0672305100). One of the easiest avenues into C Programming in print.

Practical C Programming, Third Edition , Steve Oualline (O'Reilly, 1997, ISBN 1565923065). A good tutorial on C, and one of the few that assumes you might be using GNU tools as opposed to Microsoft's.

Design of the Unix Operating System , Maurice Bach (Prentice Hall, 1986, ISBN 0132017997). Perhaps the best general discussion of the details of the Unix Operating System.

Unix Internals: The New Frontiers , Uresh Vahalia (Prentice Hall, 1996, ISBN 0131019082). A newer discussion of the details of Unix, published 10 years after Bach's book.

Unix Internals: A Practical Approach , Steve Pate (Addison-Wesley, 1996, ISBN 020187721X). A good and readable discussion of the details of the Unix kernel.

The Linux Kernel Book, Card, et. al. (Wiley, 1998, ISBN 0471981419). A good book which concentrates on the particularities of the Linux Kernel code itself. A gentle tour through the kernel's source code. The book comes with a CD for RedHat 5.0, whose kernel's code is examined throughout the book.