Project for the curriculum 'Thoughts and Methods of Program Design' in SJTU in 2013