COMP 210: Principles of Computing & Programming
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.
Required Text: How to Design Programs, Felleisen et al. QA76.6 .H697 2001 (Online).
DrScheme: Please download and use
Version 370.
To avoid compatability problems, please make sure you use this exact version.
Course Schedule
Note that future date schedules are only guidelines. Future homeworks and slides contain materials from previous years. New material will be provided before the corresponding class.
| # | Day | Date(2007) | Topic | Reading | Lectures | Problems | Due(2007) | Lab |
| 1 | Mon | Aug 27 | Introduction | | L 1 | HW 0 | W Aug 29 | |
| 2 | Wed | Aug 29 | Simple programs, reduction, the recipe, and errors | Ch 1+2, Ch 2 Notes | L 2 | HW 1 (Solutions) | W Sep 5 | Getting Started: DrScheme, Design Recipe |
| 3 | Fri | Aug 31 | Auxiliary functions, booleans, and conditionals | Ch 3, Ch 3 Notes | L 3 | | | |
| 3+ | Mon | Sep 3 | No class (Labor Day Recess) | - | - | - | - | - |
| 4 | Wed | Sep 5 | 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 10 | cond , Structures and Varieties |
| 5 | Fri | Sep 7 | Varieties and Variants | Ch 7 | L 5 | | | |
| 6 | Mon | Sep 10 | Syntax and Semantics of Beginner Scheme | Ch 8, Ch 8 Notes | L 6 | HW 3 (Solutions) | M Sep 17 |
| 7 | Wed | Sep 12 | Lists, Recursive Types, and Functions that Process them | Ch 9, Ch 9 Notes | L 7 | | | Lists |
| 8 | Fri | Sep 14 | Putting the List Processing Template to Work | Ch 10 | L 8 | | | |
| 9 | Mon | Sep 17 | Natural Numbers | Ch 11 | L 9 | HW 4 (Solutions) | M Sep 24 | |
| 10 | Wed | Sep 19 | Solving More Complex List Problems | Ch 12, Ch 13, Ch 13 Notes | L 10 | | | Natural Numbers and List Abbreviations |
| 11 | Fri | Sep 21 | Trees | Ch 14 | L 11 | | | |
| 12 | Mon | Sep 24 | Mutually Referential Data Definitions | Ch 15 | L 12 | | | |
| 12+ | Wed | Sep 26 | First Exam (in class) | Old Exam 1 Solution | | | | Trees & Mutually Recursive Data Definitions Lab |
| 12++ | Fri | Sep 28 | Exam 1 Solution | Exam 1 Solution | | | | |
| 13 | Mon | Oct 1 | Development through Iterative Refinement | Ch 16 | L 13 | HW 5 (Solutions) | M Oct 8 | |
| 14 | Wed | Oct 3 | Processing Two Complex Pieces of Data | Ch 17 | L 14 | | | Arithmetic Imprecision Lab |
| 15 | Fri | Oct 5 | Local definitions and Lexical Scope | Ch 18, Ch 18 Notes | L 15 | | | |
| 16 | Mon | Oct 8 | Abstraction in functions and types | Ch 19 | L 16 | | | |
| 17 | Wed | Oct 10 | Functions are Values | Ch 20 | L 17 | HW 6 (Solutions) | W Oct 17 | local and Scope Lab |
| 18 | Fri | Oct 12 | Designing Abstractions from Examples | Ch 21 | L 18 | | | |
| 18+ | Mon | Oct 15 | No class (Midterm Recess) | - | - | - | - | - |
| 19 | Wed | Oct 17 | Designing Abstractions with First-Class Functions | Ch 22 | L 19 | | | |
| 20 | Fri | Oct 19 | Mathematical Examples | Ch 23 | L 20 | HW 7 (Solutions) | M Oct 29 | |
| 21 | Mon | Oct 22 | Defining Functions on the Fly | Ch 24, Ch 24 Notes | L 21 | | | |
| 22 | Wed | Oct 24 | A New Form of Recursion | Ch 25 | L 22 | | | Abstract Functions Lab |
| 23 | Fri | Oct 26 | Designing Algorithms | Ch 26 | L 23 | | | |
| 24 | Mon | Oct 29 | Graphs and Backtracking | Ch 27 | L 24 | HW 8 (Solutions) | M Nov 5 | |
| 25 | Wed | Oct 31 | Cost of Computing | Ch 28 | L 25 | | | Generative Recursion Lab |
| 26 | Fri | Nov 2 | Accumulators | Ch 29 | L 26 | | | |
| 27 | Mon | Nov 5 | More on Accumulators | Ch 30-32 | L 27 | HW 9 (Solutions) | | |
| 28 | Wed | Nov 7 | Memory for Functions and assignment to Variables | Ch 34-35, Part VII Notes | L 28 | | | Accumulators on Trees & Vectors Lab |
| 29 | Fri | Nov 9 | Designing Functions with Memory and examples on Memory Usage | Ch 36,37 | L 29 | | | |
| 30 | Mon | Nov 12 | The Final Syntax and Semantics | Ch 38 | L 30 | | | |
| 30+ | Wed | Nov 14 | Second Exam (in class). Covers up to lecture 28. | Old Second Exam | | | | No lab this week |
| 30++ | Fri | Nov 16 | Exam Re-cap | | | | | |
| 31 | Mon | Nov 19 | Encapsulation | Ch 39 | L 31 | HW 10 (Solutions) | W Nov 28 | |
| 32 | Wed | Nov 21 | Mutable Structures | Ch 40 | L 32 | | | No lab this week |
| 32+ | Fri | Nov 23 | No class (Thanksgiving Recess) | - | - | - | - | - |
| 33 | Mon | Nov 26 | Designing Functions that Change Structures | Ch 41 | L 33 | HW 11 (Solutions) | M Dec 3 | |
| 34 | Wed | Nov 28 | Equality | Ch 42, 43 | L 34 | | | set! Lab |
| 35 | Fri | Nov 30 | Equality and In-Place Sort | | L 35 | | | | |
| 36 | Mon | Dec 3 | Doing things imperatively | | L 36 | HW 12 (Solutions) | F Dec 7 | |
| 37 | Wed | Dec 5 | Review | Ch 54 | L 37 | | | Destructive operations on lists and vectors Lab Consuming and Producing Functions Lab |
| 38 | Fri | Dec 7 | Review | Ch 54 | Old L 39, 2005 Final, 2006 Final | - | | |
| | Fri | Dec 14 | Final Exam (DH 1070) and Evaluations | | Old L 40 | | | |
Grading, Honor Code Policy, Processes and Procedures
Grading will be broken down approximately into homeworks (worth
40-45%), quizzes (worth 5-10%), and exams (10% for first exam, and 20% for the
second exam and the final). It is
important that your performance in each components be consistent.
Quizzes are to be taken on Owlspace, and should be taken as soon as possible
once they are announced in class. The quizzes are closed-books,
closed-notes, closed-internet, and should be done individually. Although you
must use a web browser to do the quizzes, you may not use the computer to
verify your answer or help solve the problems. You may, however, use a
pencil and a piece of paper.
Exams test your individual understanding and knowledge of the
material. Collaboration during exams is not tolerated.
Mailing Lists:
- comp210-discussion-l@mailman.rice.edu (subscribe here):
- This is where important announcements 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.
- comp210-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.
- cs-events-l@mailman.rice.edu:
- Announcements relating to talks and other interesting events hosted by the CS departments.
- Subscription to this list is optional but highly recommended
Online help:
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 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.
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.
Other Resources:
Additional References:
Here is
a nice article about
the basic approach taken in this course.
| 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)