Instructor | Textbooks | Schedule | Course Work | Assignments |
Deadlines | Collaboration | Grading |
Introduction: This course has two running themes: the design and implemention of programming languages and the use of formalism with a programming language to construct correct programs.
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. The course will examine these aspects of programming languages on Wednesday and Friday each week.
To utilize programming languages effectively, programmers must be able to write clean, clear, and correct code. Formal reasoning about programs can be very helpful in this process. Specifically, program verification involves two basic goals. First, techniques are developed in order to prove programs are correct, using formal mathematical methods. Second, the process of writing proofs is combined with the developing programs, so that software development involves the simulataneous production of computer programs and the proofs that they are correct. The course will explore program verification on Monday each week.
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, 2000.
A manuscript version of this text will be distributed in class.
The author is maintaining a supporting web site at
http://www.stanford.edu/class/cs242/
David Gries, The Science of Programming, Springer-Verlag, New York,
1981.
This is the classical text on the subject of program verification.
While the schedule for this course is expected to evolve, a Tentative Class Schedule is available postscript format.
Also, 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 will involve a combination of the following activities.
Written Assignments Since the
learning of concepts and technical details requires hands-on experience,
homework will be assigned regularly.
Programs: Several programming assignments will be due
throughout the semester.
Tests: Two tests are scheduled during the semester. A take-home
test will be distributed Monday, March 6, and due on Wednesday, March 15.
The second test will either be an in-class hour test on Friday, April 28,
or a take-home test distributed on Wednesday, April 26, and due on
Wednesday, May 3.
Exam: Following the College's published schedule, the final
examination for this class is scheduled for Friday, May 19 at 9:00am.
As an alternative, the class will discuss the possibility of an oral final
examination.
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.
Absolute Deadline: All homework must be turned in
by Friday, May 12 at 5:00 pm.
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. Collaboration is not allowed on tests or the final exam.
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 approximate the relative weights attached to various
activities in this course.
Exception: Deadlines for programming problems and laboratory
exercises are automatically extended at least one class day if the HP
network 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.)
Assignments from Mitchell's Text: | 20% | Assignments from Gries' Text: | 40% | Tests: | 20% | Final Exam: | 20% |
This document is available on the World Wide Web as
http://www.walker.cs.grinnell.edu/courses/302.sp00/index.html