Programming Languages

Dewar, Robert

Graduate Division

Computer Science

Contact Information:


Slides are linked off the course outline.

Mailing List:


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 many others.

Course Outline


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.



Michael Scott: Programming Language, Pragmatics (Morgan Kaufman 2000) This is a 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 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.

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:



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:
gnatmake numbers.adb

which you can execute by writing:

If you want to compile a single file, you can write:
gcc -c numbers.adb

Ada Information:

All of the above are available for downloading in multiple formats from the NYU ftp site.

If Ada is new to you, you may want to start with this ada summary.

Copious information on Ada, including programming environments, software, and tools, can be found at Adapower.

Please report problems with this page to gingell@gnat.com