Functional Problem Solving

CSC 151
Grinnell College
Spring 2012
MTuWF 8-8:50, SCI 3813
Instructor: Janet Davis (office hours posted outside my door or by appointment; contact me)
Mentor: Kate Ingersoll '13 (mentor session Sat 2 p.m. until further notice)
Grader: Sarah Henney '13
Computer science tutors will be available in SCI 3813/3815 SMTWTh 7 - 11 p.m.


About this course

Welcome to CSC 151! The official course description:

A lab-based introduction to basic ideas of computer science, including recursion, abstraction, scope and binding, modularity, the design and analysis of algorithms, and the fundamentals of programming in a high-level, functional language. Includes formal laboratory work. Prerequisite: none. STAFF.

A course very much like this one is the reason that I became a computer scientist.  I'm very excited to be teaching this course, and I hope to share some of that excitement with you.  My goal for this class is that you will begin to learn how computer scientists solve problems. We will be using Scheme as our first programming language; if you have already programmed before, chances are excellent you will still find new ideas in Scheme.

This course focuses on the application domain of media computation: using computers to manipulate digital media, particularly images. This is a lot of fun! The project will give you an opportunity to explore your own ideas, and I also encourage you to explore further outside of class.


Our major objectives for this course include:

How to be successful in this class

Experience shows that CSC 151 exercises different parts of your brain than other courses (even math and science courses). Be patient with yourself. Expect some difficult times, but have confidence that you can work through them and that you'll come out of the course with new skills and knowledge.

However, like many other skills, programming is a skill that improves the more you exercise it.  Plan to practice, practice, practice.

Like learning math or a foreign language, learning in this course is cumulative: New ideas often build on ideas from earlier in the course. Make sure you are learning key ideas. You should complete the labs after class and review the exercises to make sure you understand the key insights behind each solution. The weekly quizzes are also intended to check that everyone is on the same page. If you feel you've missed something important, please come talk with me ASAP.

Computers have no common sense or compassion. They are complex, and sometimes they do things we don't expect. If things go wrong in ways you don't understand, don't blame yourself. Ask for help from me, the class mentor, or any CS tutor.

Janet Davis (

Created January 19, 2007
Last revised April 25, 2012
With thanks to previous instructors for this course