Programming Languages are the duct tape, bricks, mortar and steel of the information age. Over the last thirty years, a variety of languages with diverse features have been developed, expressive radically different perspectives of the idea of computation. CSE 130 is an introduction to these different perspectives, the fundamental concepts of languages, and how modern language techniques and idioms can be used to engineer software systems. For this purpose, we shall focus on three different paradigms -- functional, object-oriented and logic programming as embodied in OCaml, Python and Prolog. Many students will be encountering these paradigms, languages and idioms for the first time. As with spoken languages, these are best absorbed by immersing yourself in the different environments and practicing your skills through experimentation. Thus, we will have no written homeworks, but instead grade you through 6-8 programming assignments, a midterm, and a final exam.