Learning C
rsheridan6: Just about everybody who answers this will say that K&R is good, and I agree, but in addition to this I found that learning the basics of assembly was helpful.  You can really see what's going on with the stack, what a pointer really is (pointers are really the only tough part about learning C, everything else will be the same old same old if you already know how to program), and the difference between a system call and a regular function call, and it doesn't take much time to learn.Books by W. Richard Stevens were old when I was learning, and older now, but they were the best guides to taking it to the next levels.  You can pick up a lot of tricks and stylistic pointers from him while learning about UNIX features and networking.  Maybe somebody will chime in with a more up-to-date resource that does the same thing.