This course introduces the fundamental constructs of contemporary programming languages and the tools necessary for the critical evaluation of existing and future programming languages.