Fundamentals of computer science I
Instructor Textbooks Course Work Supplemental Problems Schedule ( .dvi format / postscript )
Labs Deadlines Collaboration Grading User-Consultants

Computer Science 151 has at least four major goals:

  1. To provide a general introduction to the fundamental ideas of computer science: algorithms, data structures, and abstraction,
  2. To present problem-solving from a functional programming perspective,
  3. To introduce computer programming (algorithm design, documentation, coding, testing, and debugging) in a high-level programming language, Scheme (a dialect of LISP, the dominant language used for artificial intelligence research in the United States), and
  4. To illustrate important application areas of computing, such as computer simulation, structure of expert system programs, processing lab and file data, and the use of the World Wide Web.

Problem-Solving Perspectives: Computer science recognizes four problem-solving approaches as being fundamental to work in the discipline. Each approach involves a distinct way of thinking, and each is supported by a range of computer languages. These paradigms may be outlined as follows:

Since different approaches have advantages for different problems, people involved with computing should be comfortable with several of these paradigms. For this reason, CS 151 introduces one approach (functional programming with Scheme) and touches on another approach (imperative programming). CS 152 then builds on this experience by considering another approach (the object-oriented paradigm with Java) and continues a discussion of the imperative paradigm. Together, CS 151 and CS 152 provide students with multiple views of problem solving and with experience with two important programming languages.

Instructor

151.01 (9:00 Section) 151.02 (10:00 Section)
Henry M. Walker Clif Flynt
Office: Science 2420 Office: Science 2407
Telephone: extension 4208 Telephone: extension 4203
E-mail: walker@cs.grinnell.edu
E-mail: flynt@cs.grinnell.edu

Office hours are posted weekly on the bulletin board outside our offices.
Additional hours can be scheduled by appointment.
If you wish, you may reserve a half hour meeting by signing up on the weekly schedule.

Textbooks

Springer, George, and Friedman, Daniel P. Scheme and the art of programming. Cambridge, Massachusetts: The MIT Press, 1994.

Clinger, William, Rees, Jonathan, et al. Revised (5) report on the algorithmic language Scheme. December 5, 1998.

Chez Scheme version 5 system manual. Bloomington, Indiana: Cadence Research Systems, 1994.

The schedule

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

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

Course Work will involve a combination of the following activities.

Deadlines

Deadlines are shown on the Tentative Class Schedule , and work is due at the start of each class specified. A penalty of 25% per class meeting will be assessed for any assignment turned in late, even work submitted at the end of a class. However, an extension of at least one class period is automatically granted if the HP network is down for an unscheduled period for a period of three or more hours during the week preceding the assignment. Normally, a program or laboratory write-up is due every third class meeting.

Absolute Deadline: All homework must be turned in by Thursday, May 13 at 5:00 pm;
laboratory reports or programs received after that time will not be counted in the grading of the course.

Collaboration

The work in this course is split between individual and group work. Students are encouraged to work together on all laboratory activities. However, since a primary goal of the course is to enable students to develop their own programs, collaboration is not allowed on homework assignments, supplemental problems, or tests. In addition, students should note the department's policy regarding the role of user-consultants for Computer Science 151 .

Grading

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.

Lab. Write-ups: 30% Programs: 20% Hour Tests: 30% Final Examination: 20%

This document is available on the World Wide Web as

     http://www.math.grin.edu/~walker/courses/151.sp99/index.html

created January 9, 1997
last revised January 21, 1999
Henry Walker (walker@math.grin.edu)