This class will look at a variety of different programming languages, both common and obscure. In this class, we’ll look at functional programming languages, object oriented programming languages, and languages that combine these paradigms. We will look at interpreted vs compiled languages, and look at the differences in memory management systems between languages. Students will gain a deeper understanding of the strengths and weaknesses of different programming languages by looking at them side by side. Students will think critically about how the architecture of a language influences the applications of that language. Experience programming in at least one programming language is required for this class.