I am taking this course[1]: Programming Languages. It emphasizes on big ideas behind languages and functional programming which is very interesting and enlightening.You will implement a type checker and interpreter through this course(I am struggling ML's pattern matching now but feel quite pleasant ).