CS151.01 2009F Functional Problem Solving

Front Door

This handout is also available in PDF.


Welcome to one of the Fall 2009 sessions of Grinnell College's CSC 151, Functional Problem Solving, 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 as our development language, which gives us the abililty to use functional approaches (as well as imperative and object-oriented approaches). As in all Grinnell classes, we'll also be working on general thinking and work skills.

Starting two years ago, we developed a new approach to CSC151. In both sections of the course, we will be emphasizing media computation - the application of algorithmic problem solving techniques to media. We will particularly emphasize algorithms for creating and manipulating images.

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. If you are puzzled by the organization of the Course Web, you may want to read the basic instructions for using this course web. If you find that you want paper copies of pages, please read the notes on printing copies. If you find that you are regularly printing pages, let me know and I can provide them for you.

Important Warnings

Warning! Experience shows that CSC151 exercises different parts of your brain than other courses, even than math courses. In general, such exercise is a good thing - one of the key points of a liberal arts education is that it exercises different parts of your brain. However, it may take a bit of time to get these new parts of your brain into shape. Expect a few difficult times, but have confidence that you can get through them and that you'll come out of the course with much more knowledge.

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

Warning! We are using some cutting-edge software, which means that things will occasionally crash for no good reason.


Meets: MTuWF 10:00-10:50 a.m., Science 3813

Instructor: Samuel A. Rebelsky, Science 3824. 269-4410 (office). 236-7445 (home). Office hours: MTuWF 11-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.

Class Mentor: Russel Steinbach. Office hours TBD.

Grading (subject to change):

The final examination for this course is optional. It can be used as a makeup for one examination. You may take the exam either at 9:00 a.m. on Friday, December 18 or at 2:00 p.m. on Wednesday, December 16.

I will drop the grade on one quiz (the quiz with the lowest grade).

More information on grading can be found in the grading policies page.

Labs: Computer science 151 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.

Extra Credit: I will often offer 1/2 point of extra credit for attending a particular talk (e.g., a computer science talk or College convocation) or for supporting your classmates in their public endeavors (e.g., attending a concert or a dance recital). Each category is capped at 1.5 points. You will report on this extra credit at the end of the semester, using a prepared checklist.

Tutoring: The CS Lab makes tutors for 151 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).

Good-Faith Grade Guarantee: Because I realize that computer science does not click will all students, I reward effort as well as outcome. Hence, students who make a good faith effort in this class will pass the class, with at least a C+. A good-faith effort includes missing no more than two classes, turning in every homework assignment, and spending the requisite time on each examination.

Class Software: For this course, we will be using a locally-extended version of The GIMP. Because we have extended the GIMP locally, you cannot just use any version of the GIMP. We provide instructions for remotely accessing the extended GIMP while on campus as well as Some versions which should run on newer versions of Macintosh OS X.

Printing Pages: Most of these pages are designed for viewing onscreen. If you'd like to print them, you may want to use PDF versions, which are designed for paper. Many pages have links directly to the PDF version. If there isn't such a link, simply replace the html at the end of the URL with pdf.

If you do decide to print, you should also consider printing the document double-sided and two-up (that is, two pages side-by-side on one physical page) so as to conserve paper. When I distribute documents, I will do my best to distribute them in this form.

Optional Books and Other 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 last concise version of the Scheme programming language. You won't need to understand all of it, but you may find it helpful.

Dybvig, R. Kent. The Scheme Programming Language, Fourth Edition. Cambridge, MA: The MIT Press. Available online at http://www.scheme.com/tspl4/. A longer and more readable reference on the Scheme programming language.

Rebelsky, Samuel (2009). The CS151.01 2009F 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.

Weinman, Jerod (2009). The CSC151.02 2009F Course Web. The course web for the other section of this class.

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 Fri Dec 11 09:38:35 2009.
The source to the document was last modified on Thu Aug 27 11:34:29 2009.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2009F/index.html.

Valid HTML 4.01 ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky, rebelsky@grinnell.edu

Copyright © 2007-9 Janet Davis, Matthew Kluber, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials copyright by John David Stone and Henry Walker and used by permission.) This material is based upon work partially supported by the National Science Foundation under Grant No. CCLI-0633090. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.