textbook:
composing_programs2.pdf