The design of a programming language is determined by a selection from a general collection of programming language concepts.
With some frequency, new languages are introduced that combine those concepts in a novel manner, sometimes introducing new concepts.
A computer science student will have to work with multiple generations of programming languages during his/her career.
In order to learn a new language, student should understand the basic principles in the design of programming languages and analyse languages in terms of those principles.
In this course, we study those basic principles by examining three concrete programming languages: Scala, C, and JavaScript.

2013-2014Dec 1, 2013May 31, 2014
2012-2013Feb 11, 2013Aug 16, 2013
2011-2012Feb 5, 2012Aug 30, 2012