“Begin at the beginning,” the King said, very gravely, “and go on till you come to the end: then stop.” ― Lewis Carroll, Alice in Wonderland

As a future professional computer scientist, you should be comfortable learning new programming languages, even those that have not yet been invented. The way to do this is to understand the underlying principles of programming languages. That is the goal of this course.

During the course of a software developer’s career, languages will trend in and out of fashion. Understanding programming language (PL) principles helps you keep pace in a rapidly changing field. Furthermore, recent trends toward domain-specific languages mean many developers will need to design their own languages. This course teaches these skills, contextualizes the history and breadth of programming language design, and familiarizes students with both current and upcoming future trends.


This being a NUflex class, students may attend in different ways. Please defer to the dynamic scheduler on how to attend on any given day.

30368 Jason M, W 14:50-16:30 ISEC 102 or Zoom