Start of topic | Skip to actions
Online Book   Owlspace (for quizzes)   Office Hours   HW Guide   HW Checklist   HW Grading   Discussion Archive

COMP 210: Principles of Computing & Programming

Instructor: Prof. Walid Taha Staff: Gregory Malecha, Christopher Warrington, Matt Wilson, Ted Torous, Nathan Tallent, Angela Zhu
Lectures: Duncan Hall (DH) 1046 Time: MWF 10:00-10:50 am
Labs: Sewell Hall 101 & Symonds II Times: W 2:30-3:50pm (SH101), W 7:00-8:20pm (Sym II), Th 2:30-3:50 pm (SH101) (sign up sheet)

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:

  • (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.
  • :
    • Any questions relating to the course can be sent to this list.
    • Specific questions about homework problems and grading can be directed here.
  • :
    • 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 (questions of general interest may alternately be raised on the ). 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)


End of topic
Skip to actions | Back to top
toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
pdfpdf 32.pdf manage 429.8 K 21 Nov 2007 - 23:38 ChrisWarrington  
pdfpdf 04.pdf manage 125.9 K 10 Sep 2007 - 13:14 ChrisWarrington  
pdfpdf 25.pdf manage 486.4 K 12 Nov 2007 - 01:50 ChrisWarrington  
pdfpdf 06.pdf manage 124.1 K 10 Sep 2007 - 13:36 ChrisWarrington  
pdfpdf 21.pdf manage 542.0 K 23 Oct 2007 - 23:35 ChrisWarrington  
pdfpdf 15.pdf manage 360.6 K 05 Oct 2007 - 12:25 ChrisWarrington  
pdfpdf 22.pdf manage 187.9 K 24 Oct 2007 - 21:22 ChrisWarrington  
pdfpdf 13.pdf manage 746.0 K 02 Oct 2007 - 14:02 ChrisWarrington  
pdfpdf 24.pdf manage 227.9 K 29 Oct 2007 - 17:04 ChrisWarrington  
pdfpdf 01.pdf manage 149.2 K 05 Sep 2007 - 13:29 WalidTaha  
pdfpdf 20.pdf manage 212.2 K 23 Oct 2007 - 23:35 ChrisWarrington  
pdfpdf 07.pdf manage 166.3 K 13 Sep 2007 - 15:04 ChrisWarrington  
pdfpdf 10.pdf manage 390.0 K 19 Sep 2007 - 20:00 ChrisWarrington  
pdfpdf 18.pdf manage 182.4 K 23 Oct 2007 - 23:35 ChrisWarrington  
pdfpdf 26.pdf manage 2278.5 K 02 Nov 2007 - 15:58 ChrisWarrington  
pdfpdf 23.pdf manage 227.4 K 29 Oct 2007 - 17:04 ChrisWarrington  
pdfpdf 28.pdf manage 138.2 K 12 Nov 2007 - 00:55 ChrisWarrington  
pdfpdf 35.pdf manage 118.2 K 03 Dec 2007 - 15:59 ChrisWarrington  
pdfpdf 29.pdf manage 120.9 K 12 Nov 2007 - 01:45 ChrisWarrington  
pdfpdf 14.pdf manage 285.9 K 03 Oct 2007 - 15:43 ChrisWarrington  
pdfpdf exam-1.pdf manage 52.8 K 01 Oct 2007 - 11:52 ChrisWarrington  
pdfpdf 30.pdf manage 330.3 K 18 Nov 2007 - 23:22 ChrisWarrington  
pdfpdf 02.pdf manage 169.3 K 05 Sep 2007 - 13:29 ChrisWarrington  
pdfpdf 17.pdf manage 256.0 K 10 Oct 2007 - 21:33 ChrisWarrington  
pdfpdf 11.pdf manage 416.5 K 21 Sep 2007 - 13:09 ChrisWarrington  
pdfpdf 2006exam3.pdf manage 57.3 K 11 Dec 2007 - 20:07 ChrisWarrington  
pdfpdf 08.pdf manage 140.6 K 14 Sep 2007 - 14:48 ChrisWarrington  
pdfpdf 27.pdf manage 176.5 K 12 Nov 2007 - 01:44 ChrisWarrington  
pdfpdf 12.pdf manage 152.5 K 24 Sep 2007 - 12:56 ChrisWarrington  
pdfpdf 37.pdf manage 1617.2 K 05 Dec 2007 - 18:11 ChrisWarrington  
pdfpdf 31.pdf manage 128.5 K 19 Nov 2007 - 11:52 YunZhu  
pdfpdf 16.pdf manage 225.7 K 09 Oct 2007 - 21:43 ChrisWarrington  
pdfpdf 33.pdf manage 152.6 K 27 Nov 2007 - 19:17 ChrisWarrington  
pdfpdf 36.pdf manage 89.4 K 03 Dec 2007 - 15:59 ChrisWarrington  
pdfpdf 19.pdf manage 193.2 K 23 Oct 2007 - 23:35 ChrisWarrington  
pdfpdf 09.pdf manage 620.9 K 19 Sep 2007 - 20:02 ChrisWarrington  
pdfpdf 03.pdf manage 204.8 K 10 Sep 2007 - 13:14 ChrisWarrington  
pdfpdf 05.pdf manage 2079.5 K 10 Sep 2007 - 13:14 ChrisWarrington  
pdfpdf 34.pdf manage 136.4 K 30 Nov 2007 - 12:45 ChrisWarrington  
Creative Commons LicenseThis work is licensed under a Creative Commons Attribution 2.5 License. Please follow our citation guidelines.