Programming Languages

G22.2130.01
Spring 2001
Tuesday 7:00 - 9:00
Room 109, Warren Weaver Hall
Professor Edmond Schonberg

Room 412, Warren Weaver Hall

Instructor: Edmond Schonberg (schonberg@cs.nyu.edu)
Office hours: Tuesday 3:00 to 5:00 pm, and by appointment.
Teaching Assistants: Congchun He (congchun@cs.nyu.edu)
Bing Lai (binglai99@yahoo.com)

Objectives

We will examine basic concepts underlying the design of modern programming languages: types, control structures, abstraction mechanisms, inheritance, concurrency, constructs for programming in the large, etc. This is not a programming course per se, but there will be programming assignments in several languages, imperative and functional.
Course Outline

Prerequisites

Undergraduate courses in data structures and algorithms, familiarity and programming experience with one of the following: C, C++, Ada, Java, or Pascal.

Course Work

Programming assignments, final examination, roughly in the same weight, i.e. the final represents half of the grade.

Assignments

Assignment 1

Solution to assignment 1

Assignment 2

Assignment 3

Assignment 4

Assignment 5

Assignment 6

Assignment 7

Textbooks

required:

Ravi Sethi : Programming Languages, concepts and constructs , 2d Edition
John Barnes: Programming in Ada95

Recommended :

You must have some good text on C++ and on Java. For C++ the 3rd edition of Stroustrup: the C++ programming Language, is the standard reference. For Java, the language definition is given in: Gosling, Joy and Steele: the Java Language Specification. For both languages, there are several introductory texts by Horstmann that are very well-written, and innumerable others.
We will discuss functional languages, specifically Scheme and ML, for which there is abundant on-line documentation, and a good overview in the text by Sethi.
We will discuss scripting and so-called very high level languages, and focus on Python, There is abundant on-line documentation for it, and several programming texts and users guides from O'Reilly.

Class list

All students should register themselves with the class list, which is used for all technical discussions concerning the course. To register, go to the following web page, and follow the instructions:

cs.nyu.edu/mailman/listinfo/g22_2110_001_sp01

You can also subscribe by sending an e-mail message to majordomo@cs.nyu.edu. The contents of the message should be the single line:
     subscribe g22_2110_001_sp01
you will be notified in return that you are a list participant. Please send all your questions to this list (not to the instructor) so that everyone can participate.