General aspects of programming languages.
Readings: Scott, ch. 1 and 2.
Introduction to APL
Introduction to grammars, syntax, and semantics.
Introduction to imperative languages and Ada.
Readings: Scott, ch. 3,6, Barnes 2,3,7
Basic elements of Ada, including datatypes, strong typing, package and
Slides: Introductory Slides.
Readings: Scott ch. 7, Barnes ch. 6, Stroustrup ch. 4
Subprograms, functions, procedures, methods. Parameter passing, scope and
visibility. Block structure and static scoping. Nested procedures,
Readings: Scott, ch. 8, Barnes, ch. 9, Stroustrup ch. 7.
Program structure: Modules, packages, and interfaces. Abstract types and
Readings: Barnes ch. 11, Stroustrup ch. 8-10.
Object oriented programming: Objects, classes, data and function
members, constructors and destructors.
Slides: Object Oriented Programming
Readings: Scott, ch. 10, Stroustrup ch. 10.
language summary: C++: inheritance, dynamic dispatching, polymorphism. Multiple inheritance.
Readings: the rest of Stroustrup (:-)!)
Generic programming and templates in Ada95 and C++. Containers and Iterators.
Readings: Scott 8.4, Barnes ch. 17, Stroustrup ch. 13, 18.
Exception handling. Concurrent programmming: threads, tasks, synchronization,
communication. Concurrency in Ada and Java.
Readings: : Scott ch. 12, Barnes ch. 18.
Functional programming: LISP and Scheme. The LISP interpreter.
Readings: : Scott ch. 11.2, the Scheme report.
Language summary: Java
Readings: your favorite Java text.
Discussion of typing and introduction to ML.
ML tutorial: Tutorial.
Readings: : Scott ch, 7.2.5 (Sethi ch. 9, end of ch. 4),
and class notes
Lecture 14. Prototyping and scripting. A modern
hybrid language: Python. Exam review.
Readings: online documentation.
Lecture 15. C++ Overview (Guest lecture by Ed Schonberg)
Lecture 16. Survey of other programming languages.
Slides: Language Tour
If you already know some Java, a very useful book is:
Effective Java: programming Language Guide by Joshua Bloch
(Addison Wesley 2001)