Course Outline

Lecture 1. The variety of programming languages. Abstraction, programming in the large, software engineering. Compilers and interpreters. Syntax and semantics. Context-free grammars.
Readings: Scott, ch. 1 and 2.
class notes (powerpoint) class notes (pdf)
Lecture 2. Imperative languages. An overview of Ada95. Control structures: conditionals, loops, case statements.
Readings: Scott, ch. 3 and 6, Barnes, ch. 2 and 3, ch. 7.
class notes (powerpoint) class notes (html)
Lecture 3. Data types and their representation. Strong typing. Static vs. dynamic typing. Type declarations, type equivalence. Subtypes and derived types in Ada95. Numeric types, scalar types.
Readings: Scott, ch. 7, Barnes, ch. 6, Stroustrup, ch. 4.
class notes (powerpoint)
Lecture 4. Composite types: arrays, records, variants and unions. Strings. Pointers, access types and dynamic allocation.
Readings: Barnes, ch. 8 and 10 (up to section 10.3), Stroustrup ch. 5.
class notes (powerpoint)
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.
class notes (powerpoint)
Lecture 6. Program structure: Modules, packages, and interfaces. Abstract types and information hiding.
Readings: : Barnes ch. 11, Stroustrup ch. 8-10.
class notes (powerpoint)
Lecture 7. Object oriented programming: Objects, classes, data and function members, constructors and destructors.
Readings: Scott, ch. 10, Stroustrup ch. 10.
class notes (powerpoint)
Lecture 8. language summary: C++: inheritance, dynamic dispatching, polymorphism. Multiple inheritance.
Readings: the rest of Stroustrup (:-)!)
class notes (powerpoint)
Lecture 9. Generic programming and templates in Ada95 and C++. Containers and Iterators.
Readings: Scott 8.4, Barnes ch. 17, Stroustrup ch. 13, 18.
class notes (powerpoint)
Lecture 10. Exception handling. Concurrent programmming: threads, tasks, synchronization, communication. Concurrency in Ada and Java.
Readings: : Scott ch. 12, Barnes ch. 18.
class notes (powerpoint)
Lecture 11. Functional programming: LISP and Scheme. The LISP interpreter.
Readings: : Scott ch. 11.2, the Scheme report.
Pointers to Scheme.
class notes (powerpoint)
Lecture 12. Functional programming in ML: type inference, first-class functions.
Readings: : Scott ch, 7.2.5 (Sethi ch. 9, end of ch. 4), and class notes
class notes (powerpoint)
Lecture 13. Language summary: Java
class notes (powerpoint)
Readings: your favorite Java text.
If you already know some Java, a very useful book is:
Effective Java: programming Language Guide by Joshua Bloch (Addison Wesley 2001)
Lecture 14. Prototyping and scripting. A modern hybrid language: Python.
Readings: online documentation.
class notes (powerpoint)