Founded in 1966

Programming Languages Prelim (CS2210)

Format

The prelim exam in Programming Languages will include the final exam and additional questions during the final, with extra time. The CS2210 final and preliminary exam date and time will be posted on the course website maintained by the current CS2210 instructor.

Reading List

Books: 1. Advanced Compiler Design Implementation by Steven Muchnick, Morgan Kaufmann Press. THE DEFINITE REFERENCE 2. Compilers Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi and Jeffery Ullman, Addison Wesley Press. 3. Concepts in Programming Languages by John C. Mitchell, Cambridge University Press, 2003. 4. Crafting a Compiler by Charles N. Fischer and Richard LeBlanc, Jr., Benjamin Cummins Press. TOPICS A graduate student is expected to have a thorough knowledge of issues in programming language design and implementation. She/he should be able to discuss language design from the orthogonal view points of individual languages. Familiarity with all programming languages is not required but the student should be familiar with constructs in the various types: imperative, functional, object-oriented, concurrent, and logic-based. In particular, the he/she should be familiar with the current widely used languages, such as Java, C++, Ada and C. The student should be able to discuss and contrast features such as semantics, data types, control structures, abstraction mechanisms, concurrency mechanisms, and scope mechanisms. The student should also be familiar with various techniques to implement the language constructs, including both compilers and interpreters. I. Grammars II. Compiler Design A. Lexical Analysis (NFA & DFA construction) B. Parsing: (LL, LR, LALR grammars, recursive descent and predictive parsing, SLR and LR parsing, parse table construction and compression, LALR parsers) C. Semantic Analysis (type checking, attribute grammars) D. Code Generation E. Intermediate representations (data and control dependence, static single assignment (SSA) form construction, iterated dominance frontier) F. Control flow analysis (dominator based approaches and structural analysis) G. Data flow analysis (data flow lattices, distributive and non-distributive analyses, data flow equations) H. Register Allocation (graph coloring, graph coloring for webs and variables, interference graphs, Chaitin-style register allocation and optimistic spilling) I. Code scheduling (list scheduling, software pipelining and trace scheduling, dependence graphs) J. Optimizations (three-address code and SSA based optimizations, global CSE, loop-invariant code motion, local and global value numbering) III. Storage management A. Static B. Stack-based C. Heap-based D. Garbage collection IV. Fundamental language concepts A. Control structures B. Data structures C. Data abstractions D. Scope E. Types, Polymorphism and Type Checking F. Concurrency G. Exception handling V. Design of program languages A. Imperative B. Object oriented C. Functional D. Concurrent

RECOMMENDED COURSE

CS 2210, taught in the Fall Term

Sample Exams

Programming Languages: January 2001,  January 1999

You are using an older browser that does not support current Web standards. Although this site is viewable in all browsers, it will look much better in a browser that supports Web standards.