This is the first usual assignment for students taking 106A Programming Methodology course at Stanford University.
http://web.stanford.edu/class/cs106a/
https://www.youtube.com/watch?v=KkMDCCdjyW8&list=PL6C11012B1B464EC5 https://www.youtube.com/watch?v=tgEq4e9nQ5E&list=PLAe8LJLmXkN1348vyNZ87L_t_KlbMFIYr