coursera design and analysis of algorithm assignments