Computer Science Fundamentals (CS153 2003S)

Front Door

Welcome to the Spring 2003 session of Grinnell College's CSC 153, Computer Science Fundamentals, which is described relatively briefly in the official blurb. My own take on this course is that we'll be starting to develop your knowledge of Computer Science and Algorithmic Problem Solving. We will be using Scheme and Java as our development languages. As in all Grinnell classes, we'll also be working on general thinking and work skills.

In an attempt to provide up-to-date information, and to spare a few trees, I am making this as much of a paperless course as I can. Hence, materials will be in a course web. You may want to read the basic instructions for using this course web.

Warning! Computers are sentient, stupid, and malicious. When things go wrong, don't blame yourself. Ask me or a TA for help.


Meets: MTuWF 10:00-10:50

Instructor: Samuel A. Rebelsky (, Science 2427. Office hours: MTuWF 9:00-9:50, MTuF 11:00-11:50. I also tend to follow an open door policy: Feel free to stop by when my door is open or to make an appointment for another time. Check my schedule for more details.

Teaching Assistant: To Be Determined.

Grading (subject to change): Class participation: 10%; Homework and Lab write-ups: 30% (3-5 graded out of 6-10 total); Exams: 60% (4 graded exams).

The final examination for this course is optional. It can be used as a makeup for one examination. It is likely that I will give at least one make-up homework assignment.

Late Assignments: My experience shows that students who turn in work late learn significantly less than students who turn material in on time. (I'm not sure about cause and effect.) Hence, I strongly discourage late assignments. Unless prior arrangements have been made, assignments are due within five minutes of the start of class. After that they are considered late. Late assignments are penalized one letter grade per day late (or fraction thereof).

Because I am concerned about your health and well being, I will waive the late penalty if (1) you start the assignment at least three days in advance of the due date; (2) you get to sleep by midnight the night before the assignment is due; (3) you expend a reasonable amount of effort to complete the assignment by midnight; (4) you turn in a form attesting to facts (1), (2), and 3 when the assignment is due; and (5) you talk to me ASAP about any problems you've had on the assignment.

Labs: The first half of Computer science 153 is taught in a collaborative workshop style. Each day, you'll work on laboratory problems with other students in the class. We may start each day with a short lecture/discussion and end with a reflective discussion. The second half is still somewhat up in the air.

Extra Credit: Throughout the term, I may suggest forms of extra credit.

Tutoring: The Math Lab makes tutors for 153 available at regularly scheduled times. As soon as tutors have been scheduled, I'll let you know what those times are (and post them on this page).

Required Books

Bailey, Duane (2003). Java Structures: Data Structures in Java for the Principled Programmer, 2nd Edition. Boston, MA: McGraw-Hill. The primary data structures and algorithms text for the course, intended primarily for the second half of the course.

Rebelsky, Samuel (2000). Experiments in Java. Reading, MA: Addison Wesley Longman. We will use this manual for the first few weeks of the study of Java. For Grinnell students, it is temporarily available online at . I receive no royalties, but I do encourage you to purchase it.

Rebelsky, Samuel (2003). The CS153 2003S Course Web. The hypertext that you are currently reading. Many of these materials (particularly those under Readings and Labs are required. You should make it a point to load the page of the day at the beginning of each class to check announcements and such.

Optional Scheme Readings

Kelsey, Richard, Clinger, William, and Rees, Jonathan, eds. (1998). Revised5 Report on the Algorithmic Language Scheme. February 20, 1998. The concise and complete definition of the Scheme programming language. You won't need to understand all of it, but you'll find it helpful to keep it by your side.

Rice University Programming Languages Team (1999). PLT DrScheme: Programming Environment Manual. The guide to the Scheme development environment we'll be using.

Springer, George and Friedman, Daniel P. (1989). Scheme and the Art of Programming. Cambridge, MA: MIT Press. The textbook that we formerly used to use in the class.

Optional Java Readings

Eckel, Bruce (2003). Thinking in Java, 3rd Edition. An excellent supplementary Java text for those of you for whom the class notes and the Bailey book are not enough. If you can do without a printed copy, it's also available for free online at



Thursday, 17 January 2003 [Samuel A. Rebelsky]

Monday, 20 January 2003 [Samuel A. Rebelsky]


Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Wed May 7 09:43:35 2003.
The source to the document was last modified on Wed May 7 09:43:30 2003.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Samuel A. Rebelsky,