Learn Python the Hard Way (and version control, too)