

A labbased introduction to basic ideas of computer science, including recursion, abstraction, state, informationhiding, and the design and analysis of algorithms. Includes introductory programming in a highlevel, functional language. Prerequisites: None.This means that you'll be introduced to the basics of computation, learning how to adequately describe and decompose problems of a computational nature so that you can effectively tell a computer the steps it should take to solve the problem. We will study some beginning concepts that make this process possible, easier to undertake, and often elegant. Our major objectives for this course include:
Dybvig, Kent R., The Scheme Programming Language (Third Edition), MIT Press, 2003.
http://www.scheme.com/tspl3
An effective reference and guide to learning the Scheme language.
Felleisen, Matthias, Findler, Robert Bruce, Flatt, Matthew and Krishnamurthi, Shriram, How to Design Programs, MIT Press 2001.
http://www.htdp.org
A wonderful guide, particularly for later topics in the course like higherorder programming, refactoring, and recursion.
Kelsey, Richard, Clinger, William, and Rees, Jonathan, editors, Revised^{5} Report on the Algorithmic Language Scheme. 1998.
http://www.cs.grinnell.edu/~weinman/courses/CSC151/doc/r5rs.pdf
The complete, concise definition of the Scheme programming language version we are using.
Week  Topic  Week  Topic  
1  Introduction  8  Geometric art  
2  Numbers, procedures, graphics  9  Characters, vectors, data structures  
3  Design, images, color  10  Analysis, testing, association lists  
4  Documentation and iteration  11  Higherorder procedures, search  
5  Booleans and conditionals  12  Sorting  
6  Lists and recursion  13  Objects  
7  Preconditions, local procedures  14  Files, summary, review 
PLUS  (105%)  Exhibits exceptional insight, creativity, and/or craftsmanship 
CHECK  (90%)  Meets the requirements of the assignment. 
MINUS  (70%)  Does not meet the requirements of the assignment. 
Project Assigned  Wednesday 9 November 
Detailed Proposal  Tuesday 15 November 
Complete Submission  Tuesday 22 November 
Exam 1  Tuesday 20 September 
Exam 2  Tuesday 1 November 
Exam 3  Monday 5 December 
Final Exam  Wednesday 14 December (9 am) 
Participation  10% 
Homework  20% 
Project  10% 
Quizzes  20% 
Exams  30% 
Labs  10% 
"[Person X] helped me to do [thing Y] by [explaining Z]."