Programming Languages Part A is a course offered by The University of Washington through Coursera and taught by Proffesor Dan Grossman.
The course is as an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming.
Syntax vs. semantics vs. idioms vs. libraries vs. tools
ML basics (bindings, conditionals, records, functions)
Recursive functions and recursive types
Benefits of no mutation
Algebraic datatypes, pattern matching
Tail recursion
Higher-order functions; closures
Lexical scope
Currying
Syntactic sugar
Equivalence and effects
Parametric polymorphism and container types
Type inference
Abstract types and modules