Course Outline

Lecture 1. General aspects of programming languages.
Readings: Scott, ch. 1 and 2.

Lecture 2. Introduction to APL

Lecture 3. Introduction to grammars, syntax, and semantics. Introduction to imperative languages and Ada.
Slides: grammars.ppt
Readings: Scott, ch. 3,6, Barnes 2,3,7
Lecture 4. Basic elements of Ada, including datatypes, strong typing, package and statement forms.
Slides: Introductory Slides.
Readings: Scott ch. 7, Barnes ch. 6, Stroustrup ch. 4

Lecture 5. Subprograms, functions, procedures, methods. Parameter passing, scope and visibility. Block structure and static scoping. Nested procedures, implementation issues.
Readings: Scott, ch. 8, Barnes, ch. 9, Stroustrup ch. 7.

Lecture 6. Program structure: Modules, packages, and interfaces. Abstract types and information hiding.
Readings: Barnes ch. 11, Stroustrup ch. 8-10.

Lecture 7. Object oriented programming: Objects, classes, data and function members, constructors and destructors.
Slides: Object Oriented Programming
Readings: Scott, ch. 10, Stroustrup ch. 10.

Lecture 8. language summary: C++: inheritance, dynamic dispatching, polymorphism. Multiple inheritance.
Readings: the rest of Stroustrup (:-)!)

Lecture 9. Generic programming and templates in Ada95 and C++. Containers and Iterators.
Readings: Scott 8.4, Barnes ch. 17, Stroustrup ch. 13, 18.

Lecture 10. Exception handling. Concurrent programmming: threads, tasks, synchronization, communication. Concurrency in Ada and Java.
Slides: tasking.ppt concurrency2.ppt
Readings: : Scott ch. 12, Barnes ch. 18.

Lecture 11. Functional programming: LISP and Scheme. The LISP interpreter.
Readings: : Scott ch. 11.2, the Scheme report.

Lecture 12. Language summary: Java
Readings: your favorite Java text.
Lecture 13. Discussion of typing and introduction to ML.
Slides:typing.ppt, ML.ppt
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.
Slides:midterm solution. Python.
Readings: online documentation.

Lecture 15. C++ Overview (Guest lecture by Ed Schonberg)
Slides: Set 1, Set 2

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)