G22.2110-001 Programming Languages
Instructor: Prof. Robert Dewar
Graduate Division of Computer Science
Tuesday 7 to 9pm at room 101
Slides: Slides are linked off the course
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. The languages are chosen because
of the interest of their features, and not necessarily because of their wide
use. We will touch on Ada, C++, C#, Java, LISP, ML, Python, Scheme, and mention
Prerequisites:Undergraduate courses in data structures and algorithms,
familiarity and programming experience with one of the following: C, C++, Ada,
Java, or Pascal.
Programming assignments and final examination:
Ada grading criteria
Assignment 1: Ada .
Due date: March 2.
- Assignment 2:
A choice of either APL or Python. Due date: March 30.
For this assignment,
you can look further afield in the ACM assignments and go to a previous
year if you like, or to regional competitions. Part of the assignment
is to choose a problem that really shows off the chosen language
effectively. Include in the documentation a discussion of why you
chose the particular assignment you did. Note: digital roots and scramble
sort are not allowed.
- Assignment 3: Scheme. Due date: April 13.
The same as assignment 2, except scheme as the
- Assignment 4: ML. Due date: April 27.
Recode the example you chose in assignment 3 in
ML. Include in the documentation a discussion of Scheme vs ML for
the problem you chose.
- Assignment 5:
concurrent programming in Ada, Java or C++,
DUE DATE: Final exam day (May 11th).
- Final Exam: May 11th.
Python assignment grading guide lines
Michael Scott: Programming Language, Pragmatics (Morgan Kaufman 2000)
This is an excellent recent text that covers both language design
and compiler fundamentals. In your readings for this course you don't need to
study any section that has to do with translation and compiler construction, but
that material is interesting, and you will examine it in more detail when you
take the Compiler Construction course.
John Barnes: Programming in Ada95
You must have some good text on C++ and on Java. For C++,
the 3rd edition of
Stroustrup: the C++ programming Language is
reference. For Java, the language definition is given in:
Gosling, Joy and Steele: the Java Language Specification.
For both languages, there
introductory texts by Horstmann that are very well-written, and innumerable
Several people asked for an easy reference for learning Scheme (unlike the
official reference manual already on the web page). Dr. Goldberg recommends:
The Little Schemer, 4th Edition
Daniel P. Friedman, Matthias Felleisen
MIT Press, 1995
The Scheme Programming Language:
Ada: You can use the GNAT compiler on all servers at NYU. All the
needed files are in /usr/local/pkg/gnat/bin/, so you should place this directory
in front on your path. If your test program is called numbers.adb, you create an
executable for it simply by writing:
which you can execute by writing:
If you want to compile a single file, you can write:
gcc -c numbers.adb
All of the above are available for downloading in multiple formats
from the NYU ftp site.
is new to you, you may want to start with this ada
Copious information on Ada, including programming
environments, software, and tools, can be found at Adapower.
Please report problems with this page to firstname.lastname@example.org