Course Description

CSC 254 is an introduction to the design and implementation of programming languages.  From the design point of view, we will study language features as tools for expressing algorithms.  From the implementation point of view, we will study compilers as tools to map those features efficiently onto modern computer hardware.  The course will touch on a wide variety of languages, both past and present, with an emphasis on modern imperative languages, such as C++, Java, and Ada 95, and, to a lesser extent, on functional languages such as Scheme and ML, and scripting languages such as Perl, Python, and Ruby.  Rather than dwell on the features of any particular language, we will focus instead on the differences between languages, the reasons for those differences, and the implications those differences have for compiler implementation. 

Topics to be covered in CSC 254 include: 

Prerequisites

CSC 173 is a prerequisite for CSC 254.  CSC 252 is recommended but not required.  In turn, CSC 254 is recommended for students planning to take CSC 2/456 (Computer Systems), and is a prerequisite for CSC 2/455 (Advanced Programming Systems) and CSC 2/458 (Parallel and Distributed Systems).  It is also a required course for the undergraduate major. 

Textbook

We will be using as our text the second edition of Programming Language Pragmatics.  Copies are available from the campus bookstore or the usual on-line retailers. 


Last Change:  01 September 2007 / Michael Scott's email address