coursera functional programming assigments