Programming Language Concepts

22C:111 Programming Language Concepts
Fall 2005

Instructor

Arthur C. Fleck; Office: 201D MLH; Hours: 10-11am M-W-F or by arrangement; email: fleck@cs.uiowa.edu; Ph. 335-0718

Teaching assistant

Whenli He; Office: 101C MLH; Hours: 10-11am T-Th or by arrangement; email: whe@cs.uiowa.edu; Ph. 353-2328

On-line class directories

The directory containing electronically distributed course materials is /group/class/c111.
There will be submit directories identified by:
course=c111, directory=HwkN (N=homework number).

Prerequisites

22C:21 & 22C:22

Text Materials

Course Goals

The purpose of the course is to introduce the fundamental concepts and methods of the complete spectrum of programming paradigms. The traditional styles of programming languages -- imperative languages (e.g., Pascal, C, etc.) and object-oriented languages (e.g., C++, Java, etc.) -- do not provide a full appreciation of programming concepts. Several other substantially different styles offer an expanded view of useful programming ideas. These alternative styles are explored, including both their relation to, and influence on, modern languages. Students should gain insight into the central ideas of the other major paradigms, be equipped to more easily learn new programming languages when they are encountered, and obtain a deeper understanding of languages that are already familiar.

Two new languages will be presented in considerable detail. These languages are uncomplicated in the sense that each is organized around a single conceptual idea and adheres to it faithfully. But the fundamental ideas are quite different from customary languages, and it will require active involvement to achieve a solid understanding of each of them in the available time. In particular, the computer facilities should be used to explore and experiment beyond the programming assignments.

Topic Outline

Course Administration

There will be two in-class exams, a final exam, plus regular homework assignments. The weighting of these items in grade determination is as follows:

homework 20%
exam I 20%
exam II 20%
final exam 35%
subjective 5%

The exams are all open book/notes and emphasize problem solving skills. Exam 1 will be given on Monday, October 17, and the second exam will be given on Friday November 18. The final exam is scheduled for 12 PM (noon), Thursday December 15.

You are encouraged to consult sources other than our texts (even if there is no directed reading assignment), including both reserve books and on-line material. You are also encouraged to discuss the course topics with your classmates since it is a genuinely helpful learning activity to formulate your own thoughts about the material sufficiently to express them to others. But since the homework counts as a significant portion of your grade, it is expected that submitted work will be strictly your own; the department has explicit procedures for cheating that are described in the CS Undergraduate Handbook.

Links to Class Material

Links to Related Web Sources