C History and General References
Resources to give you an overview of the C language, its history, and design philosophy.- The Computer History Museum
- Brief History of Computer Languages
- Early History of C, by one of the developer's of C, Dennis Ritchie.
- Dennis Ritchie, the developer of C
- Brian Kernighan, co-autor of "K&R" and the 'K' in AWK.
- Overview of C, General overview from Wikipedia
- Programming in C references Lots of great references and notes on the C Programming Language.
- C99 Reference Manual valuable reference site for C99 library developed by P.J. Plauger.
Online C Programming References
Links to online resources on C programming.- The C Book by Mike Banahan, Declan Brady and Mark Doran
- Programming in C One of the best C programming tutorials on the web, and useful resource for programming for the Unix environment.
- Learning C a series of ANSI C programming tutorials for beginners.
- C Tutorial a beginning tutorial by CProgramming.com.
Style Guide
Links on programming style and philosophy. You should choose one, read it carefully, and program yourself to follow it. The essence of style is clarity and consistency. Choose the guide that you are comfortable with and stick to it.- Indian Hill C Style Guide, well-known style guide for C programming
- Notes on Programming in C by Rob Pike
- Style Guide from the C Kernel Page. Excellent for cutting and pasting examples for formatting.
- C Elements of Style by Steve Oualline.
- How to Steal Code by Henry Spencer. There is no point in re-inventing the wheel!
Computing Resources
Links to computing resources at the University of Chicago.-
Computing Services
Useful information on opening a CS account and remote access
to CS computers. -
Computer Science Instructional Services
The Mac and Linux Lab in basement A of Regenstein Library. Much
useful information on what is available on the Macs.
-
Other Useful Links
Introduction to Linux
These are useful links for getting started on Linux.- First Linux Tutorial
- Linux Command Line Tutorial
- Unix Tutorial (pdf) A training manual from Rice University.
- Linux Fundamentals (pdf) A training maual from Fortuitous Technologies.
-
Linux Cheat Sheets
Each two pages, Print and Keep at your side.
Text Editing on Linux: emacs and vi
Choosing a text editor may be the most important decision you make. I use vi which is a text-based editor (I am old-fashioned.) Most people use emacs, which is a Gui text editor--windows, mouse control, color graphics. There is a Gui version of vi, vim, which looks very good as well. All are available on the Linux cluster.-
emacs Tutorials
There are many, many tutorials on the web. Choose the one most readable to you. emacs is a monster program with something for everyone.- emacs Tutorial I I really like this tutorial from Norm Matloff.
- emacs Tutorial II Many tutorials are variants of this one.
- emacs Tutorial III (pdf) This is a .pdf format and written for students at Rice.
-
vi Tutorials
You will need a passing acquaintance with vi to use the graphical vim.- vi Tutorial I A very good tutorial from Norm Matloff.
- vi Tutorial II (pdf) This is a .pdf format and written for students at Rice.
-
Cheat Sheets
Each two pages, Print and Keep at your side.
-
Other Resources
- emacs Reference Manual Sorry, this is brutal. I have not yet found a thorough reference to emacs online.
-
The vi Lover's Web Page Comprehensive guide to vi.
-
vi IMproved vim by Steve Oualline. A bit dated now, but still
very useful. See especially Chapter 7 for useful commands for Programming.
Programming Tools
There are a multitude of tools available for building programs. I have included links to three you will likely find useful.
- Unix Programming Tools (pdf) Stanford's Guide to using gcc, make,gdb, emacs and bash. An excellent place to start.
-
gcc/g++
Gnu's C/C++ compiler.
- Compiling "C/C++" Programs with gcc/g++ Bare bones introduction to compiling with gcc. The C compiler is gcc (or cc in the text), the C++ compiler is g++. For our purposes, this tutorial contains everything you will need for this class.
-
Documentation on gcc-3.4.0
The Debian 3.0 machines on the CSPP cluster run gcc-3.4.0.
Text-based gdb and graphics based ddd. Listed are reference manuals, two excellent tutorials on gdb, and a reference card for gdb.Debuggers
-
Guide to Using gdb gdb is a text-based debugger.
This is the reference manual.
-
Debugging with ddd ddd is a graphical interface for
gdb. The introductory tutorial is an excellent walk
through.
- Norm Matloff's tutorial on gdb
- Peter Salzman's tutorial on gdb
- gdb reference card (pdf)
- gdb reference card (ps)
-
make
Utility for building projects.- Tutorial on make Very good introduction to using make from the Little Unix Programmers Group (LUPG).
-
GNU make Reference Manual.