Coursera Algorithm Design and Analysis Part I