lecture notes for programming techniques iii 27 pages 402342