Course: COMP 210
Class Info: DH 1064. MWF 10:00am–10:50am
Lab times: Symonds II. W 2:30–3:50pm, W 7:00–8:20pm, Th 2:30–3:50pm (Please email John to sign-up.)
Instructors: Walid Taha and John Greiner
Staff: Dan Sandler; Dan Smith; April Goldman; Dan Vanderkam; Eric Cheng; Gregory Malecha; Amanda Cruess
Office Hours:
Mon Wed Thu Fri Sat Sun
1:30-2:30pm 1-3pm 11am-1pm 1:30-2:30pm 12-2pm 2-4pm 4-6pm 2-4pm 4-6pm 7-9pm
DH 3118
DH 3103
D. Smith
DH 3109
DH 3118
D. Sandler
DH 3006
DH 3108
D. Vanderkam
Mailing list: Please email questions or comments to If your message cannot possibly be of interst to others, and you want to reach only the teaching staff, email the same address but "discussion" replaced by "teachers".
Quiz: Is published every day after class on WebCT, and needs to be taken by 8:00 pm. It's closed book, closed DrScheme, and closed notes. No collaboration is allowed. You are also supposed to take it before you start studying after the lecture.
DrScheme: Please download and use Version 209

Hot From The Press:

Bill Gates on Supercomputing
Quick links: Overview Grading Resources Texts Accomodations


The course will follow closely the required textbook (see below). Lectures will guide you through some of the main ideas in the material, but it is essential that you do all the reading to fully understand the material. Homeworks are only a mechanism for us to give you feedback. You are expected to work through the rest of the problems in the book on your own.

#7 Date Day Topic (and slides) Assignment (Due) Lab work
1 08/22/2005 M Students, Teachers, and Computers HW 0 (W 08/24)  
2 08/24/2005 W Numbers, Expressions, Simple Programs (slides) HW 1 (M 08/29) Getting Started: DrScheme, Design Recipe
3 08/26/2005 F Programs are Function Plus Variable Definitions (slides)    
4 08/29/2005 M Conditional Expressions and Functions (slides) HW 2 (W 09/07)  
5 08/31/2005 W Symbolic Information (slides)   Simple data and cond
6 09/02/2005 F Compound Data, Part 1: Structures (slides)    
-- 09/05/2005 M Labor Day Recess : No Class
7 09/07/2005 W The Varieties of Data (slides) HW 3 (M 09/12) Structures
8 09/09/2005 F Syntax and Semantics (slides)    
9 09/12/2005 M Compound Data, Part 2: Lists (slides) HW 4 (M 09/19)  
10 09/14/2005 W More on Processing Lists (slides)   Lists
11 09/16/2005 F Natural Numbers (slides)    
12 09/19/2005 M Composing Functions, Revisited Again (slides) HW 5 (W 09/28)  
13 09/21/2005 W More Self-referential Data Definitions (slides)   Natural Numbers, Trees
-- 09/23/2005 F Hurricane Rita : No Class
-- 09/26/2005 M Hurricane Rita : No Class
14 09/28/2005 W Mutually Referential Data Definitions (slides) Guest Lecturer: Dan Sandler   Mutually Recursive Data Definition
15 09/30/2005 F First Exam (in class)    
16 10/03/2005 M Development through Iterative Refinement (slides) HW 6 (W 10/12)  
17 10/05/2005 W Exam 1 Solution
  Arithmetic Imprecision
18 10/07/2005 F Processing Two Complex Pieces of Data (slides)    
-- 10/10/2005 M Midterm Recess : No Class
19 10/12/2005 W Local Definitions and Lexical Scope (slides)   local and Scope
20 10/14/2005 F Similarities in Definitions (slides)    
21 10/17/2005 M Functions are Values (slides) HW 7 (M 10/24)  
22 10/19/2005 W Designing Abstractions from Examples (slides)   Abstract Functions
23 10/21/2005 F Designing Abstractions with First-Class Functions (slides)    
24 10/24/2005 M Mathematical Examples (slides) HW 8 (M 10/31)  
25 10/26/2005 W Defining Functions on the Fly   Consuming and Producing Functions
26 10/28/2005 F A New Form of Recursion (slides, cannon simulator) Guest Lecturer: Dan Sandler    
27 10/31/2005 M Designing Algorithms. Take-home exam 2 handed out. HW 9 (M 11/07)  
28 11/02/2005 W Variations on a Theme   Generative Recursion & Variations on a Theme
29 11/04/2005 F Algorithms that Backtrack (slides) Guest Lecturer: Dan Sandler    
30 11/07/2005 M The Cost of Computing and Vectors (slides) Exam 2 due before start of lecture. HW 10 (M 11/14)
31 11/09/2005 W Accumulators: HTDP chap. 30, 31, 32 (slides)   Accumulators on Trees; Vectors
32 11/11/2005 F Memory for Functions, Assignment to Variables    
33 11/14/2005 M Designing Functions with Memory, Examples of Memory Usage HW 11 (M 11/21)  
34 11/16/2005 W The Final Syntax and Semantics   set!
35 11/18/2005 F Encapsulation Stealth Lecturer: Dr. John Greiner    
36 11/21/2005 M Mutable Structures (slides) HW 12 (M 11/28)  
37 11/23/2005 W Designing Functions that Change Structures (slides)    
-- 11/25/2005 F Thanksgiving Recess : No Class
38 11/28/2005 M Equality (slides) HW 13 (F 12/02)
39 11/30/2005 W Changing Structures, Vectors, and Objects   Destructive operations on lists and vectors
40 12/02/2005 F Epilogue Exam 3  

Grades & Honor Code Policy

Grading will be broken down approximately into homeworks (worth 40%), quizzes (worth 5%), exams (10% for first exam, and 20% for the second exam and the final), and a final project (worth 5%). It is important that your performance in each components is consistent.

We strongly encourage students to work with partners, i.e., groups of up to 2 people. You may change partners during the semester. Partners should work together on all aspects of the homework -- all students are expected to contribute equally. You and your partner should hand in exactly one solution, with both of your names listed at the top of the file.

You will hand in assignments via an electronic dropbox before the beginning of class on the day it is due (usually Mondays). Graded work will be returned via email. Late homework will not be accepted without prior arrangement or exceptional cause. "I have a lot of work in other classes" is not sufficient grounds for an exception. Unless otherwise specified in the assignment, please put all your solution in one single .scm file. Please do not submit a zip file or a doc file. You are also expected to follow these guidelines and write code in good style.

Homeworks help you check your understanding of the material and prepare you for the exams. You are encouraged to discuss the homework problems with the instructors and staff. Help from other students, including COMP 210 graduates, is also encouraged (but should be cited, naturally), although that does not include giving or receiving complete answers. All homework partners are responsible for knowing all the submitted material. If you fail to understand the homework solutions, you won't succeed on the exams.

Exams test your individual understanding and knowledge of the material. Collaboration during exams is not tolerated.



Required Text: How to Design Programs, Felleisen et al. QA76.6 .H697 2001 (Online)
More on CS: The New Turing Omnibus, A. K. Dewdney QA76 .D448 1993
Algorithmics: The Spirit of Computing, David Harel QA76.9 .A43 H37 2004
Computers Ltd.: What They Really Can't Do, David Harel QA76.5 .H3575 2000
Great Ideas in Computer Science, Alan W. Biermann QA76 .B495 1997
Computer Science: An Overview, J. Glenn Brookshear QA76 .B743 1997
Gödel, Escher, Bach: An Eternal Golden Braid, Douglas Hofstadter QA9.8 .H63 1980
Metamagical Themas, Douglas Hofstadter Q335 .H63 1985
If you liked Scheme, you'll love these resources:

Scheme for the Complete Idiom, Ian Barland (Online)
The Little Schemer, Friedman & Felleisen QA76.73 .S34 F75 1996
The Seasoned Schemer, Friedman & Felleisen QA76.73 .S34 F77 1996
Developing Applications with Objective Caml, Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano  
The Haskell School of Expression: Learning Functional Programming Through Multimedia, Paul Hudak QA76.62 H83 2000

Accomodations for Students with Special Needs

Students with disabilities are encouraged to contact me during the first two weeks of class regarding any special needs. Students with disabilities should also contact Disabled Student Services in the Ley Student Center and the Rice Disability Support Services.