

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A course syllabus for the Programming Languages course offered by the Computer Science Department at NYU's Courant Institute of Mathematical Sciences in Spring 2011. The course covers the design and implementation of modern general-purpose programming languages, including abstraction mechanisms, concurrency, constructs for programming in the large, control structures, exception handling, functions, garbage collection, inheritance, modules, naming, object orientation, scopes, state, syntax, and type systems. The course looks at a variety of imperative, object-oriented, functional, and logic programming languages, and assignments and projects focus on a variety of programming languages to facilitate exposure to language design and related implementation issues.
Typology: Lecture notes
1 / 3
This page cannot be seen from the preview
Don't miss anything!


This course covers the design and implementation of modern general-purpose programming languages. Topics include abstraction mechanisms, concurrency, constructs for programming in the large, control structures, exception handling, functions, garbage collection, inheritance, modules, naming, object orientation, scopes, state, syntax, type systems, etc. The course looks at a variety of imperative, object-oriented, functional, and logic programming languages (e.g., C, Ada, C++, Java, Lisp, ML, Scheme, Haskell, Prolog, Python, etc.) Assignments and projects focus on a variety of programming languages to facilitate exposure to language design and related implementation issues. This course builds on the experiences of numerous NYU instructors who taught the course in previous semesters.
COURSE OBJECTIVES
The objectives of the course are as follows:
The following syllabus is subject to change:
Week Topic Readings from textbook sections
1 Programming Languages overview and syntax
Imperative languages: names, scoping, and bindings 3.1-3.4 except 3.3.4 and 3.3.
Control structures: loops, conditionals, and case statements
Subprograms: functions and procedures, parameter passing, nested procedures, first-class and higher-order functions
Functional Programming (lambda calculus overview and Scheme) 10, including 10.6.1 on the CD
Data types and representation (part 1): strong vs. weak typing, static vs. dynamic typing, type declarations, type equivalence, type inference
Data types and representation (part 2): subtypes and derived types, scalar and composite types (arrays, records, variant records), pointers and references
Midterm
8 ML: overview, pattern matching, type inference, data types, pattern matching
Program Structure: modules, packages, interfaces, abstract types and information hiding
Object-Oriented Programming (part 1): objects, classes, data and function members, constructors/destructors
Object-Oriented Programming (part 2): OOP in C++ and Java, objects vs. closures, classes vs. data types, OO pitfalls.
Generic Programming and templates in C++, Java, and ML, containers and iteration.
13 Exception handling, continuations, 8.5, 12