Learn C the Hard Way
Structure and Interpretation of Computer Programs