Algorithms for programming assignments. Coursera, Algorithms, part I.