Introduction to programming languages and paradigms, the components that comprise them, and the principles of language design, all through the analysis and comparison of a variety of languages (e.g., Pascal, Ada, C++, PROLOG, ML). Will involve programming in most languages studied.
This course is intended to broaden students' experience beyond traditional
imperative programming and provide a framework for understanding what makes a programming language useful. The students learn about the basic components of programming languages and how they have evolved over time. In practice, this material will help students pick the right language for the problem, or, if a particular language must be used, adopting an appropriate programming paradigm within the language.
Programming assignments that expose the importance and synergy of key features and convey the essential qualities of programming paradigms studied.
Please see Prerequisites page.
Typically two sections per year. Fall and Winter. Please see Tentative Course Offerings page.
Formerly CSE 173