Computer Science 50

You and google are your best resource. In this class, you'll need to get quick answers to sometimes trivial programming
questions at 2 AM in the morning; questions on APIs, unix commands, bash scripst - go to notes and if not there the web.

If you find a good resource send me the link and we can share it.

There are a number of good pointers to online resources in the lecture notes.

Machines in Lab 001

Sudikoff Lab 001 tour
CS Department User's FAQ

Bash and Shell programming

Short bash tutorial
GNU bash manual
BASH Programming - Introduction HOW-TO
Advanced bash scripting guide

Linux books/links

These books two available online to Dartmouth Students

Linux in a Nutshell, 5th edition (currently not available)

The book I really wanted to list here Running Linux, 5th edition does not seem to be available on Safari Books yet. I've not used this book but looks useful. It includes many advanced issues we will not cover but it could be a useful reference. Let me know.

Linux System Programming
Unix commands on the web


PuTTY/Cygwin Tutorial
A Tutorial on Pointers and Arrays in C, by Ted Jensen
The Wikipedia entry for the C programming language
The USENET discussion Why is C good?

C Programming Notes, by Steve Summit (Experimental College, University of Washington)
    Introductory C Programming, chapters 1-14
    Intermediate C Programming, chapters 15-25

A list of POSIX Library Functions

To obtain further details about any function listed here, on the Sudikoff lab computers type     man functionname

GNU make


I recommend, emacs or vi, vim and subblime - up to you.
I use Aquamacs Emac on my mac
I also like gvim
or just type vi or emacs at the command line.
And for Generation Z: Sublime Text

Some tutorials:

Emacs Tutorial
vim Tutorial
vi tutorial
Sublime tutorial


valgrind: a family of tools for dynamic analysis of programs.
svn souce code management
make is a utility for determining what needs to be done (e.g., compile, link, copy, etc.) to build a program
gtk: A popular toolkit for creating graphical user interfaces.
pandoc: A universal document converter.