programs and exercises from the PragProg books