Notes and programs from MIT SICP open courseware course