Programming Language Concepts
Model Syllabus
|
Carlo Ghezzi
Politecnico di Milano
|
Mehdi Jazayeri
Technical University of Vienna
|
Course contents
The course covers concepts underlying the development
of programming languages. It assumes that the students are fluent in at
least one programming language, preferably C++. The course starts with
an emphasis on imperative languages, including object-oriented languages
but it also covers the fundamental concepts of functional and logic languages
and contrasts the three different paradigms. The goal of the course is
to enable the student to evaluate the inherent strengths and weaknesses
of a programming language and the best ways to exploit a given language.
The language used in most examples is C++ with references to Java, Ada
95, ML, Prolog, and other languages as necessary.
Topics covered
Syntax and semantics; Data types; Control structures;
Modularity and programming in the large; Generic programming; Object-oriented
programming languages; Functional programming languages; Logic and rule
based languages;
Textbook
Programming language concepts, 3rd edition, John
Wiley & Sons, 1998.
| Lecture
topics and reading assignments |
| Chapter |
Topic |
# of hours |
| 1 |
Introduction &
Overview |
2 |
| 2 |
Syntax and semantics |
8 |
| 3 |
Data types |
8 |
| 4 |
Control structures |
6 |
| 5 |
Modularity |
6 |
| 6 |
Object-oriented programming
languages |
6 |
| 7 |
Functional programming
languages |
6 |
| 8 |
Logic and rule-based
programming languages |
6 |
| 9 |
Conclusions |
2 |
Notes
We believe that every course should cover Chapters 1 through 5. These are
the basics that every computer scientist must know. We spend considerable
lecture time on Chapter 2, going through Simplesem examples. Here, the
students really begin to appreciate the semantics and costs of language
features. We also highly recommend covering Chapter 6. It may be argued
that object orientation should be required knowledge for all computer scientists;
but even if not, the chapter provides an opportunity to show how the concepts
learned earlier can be used to understand and analyze the important concepts
of object orientation. A full, or more advanced, course that deals with
languages and paradigms should cover Chapters 7 and 8 as well. Each of
these chapters is based heavily on concepts of Chapters 1-5. Covering these
paradigms helps integrate the student's knowledge. The chapters, however,
are independent. If the instructor is more inclined to one of these paradigms,
it is possible to emphasize the appropriate chapter and skip the other
one. We, however, believe that in a general course on programming languages,
it is better to cover several paradigms.
The simplesem interpreter, available on this site, can be used as a
tool for exercises that bring the semantics of language features to life.