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

COMP 211: Principles of Program Design

Instructors: Prof. Robert "Corky" Cartwright Staff: Cherif Salama
Prof. Walid Taha Angela Zhu
Dr. Dung "Zung" Nguyen Jun Inoue
  Travis Martin
Lectures: Duncan Hall (DH) 1064 Time: MWF 11:00-11:50 am
Labs: Sewell Hall 101 Times: Monday 2:00-3:20 pm, Monday 3:30-4:50 pm, Tuesday 2:30-3:50 pm. (sign up sheet)

Introduction

This course is an introduction to the fundamental principles of programming. The focus is on systematic methods for developing robust solutions to computational problems. Students are expected to have experience writing interesting programs in some credible programming language (e.g., Python, Java, Scheme, C#, C++, Visual Basic .NET, PRL, Scheme, Lisp, etc.) but no specific programming expertise is assumed. The course is targeted at potential Computer Science majors but mathematically sophisticated non-majors are welcome. We expect students to be comfortable with high-school mathematics (primarily algebra, mathematical proofs, and induction) and the mathematical rigor and vocabulary of freshman calculus. Success in the course requires a deep interest in the foundations of computer science and software engineering, self-discipline, and a willingness to work with other people on programming projects. Topics covered include functional programming, algebraic data definitions, design recipes for writing functions, procedural abstraction, reduction rules, program refactoring and optimization, object-oriented programming emphasizing dynamic dispatch, OO design patterns, fundamental data structures and algorithms from an OO perspective, simple Grapical User Interfaces (GUIs), and an exposure to the challenges of concurrent computation. Students will learn the practical skills required to write, test, maintain, and modify programs. Labs and assignments use the Scheme and Java programming languages.

Recommended Text: How to Design Programs, Felleisen et al. QA76.6 .H697 2001 (Available online; no purchase is necessary).

DrScheme: Please download and use the DrScheme system embedded in Version 4.1.3. To avoid compatability problems, please make sure you use Version 4.1.3 (as of 1-5-09, the latest version).

Course Schedule

Note that future date schedules are only guidelines. Future homeworks and slides may contain materials from previous Comp 210 and Comp 212 classes. New material will be provided before the corresponding class.

# Day Date(2009) Topic Reading Lectures Problems Due(2009) Lab
1 Mon Jan 05 Introduction   L 1 HW 0 W Jan 07  
2 Wed Jan 07 Programming primitives; function and data definitions Skim Ch 1-10 L 2 HW 1 W Jan 14  
3 Fri Jan 09 Inductive data definitions, conditionals, and the design recipe Review Ch 1-10      
4 Mon Jan 12            
5 Wed Jan 14      
6 Fri Jan 16
         

Grading, Honor Code Policy, Processes and Procedures

Grading will be based on your performance on homeworks (worth 50%) and exams (20% for first exam, and 30% for the second exam).

Take-home exams, which are pledged under the honor code, test your individual understanding and knowledge of the material. Collaboration on exams is strictly forbidden.

Mailing Lists:

  • comp211-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.
  • comp211-teachers@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

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 Prof. Cartwright or Prof. Taha directly.

Homeworks:

Homeworks help you verify 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 211 graduates, is also encouraged (but should be cited), 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 with one exception. Every student is allotted 5 slip days. Each whole day or fraction of a day that an assignment is late counts as a slip day. Each student in the pair submitting a late assignment must spend the requisite number of slip days. Since assignments get progressively harder during the semester, we strongly encournage you to hoard your slip days for use near the end of the term.

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.

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)

toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
pdfpdf 2.pdf manage 200.9 K 07 Jan 2009 - 09:20 CorkyCartwright  
pptppt 01.ppt manage 68.5 K 05 Jan 2009 - 01:14 CorkyCartwright Lecture 1
pdfpdf 1.pdf manage 149.2 K 05 Jan 2009 - 10:44 CorkyCartwright Lect 1
Creative Commons LicenseThis work is licensed under a Creative Commons Attribution 2.5 License. Please follow our citation guidelines.