Design and use of mainstream programming languages: naming, scoping, type models, control structures, procedural abstractions, modularization. Implementation issues and run-time organization. Languages studied include Pascal, C, Ada, LISP, and FORTRAN. Extensive programming exercises in various languages.
Advanced Programming Languages G22.2111 Prerequisite: G22.2110. 3 points.
Discusses the major paradigms in modern programming language design: inheritance and object-oriented programming (C++, Smalltalk), logic programming (Prolog), functional programming (ML, Haskell), set-based languages and prototyping (SETL), pattern-matching, generators and backtracking (ICON). Formal definitions of programming languages, extensive programming practice in several of the above.
Compilers and Computer Languages G22.2130 Prerequisite: G22.1170. 3 points.
Structure of one-pass and multiple-pass compilers, symbol table management, lexical analysis. Traditional and automated parsing techniques, including recursive descent and LR parsing. Syntax-directed translation and semantic analysis, run-time storage management, intermediate code generation. Introduction to optimization, ad hoc code generation techniques.
Advanced Compilers and Computer Languages G22.2131 Prerequisite: G22.2130. 3 points.
Selected topics, including: automating lexical analysis, LL parsing, attribute grammars, dynamic storage allocation and garbage collection, code generation for RISC machines, formal studies of code generation, introduction to global optimization, data flow frameworks, debuggers.
Distributed Computing G22.2631 Prerequisites: G22.1170, G22.2250. 3 points.
Concepts underlying distributed systems: synchronization, communication, fault tolerance, and performance; examined from three points of view: (a) problems, appropriate assumptions, and algorithmic solutions; (b) linguistic constructs; and (c) some typical systems.
Programming Languages (Honors) G22.3110 Prerequisite: permission of the instructor. 4 points.
In-depth examination of the four major categories of programming languages: imperative, object-oriented, functional, and logic languages. The specific languages covered include Ada, C++, LISP, ML, Prolog, and SETL. Fundamental issues of programming languages such as type systems, scoping, concurrency, modularization, control flow, and semantics are discussed. Extensive programming exercises are assigned.
Compilers and Computer Languages (Honors) G22.3130 Prerequisites: one semester of undergraduate compilers or G22.2130 and permission of the instructor. 4 points.
Lexical scanning and scanner generation from regular expressions; LL, LR, and universal parser generation from context free grammars; syntax directed translation and attribute grammars; type and general semantic analysis; code generation, peephole optimization, and register allocation; global program analysis and optimization. In addition to these topics, the course provides experience using a variety of advanced language systems and experimental system prototypes.
NYU
-- last modified 24 September 1996