The University of Iowa
CS Department

22C:54 -- Programming Languages Concepts

Fall 1999


Syllabus

Prerequisites

22C:30 Computer Science III, 22C:34 Discrete Structures, 22C:40 Computer Organization and Hardware

Textbook

K. C. Louden. Programming languages: Principles and Practice. PWS-kent Pub.

On-line supplements

Course Objectives

The purpose of this course is to introduce the fundamentals concepts and methods of the complete spectrum of programming paradigms. The traditional style of programming languages (called imperative programming and exemplified by Pascal, C, and so on) has been augmented during the years by several other substantially different styles that are enjoying rapidly growing acceptance. These alternative styles are explored, including their relation to, and influence on, modern imperative languages. Students will gain insight into the central ideas of the major paradigms, be equipped to more easily learn new programming languages, and obtain a deeper understanding of familiar programming languages. Three new languages will be presented in considerable detail: Standard ML, Prolog, and Oz. Each of these languages is organized around a single conceptual idea and adheres to it faithfully. But the fundamental ideas are quite different from the usual imperative languages, and will require active involvement to achieve a solid understanding of each language in the available time. In particular, students should use the available computer facilities and resources to explore and experiment in addition to the programming assignments. Additional languages (in particular, Miranda) will be presented as needed.

Homework

Several small written assignments and programming assignments will be given covering the material from the text and lectures. All assignments will be collected and graded.

Exams

There will be two midterm exams and a final exam. All the exams will be open-book and scheduled for a 90 minute period, if possible.

Grading

The weighting of items in grade determination will be as follows:
30% Programming/written assignments
20% Exam I
20% Exam II
30% Final Exam
The following cutoffs will be used to determine letter grades. In the ranges below, x stands for your total score at the end of the semester. Final scores near a cutoff will be individually considered for the next higher grade.

Grade Score
A 85 <= x < 100
B 70 <= x < 85
C 60 <= x < 70
D 50 <= x < 60
F 00 <= x < 50

Plus(+) and minus(-) grades will also be given.

Course Policies

Homework: You are urged to consult sources other than our text, even if there is no directed outside reading assignment, including both reserve books and on-line material. You are also encouraged discuss the course topics with your classmates. It is a genuinely helpful learning activity having to formulate your own thoughts about the material well enough to express them to others. However, since the homework counts as a significant portion of your grade, it is expected that the submitted work be strictly your own.

Late submissions: Written assignments will be submitted in class, before the class starts. Late written and programming assignments will be graded according to the following policy:

Saturdays and Sundays are excluded for the count of late hours.

Cheating: Copying someone else's work or working on homework together will result in a 0 on the assignment for the first offense and an F in the course for the second offense.

Attendance: Students are expected to attend all classes. Your knowledge and therefore your grade depends on it. You are responsible for all announcements and material covered during class.

Extra-credit: No extra-credit homeworks or tests will be given.

Make-up exams: Make-up exams will be offered only if there is a serious, documented reason for not being able to attend the scheduled exam, and the request is made at least a week before the scheduled exam.

Special needs: I must hear from anyone who has a disability that may require some modification of seating, testing, or other class requirements so that appropriate arrangements can be made. Please see me after class or during office hours.

Computing Facilities:

We will use the HP workstations in the CS Educational Labs in 301 MLH. Please see me after class if do not have an CS account yet. Programming assignments will employ the languages ML and Miranda (functional), Prolog (logic), and Oz (functional/logic/object-oriented).

Outline:

The topics that will be covered in the course are outlined below. The outline is tentative and will be adjusted as necessary during the course of the semester.

No. of
lectures
Topic Readings
1 History/survey Chaps 1,2 of textbook
6 Syntax/grammars Chap 4 of text
9 Functional programming Chap 10 of text + on-line material +
Paulson (reserve)
- Midterm I (all of the above)
4 Data and control structures Chaps 3,5,6,7 of text
10 Logic Programming Chap 11 of text + on-line material +
Clocksin and Mellish (reserve)
- Midterm II (all of the above after Midterm I)
11 OO prog. + data abstraction Chaps 8,9 of text + on-line material
- Final Exam (comprehensive) (all of the above)

Last Updated: Aug 23, 1999