COMP 210F06: Principles of Computing & Programming (Fall 2006)
Office Hours
| MON | TUE | WED | THU | FRI | SAT | SUN |
| 11:00-11:55 am | 4:00-5:30 pm | 11:00-11:55 am | 1:00-2:00 pm | 12:45-2:15 pm | 11:00-11:55 am | 2:00-4:00 pm | 2:00-4:00 pm | 9:00-11:00 pm |
| Walid | Matt | Walid | Nathan | Dan | Walid | Jen | Chris | Seth |
| DH 3103 | Hanzen Upper Commons | DH 3103 | DH 3063 | DH 3109 | DH 3103 | Symonds II | Symonds II | Symonds II |
Introduction
This course is an introduction to key concepts in programming and
computing. The focus is on systematic methods for understanding
problems and devising computations that solve these problems
correctly.
No prior programming experience is assumed, so non-majors are
welcome in the course. We expect students to be comfortable
with high-school math. Success in the course requires curiosity
about the intellectual core of computer science, self-discipline,
and an interest in working with other people on increasingly larger
projects.
Topics covered include functional programming, design patterns/recipes,
data structures, procedural abstraction, reduction rules, use of control
and state, and basic concepts in object-oriented programming. Students will
learn practical skills required to write and modify programs. Labs and
assignments use the Scheme programming language.
Here is
a nice article about
the basic approach taken in this course.
Required Text: How to Design Programs, Felleisen et al. QA76.6 .H697 2001 (Online).
DrScheme: Please download and use
Version 352.
To avoid compatability problems, please make sure you use this exact version.
Course Schedule
Please note that any future dates may change, and these are only guidelines.
Also, future homeworks and slides contain materials from previous years. The new material will be provided before the corresponding class.
| # | Day | Date | Topic | Reading | Lectures | Problems | Due | Lab |
| 1 | Mon | Aug 28 | Introduction | | | HW 0 | W Aug 28 | |
| 2 | Wed | Aug 30 | Numbers, expressions, variables, function definitions, applications, and errors | Ch 1+2, Ch 2 Notes | L 2 | HW 1 (Solutions) | W Sep 6 | Getting Started: DrScheme, Design Recipe |
| 3 | Fri | Sep 1 | Programs are Function plus Variable Definitions, Conditional Expressions and Functions, and Symbolic Data | Ch 3, Ch 3 Notes | L 3 | | | |
| 3+ | Mon | Sep 4 | No class (Labor Day Recess) | - | - | - | - | - |
| 4 | Wed | Sep 6 | Effects and Structures | Ch 4, Ch 4 Notes, Ch 5, Ch 5 Notes, Ch 6, Ch 6 Notes | L 4 | HW 2 (Solutions) | M Sep 11 | Simple data and cond , Structures and Varieties |
| 5 | Fri | Sep 8 | Varieties of Data | Ch 7 | L 5 | | | |
| 6 | Mon | Sep 11 | Syntax and Semantics of Beginner Scheme | Ch 8, Ch 8 Notes | L 6 | HW 3 (Solutions) | M Sep 18 |
| 7 | Wed | Sep 13 | Lists, Recursive Types, and Functions that Process them | Ch 9, Ch 9 Notes | L 7 | | | Lists |
| 8 | Fri | Sep 15 | More on Processing Lists | Ch 10 | L 8 | | | |
| 9 | Mon | Sep 18 | Natural Numbers are a recursively-defineable subset of numbers | Ch 11 | L 9 | HW 4 (Solutions) | M Sep 25 | |
| 10 | Wed | Sep 20 | Composing Functions, Revisited | Ch 12, Ch 13, Ch 13 Notes | L 10 | | | Natural Numbers and Trees Lab |
| 11 | Fri | Sep 22 | More Self-referential Data Definitions | Ch 14 | L 11 | | | |
| 12 | Mon | Sep 25 | Mutually Referential Data Definitions | Ch 15 | L 12 | No HW | | |
| 12+ | Wed | Sep 27 | First Exam (in class) | Exam 1 Solution | | | | Mutually Recursive Data Definitions Lab |
| 13 | Fri | Sep 29 | Development through Iterative Refinement | Ch 16 | | | | |
| 13+ | Mon | Oct 2 | Exam 1 Solution | | | HW 5 (Solutions) | M Oct 9 | |
| 14 | Wed | Oct 4 | Processing Two Complex Pieces of Data | Ch 17 | L 14 | | | local and Scope Lab |
| 15 | Fri | Oct 6 | Local definitions and Lexical Scope | Ch 18, Ch 18 Notes | L 15 | | | |
| 16 | Mon | Oct 9 | Abstraction in functions and types | Ch 19 | L 16 | HW 6 (Solutions) | W Oct 18 | |
| 17 | Wed | Oct 11 | Functions are Values | Ch 20 | L 17 | | | Abstract Functions Lab |
| 18 | Fri | Oct 13 | Designing Abstractions from Examples | Ch 21 | L 18 | | | |
| 18+ | Mon | Oct 16 | No class (Midterm Recess) | - | - | - | - | - |
| 19 | Wed | Oct 18 | Designing Abstractions with First-Class Functions | Ch 22 | Old L 23 | No HW | | No lab this week |
| 20 | Fri | Oct 20 | Mathematical Examples | Ch 23 | Old L 24 | | | |
| 21* | Mon | Oct 23 | Defining Functions on the Fly (Guest lecture: Dan Smith) | Ch 24, Ch 24 Notes | L 21 | | | |
| 22* | Wed | Oct 25 | A New Form of Recursion (Guest lecture: Seth Fogarty) | Ch 25 | L 22 , Extras | HW 7 (Solutions) | M Oct 30 | Consuming and Producing Functions Lab |
| 23* | Fri | Oct 27 | Designing Algorithms (Guest lecture: Seth Fogarty) | Ch 26+27 | L 23, Examples | | | |
| 24 | Mon | Oct 30 | Variations on a Theme | Ch 27 | L 24 | HW 8 (Solutions) | M Nov 6 | |
| 25 | Wed | Nov 1 | Algorithms that Backtrack | Ch 28 | L 25 | | | Generative Recursion Lab |
| 26 | Fri | Nov 3 | Vectors and the Cost of Computing | Ch 29 | L 26 | | | |
| 27 | Mon | Nov 6 | Accumulators | Ch 30-31 | L 27 | HW 9 (Solutions) | M Nov 20 | |
| 28 | Wed | Nov 8 | Memory for Functions and assignment to Variables | Ch 34-35, Part VII Notes | L 28 | | | Accumulators on Trees & Vectors Lab |
| 29 | Fri | Nov 10 | Designing Functions with Memory and examples on Memory Usage | Ch 36,37 | L 29 | | | |
| 30 | Mon | Nov 13 | The Final Syntax and Semantics | Ch 38 | L 30 | | | |
| 30+ | Wed | Nov 15 | Second Exam (in class). Covers up to lecture 25. | | | | | set! Lab |
| 31 | Fri | Nov 17 | Encapsulation | Ch 39 | L 31 | | | |
| 32 | Mon | Nov 20 | Mutable Structures | Ch 40 | L 32 | HW 10 (Solutions) | W Nov 29 | |
| 33 | Wed | Nov 22 | Designing Functions that Change Structures | Ch 41 | L 33 | | | No lab this week |
| 33+ | Fri | Nov 24 | No class (Thanksgiving Recess) | - | - | - | - | - |
| 34 | Mon | Nov 27 | Cyclic Queues | | | | | |
| 35 | Wed | Nov 29 | Cyclic Queues | | | HW 11 (Solutions) | F Dec 1 | Destructive operations on lists and vectors Lab |
| 36 | Fri | Dec 1 | Equality | Ch 42, 43 | L 36 | HW 12 (Solutions) | M Dec 4 | | |
| 37 | Mon | Dec 4 | Per popular demand: Mathematical Logic | | L 37 | | | |
| 38 | Wed | Dec 6 | Review | Ch 54 | | | | Arithmetic Imprecision Lab |
| 39 | Fri | Dec 8 | Review | Ch 54 | L 39, Old Final | - | | |
| | Fri | Dec 15 | Final Exam (9:00 a.m. to 12:00 p.m.) | | L 40, Vector Reduction Rules | | | |
Grading, Honor Code Policy, Processes and Procedures
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 be consistent.
Exams test your individual understanding and knowledge of the
material. Collaboration during exams is not tolerated.
Mailing Lists:
- comp210F06-discussion-l@mailman.rice.edu (subscribe here):
- This is where important announcments related to the class will be posted.
- Students are required to sign up to this list.
- You may use this list for open discussions relating to the course. Postings are expected to abide by standard Netiquette.
- comp210F06-teachers-l@mailman.rice.edu:
- Any questions relating to the course can be sent to this list.
- Specific questions about homework problems and grading can be directed here.
Questions
If you have a question about homework -- you're not sure what is expected for a given problem, you haven't received feedback from a previous assignment, or you don't understand or agree with the assessment of your work, for example -- you can raise the question with a TA in lab or on the
teachers mailing list (questions of general interest may alternately be raised on the
discussion mailing list). If, after doing so, you don't feel that your concerns have been addressed, you may wish to contact Dr. Taha directly.
When addressing concerns about your grade, keep in mind that while you should certainly not be marked off for a correct solution, the exact amount of partial credit to award where your solution is
not correct is inherently subjective. In this case, try to defer to your grader's judgement.
Homeworks:
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 210F06 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.
Homeworks will generally be handed out on Mondays, and will be due before class
the following Monday.
You are expected to work in groups of two.
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.
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.
We recommend that you review the
homework guide as you develop your solutions. Review the
submission checklist when you turn in your homework. Your work will be graded as documented on the
grading page.
Reading: For each lecture, there is associated reading. Students are required to complete the reading before the class associated with this reading.
Quizzes: After each class, a quiz will be announced on the mailing
list, and can be taken on
WebCT.
The purpose of the quiz is to give the instructor feedback on
how well you understood
the reading, and to provide you with a chance to ask questions about
the new material.
By simply taking the quiz you get 70% of the mark.
The quiz is closed book, closed
DrScheme, and closed notes.
No collaboration is allowed.
The quiz is due before 8 am the day of the next class.
Responses to student questions submitted with the quizzes can be found
here.
More (but possibly out-of-date) advice can be found
here.
We expect to add new guidelines in the next few weeks.
Journal: Each student is expected to create and maintain a journal
page. It should be used to record the time, duration, and nature of
work done in relation to the course. The journal must follow the form of a standard template
standard template .
New entries will be added at the top of the page. Please see the
sample journal for the style you should follow.
NB: The dates and times are totally made up. They are not necessarily representative of actual student experences.
Other Resources:
Additional References:
| 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) |
| Google's MapReduce | (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.
Access Permissions: (Please don't edit)