CMPSC 311,
Introduction to Systems Programming
References
Textbooks, both required
- Computer Systems: A Programmer's
Perspective, Randal E. Bryant, David R. O'Hallaron, second
edition, 2011, Prentice Hall (Pearson), ISBN 978-0-13-610804-7.
Web site, http://csapp.cs.cmu.edu
- C Programming: A Modern Approach,
K.N. King, second edition, 2008, W.W. Norton, ISBN
978-0-393-97950-3. Web site, http://knking.com
Textbooks, previously required
- Advanced Programming in the UNIX
Environment, W. Richard Stevens, Stephen A. Rago, second
edition, 2005, Addison-Wesley, ISBN 0-201-43307-9 (hardcover),
0-321-52594-9 (paperback). Web site, http://www.apuebook.com/
- C: A Reference Manual,
Samuel P. Harbison III, Guy L. Steele, Jr., fifth edition, 2002,
Prentice-Hall, ISBN 0-13-089592X. Web site, http://www.CAReferenceManual.com/
Textbook, optional but highly recommended
Additional references
- David A. Patterson and John L. Hennessy, Computer
Organization and Design, Morgan Kaufmann, fourth ed., 2009.
- Kay A. Robbins and Steven Robbins, Unix Systems Programming,
Prentice-Hall, 2003.
- Bruce Molay, Understanding
Unix/Linux Programming, Prentice-Hall, 2003.
- Eric S. Raymond, The
Art of Unix Programming, Addison-Wesley, 2004.
- Rich Teer, Solaris Systems
Programming, Prentice-Hall, 2005.
- Mark Dalrymple and Aaron Hillegass,
Advanced Mac
OS X Programming, Big Nerd
Ranch, 2005.
- Robert C. Seacord, Secure
Coding in C and C++, Addison-Wesley, 2006.
- Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language,
second ed., Prentice Hall, 1988.
- "This is the weapon of a Jedi Knight. Not as clumsy or as
random as a blaster, but an elegant weapon for a more civilized age."
General references on using Unix
- See Hahn, above
- Paul Love, Joe Merlino, etc., Beginning
Unix, Wiley, 2005.
- See also Robbins, on the Safari list, below
General references on programming and
systems
- Steve McConnell, Code Complete: A Practical Handbook of
Software Construction, Microsoft Press; second ed., 2004.
- Randall Hyde, Write Great Code: Volume 1:
Understanding the Machine, No
Starch Press, 2004.
- Randall Hyde, Write Great Code, Volume 2:
Thinking Low-Level, Writing High-Level, No Starch
Press, 2006.
- Jon Stokes, Inside the Machine: An
Illustrated Introduction to Microprocessors and Computer Architecture, No Starch
Press, 2006.
- Norman Matloff and Peter Jay Salzman, The Art of Debugging with
GDB, DDD, and Eclipse, No Starch
Press, 2008.
- Michael Kerrisk, The Linux Programming
Interface, No Starch Press, 2010. Looks good, but expensive.
Assorted topics you
should understand already
More advanced topics
- W. Richard Stevens, Bill Fenner, Andrew M. Rudoff, UNIX Network Programming, The
Sockets Networking API, volume 1, third ed., Addison-Wesley, 2004.
- W. Richard Stevens, UNIX Network Programming, Interprocess
Communications, volume 2, second ed., Prentice Hall, 1999.
- Andreas Zeller, Why Programs Fail: A Guide to
Systematic Debugging, Morgan Kaufmann, second ed., 2009.
Safari Books Online (free
access from a PSU site, or via the PSU library)
- Stephen Prata, C Primer Plus,
fifth edition, Sams, 2004.
- Debra Cameron; James Elliott; Marc Loy, Learning
GNU Emacs, third edition, O'Reilly, 2004.
- Cameron Newham, Learning the
bash
Shell, third edition, O'Reilly, 2005.
- Robert Mecklenburg, Managing
Projects with GNU make, third edition, O'Reilly,
2004.
- Jeffrey E. F. Friedl, Mastering
Regular Expressions, third edition, O'Reilly, 2006.
- Mark Lutz, Programming
Python, third edition, O'Reilly, 2006.
- Tom Christiansen, Jon Orwant and Larry Wall, Programming
Perl, third edition, O'Reilly,
2000.
- Arnold Robbins, Unix in a
Nutshell, fourth edition, O'Reilly, 2005. Generally useful, but sometimes it's
no better than a man page.
- Ellen Siever, Aaron Weber, Stephen Figgins, Robert Love, Arnold
Robbins, Linux
in a Nutshell, fifth edition, O'Reilly, 2005.
- Henry S. Warren, Jr., Hackers Delight,
Addison Wesley Professional, 2002. This is an
amazing and wonderful book, but not for the faint-of-heart.
- Robert Love, Linux System Programming: Talking Directly to the Kernel and C Library,
O'Reilly, 2007. (Try this one
instead.)
- Daniel P. Bovet, Marco Cesati, Understanding
the Linux Kernel, third edition, O'Reilly, 2005. Belongs in
the More Advanced list, but it's a really good book.
- Mark G. Graff and Kenneth R. van Wyk, Secure Coding:
Principles & Practices, O'Reilly, 2003.
- Ben Collins-Sussman, Brian W. Fitzpatrick and C. Michael Pilato, Version
Control
with Subversion, O'Reilly, second ed., 2008.
- Ellie Quigley, UNIX Shells by
Example, fourth edition, Prentice Hall, 2004.
Wikipedia
(these pages were trustworthy, last time we checked)
- ELF,
Extensible Linking Format, Executable and Linkable Format, Executable
and Linking Format
Android
Miscellaneous
Some useful reading
- Joel Spolsky, from Joel
on Software. These appear to be Windows-Centric, because
that's how he makes a living, but the ideas are universal; start with Biculturalism
if you don't see that.
- Raymond Chen, The Old New Thing.
Works for Microsoft, but don't let that stop you.
- Peter Norvig. Director of
Research, Google.
- Writing Guidelines for Engineering and Science
Students
- Standards
and specs, by Peter Seebach, from IBM developerWorks
- Real men
program in C, by Michael Barr, from Embedded.com
- How Not
To Optimize, By David Chisnall, from informIT (Addison-Wesley)
Some time wasters
Last revised, 12 Jan. 2012