ftp.cs.grinnell.edu.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 semester, the class will revolve around media computation: using computers to manipulate digital media, particularly images. In my experience, this has been a lot of fun! I encourage you to go beyond what you learn in class to explore your own ideas.
The software we will be using in this class, DrFu, was developed in part by your fearless mentors, Max Kuipers and Emily Jacobson, two summers ago. Although it is a huge improvement over what we had before, it still has some kinks. Bear with us.
Experience shows that CSC 151
exercises different
parts of your brain than other courses (even math and science courses).
Expect
some difficult times, but have confidence that you can work through
them
and that you'll come out of the course with much more
knowledge.
Like
learning a foreign language, learning in this course is
cumulative: New ideas often build on ideas from earlier in the course.
You should complete the labs after class and review the exercises to
make sure you understand them. The weekly quizzes are also intended
to check that everyone is on the same page. If you feel like
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. When things go horribly wrong, don't blame yourself. Ask me or a tutor for help.
Kelsey, Richard, Clinger, William, and Rees, Jonathan, eds. (1998). Revised5 Report on the Algorithmic Language Scheme [HTML] [PDF]. 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.
Optional: Springer, George and Friedman, Daniel P. (1989). Scheme and the Art of Programming. Cambridge, MA: MIT Press. The textbook that was formerly used in the class.
Optional: Felleisen, Matthias, Findler, Robert Bruce, Flatt, Matthew, and Krishnamurthi, Shriram (2001). How to Design Programs. Cambridge, MA: MIT Press. Another excellent textbook. Available online at http://www.htdp.org/
Optional: Weinman, Jerod. CSC 151.02: Functional Problem Solving with Scheme. The course web for the other section of this class.
Janet Davis (davisjan@cs.grinnell.edu)
Created January 19, 2007