Introduction to Functional Programming
edx.org