Computing That Serves

CS 330

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 David Wingate
2 Fall 2017 David Wingate
Section # Semester Instructor Website Description
1 Winter 2018 Bryan Morse
2 Winter 2018 Bryan Morse
1 Fall 2017 David Wingate
2 Fall 2017 David Wingate
1 Winter 2017 David Wingate
1 Fall 2016 David Wingate Taught with Bryan Morse
1 Winter 2016 David Wingate

Short Summary: 

Concepts of Programming Language




Concepts of Programming Language

Principles and concepts characterizing high-level computer programming languages, process and data abstraction, encapsulation, inheritance, functional programming, logic programming, scanners, and parsers.

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.