Programming assignment for Analysis and Design of Algorithms course on Coursera by Tim Roughgarden