CSC 2/454 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, interpreters, and virtual machines 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++ and Java, and, to a lesser extent, on functional languages such as Scheme and Haskell, and scripting languages such as Perl, Python, and Ruby. Rather than dwell on the features of any particular language, we will focus instead on fundamental concepts, and on the differences between languages, the reasons for those differences, and the implications those differences have for language implementation.
Topics to be covered in CSC 2/454 include:
Students taking the course for graduate credit will have additional requirements on assignments and exams, and will be graded on a separate curve.
CSC 173 is a prerequisite for CSC 2/454. In particular, 2/454 relies on prior exposure to regular expressions and finite automata; context free grammars and recursive descent parsing; standard data structures and complexity measures (hash tables, search trees, sorting and searching algorithms); and (to a lesser extent) functional and logic programming and their grounding in lambda and predicate calculus. CSC 252 is recommended but not required. Students not familiar with the characteristics of modern microprocessors (assembly language, caches, pipelining) will need to spend a bit of extra time catching up on this material. In turn, CSC 2/454 is recommended for students planning to take CSC 2/456 (Operating Systems), and is a prerequisite for CSC 2/455 (Software Analysis and Improvement) and CSC 2/458 (Parallel and Distributed Systems). It is also a required course for the undergraduate major.
We will be using as our text the third edition of Programming Language Pragmatics. Copies are available from the campus bookstore or the usual on-line retailers; one or two copies are also on reserve at Carlson Library.
