Programming from the Ground Up [pdf]