Programming exercises from Coursera Algorithms: Design and Analysis 1 course by prof. Tim Roughgarden