Coursera Functional Programming.
Week 4-5. PatMat