CS 330 Objectives and Topics

Learning Outcomes

Programming Language Familiarity

Learn the vocabulary of programming language design, syntax, and semantics

Program Language Flexibility

Be able to write programs using non-imperative language paradigms.

This course will prepare you to understand the concepts underlying programming languages and to design and implement small ones. Rather than simply surveying a bunch of languages at random, we will focus on specific concepts and languages that best embody those concepts. Even if you don't use these specific languages again, you are likely to encounter the concepts in other languages, and like many things, time spent doing something a different way often causes us to be better users of our regular tools once we return to them.

We will also work on the basics of implementing interpreters -- and language tools in general -- as well as type checking and automated memory management. Few of us will design a large mainstream language during our careers, but almost all of us will need to design and implement a small language.

Note: This course is undergoing revision from previous semesters, so please pardon the construction dust while we work through the changes.