Practical Unix
openclassroom.stanford.edu