CS 302:  Programming Language Concepts
Instructor Textbooks Course Work Assignments Schedule ( .dvi format / postscript / pdf format )
Deadlines Collaboration Grading

Introduction: This course has three main themes:

Programming languages provide a mechanism for programmers to express solutions to problems, and the details of a language should facilitate thinking about a problem and its solution. The development of languages is motivated by a designer's view of problem solving. Such problem-solving paradigms include functional, imperative, object-oriented, and declarative programming. Design issues include data types, data control, sequence control, and semantics. Implementation topics include data structure implementation, run-time storage, language translation, and efficiency. During most weeks, the course will examine these aspects of programming languages on Wednesdays.

Formalism provides clarity for programming in two ways.

CSC 151, 152, and other courses at Grinnell provide considerable experience with the functional, imperative, and object-oriented paradigms for problem solving. Declarative programming represents a fourth fundamental approach, based on rules and logical inference. The last two weeks of this course will explore this paradigm through the Prolog programming language.


Henry M. Walker

Office: Science 2420
Telephone: extension 4208
E-mail: walker@cs.grinnell.edu

Office hours are posted weekly on the bulletin board outside Science 2420, with additional hours possible by appointment. You may reserve a half hour meeting by signing up on the weekly schedule, but please sign up at least a day in advance.


John Mitchell, Concepts in Programming Languages, Cambridge University Press, 2003.
The author is maintaining a supporting web site at http://theory.stanford.edu/people/jcm/books.html

David Gries, The Science of Programming, Springer-Verlag, New York, 1981.
This is the classical text on the subject of program verification.

Students may find the following references useful:

The schedule

While the schedule for this course is expected to evolve, a Tentative Class Schedule is available in .dvi , postscript , and pdf formats.

As this schedule suggests, each day in a typical week for this course has a different theme:

Note: If you are logged into the departmental network and want a copy printed, click duerer to have a copy printed on the printer duerer, and click pacioli to have a copy printed on the printer pacioli .

Course Work

Course Work will involve a combination of the following activities.


Late Penalty: Work is due at the start of class on the date specified in the assignment. A penalty of 33 1/3 % per class meeting will be assessed on any work turned in late, even work submitted at the end of a class. Thus, work turned in 4 days late will be weighted -33 1/3 %; since a negative score reduces a semester total, it is better not to turn the work in at all.
Exception: Deadlines for programming problems and laboratory exercises are automatically extended at least one class day if MathLAN is down for an unscheduled period of 3 or more hours during the week preceding the assignment due date. (In such cases, however, deadlines for written assignments are not extended.)

Absolute Deadline: All homework must be turned in by Friday, May 7 at 5:00 pm.
Don't even think about asking for an extension!


The work in this course is split between individual and group work. The rules for collaboration on written assignments will be given for each assignment.


The final grade will be based upon each student's demonstration of his or her understanding of and facility in programming, not on the performance of the class as a whole nor on a strict percentile basis. While some flexibility may be possible in determining a final semester grade, the following percentages provide a first approximation for the relative weights attached to various activities in this course.

Assignments from Mitchell's Text: 20% Assignments from Gries' Text: 40% Group Work: 20% Exam: 20%

This document is available on the World Wide Web as


created December 2, 2003
last revised May 3, 2004
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.