COMP 202: Principles of Object-Oriented Programming IIInformation
|Home — Fall 2008|||||Information|||||Resources|||||Exam Resources|||||OwlSpace|||||COMP 201|
Class will be held every Monday, Wednesday and Friday from 10:00 AM to 10:50 AM.
There will be a mandatory lab held on Mondays from 3:30 PM to 5:00 PM on days designated on the schedule.
Both class lectures and labs will be held in Sewall Hall 207 (Symonds I teaching lab). Please note that room 207 is in the basement; it is most easily accessible by the staircase into the courtyard (see map cutout; entire Rice campus map).
Mathias Ricken — See home page for contact and office hour information.
Dr. Stephen B. Wong — See home page for contact and office hour information.
Name Office Hours, Time & Location Zheng Cai zc1 at rice dot edu Wednesdays, 4 PM - 6 PM in DH 3003
Students must satisfactorily complete COMP 201 before enrolling in COMP 202.
COMP 202 is a continuation of COMP 201 covering advanced object-oriented data structures and their associated algorithms such as lazy evaluation, heaps, self-balancing trees, graphs, sorting, and generative recursion. The topics discussed include applications of software engineering principles such as abstract decomposition, decoupling, and command passing in large- and small-scale component framework systems. Multithreaded event-driven applications provide compelling illustrations for such principles.
Since the textbooks do not systematically present these topics, additional lecture notes will be provided. As such, class and laboratory attendance is mandatory.
Advanced Java syntax will be covered as well as how to use the intergrated development environment, DrJava, to write and test Java programs. JUnit, which is integrated into DrJava, will be used as the unit testing platform.
Programming assignments are designed to help understand how the above concepts are implemented and used in various situations. These assignments constitute as an integral part of the course. They can be very time-consuming and require that you start working on them early and budget your time wisely.
Laboratory sessions serve to complement the class lectures and provide a highly interactive environment where students can work in small groups to explore and discuss new topics, topics presented in the lectures, and problems that may arise from the assignments. Attending and actively participate in the lab discussions will help you succeed in the course.
The class is recommended for engineering majors, non-engineering students, and potential Computer Science majors. Due to the Computer Science curriculum change, the Fall 2008 semester will be the last time this exciting course is offered.
Upon successful completion of the course, the students should know:
- How to build both small and large loosely coupled software systems that are flexible, extensible, robust and correct.
- How to build large systems using an incremental, test-driven development approach.
- How to design a command-passing architecture to decouple a system.
- How to use parametric polymorphism (generics) to create more abstract and type-safe code.
- Sorting algorithms such as Quicksort and heapsort.
- Trees and traversal algorithms
If time permits, the following topics may be covered as well:
- Additional design patterns such as facade, template and iterator.
- Additional algorithms, such as hashing and sorting.
The course grade will be tentatively based on:
- Homework Assignments (50% total)
- Exams (15% and 30% respectively)
- Attendance and Participation (5%)
Assignments due dates and rules will be clearly stated at the time they are given.
No make-up exams will be given unless there is a legitimate excuse such as proof of medical emergency. All permissions must be requested and approved in writing before the due date.
We reserve the right to modify the above weightings, number and nature of the assignments and exams at any time.
For homework assignments, please note our README Guidelines and our submission instructions.
We will guarantee that a student will not fail the class if the student agrees to sign our no-fail contract and uphold its terms.
To satisfy the contract, a student is required to:
- attend every lecture and lab
- submit every assignment and exam
- write a short analyses for each assignment and exam, describing and correcting each mistake
- keep a journal, with a paragraph for each lecture and lab, describing the topics that were discussed
If a student wishes to enter into a no-fail contract, the student should fill out this contract, and bring it signed and dated to one of the instructors within the first week, i.e. on Friday, August 29, 2008 at the latest.
At the end of the semester, should a student otherwise receive a failing grade, the instructors will ask the student to provide the journal and the analyses, and then review them for completeness. All of this will be done completely confidentially.
A student may terminate the no-fail contract at any time. There is no penalty for terminating or breaching the contract, but the student will no longer enjoy the no-fail guarantee.
We can modify the contract based on personal needs if there are legitimate reasons such as proof of a medical emergency. This must be requested and approved in writing with the instructors.
Download and print this contract.
Rice University has a student-run academic honor system. Each student has personal responsibility for honesty in their own academic conduct. Each student has the responsibility to report any suspected problems to the Honor Council in a timely fashion. All graded work for this course has to include the honor pledge:On my honor, I have neither given nor received unauthorized aid on this examination/assignment.
The Computer Science Department takes the Rice Honor System very seriously and handles all violations accordingly. Specific rules of conduct concerning collaboration may be spelled out before assignments or exams are distributed. In general, unless specified otherwise, you may discuss your assignments with other students, but the assignment and exams have to be your own work. In particular, you may not use another student's code. When in doubt, contact an instructor before proceeding.
For more information concerning the Rice Honor System, see:
We do not require any textbooks since none of the existing textbooks meet our needs and requirements. We do have a few recommendation however.
- The Java Programming Language, 3rd edition, by Arnold, Gosling, and Holmes, Addison-Wesley, 2000. ISBN 0201704331
James Gosling is the creator of Java. This is the definitive Java reference. However, this book does not cover all the topics of the course and will be used only as a reference for Java syntax and semantics.
- Design Patterns, Elements Of Reusable Object-Oriented Software, by Gamma, Helm, Johnson, and Vlissides, Addison-Wesley, 1995. ISBN 0201633612
This is the bible of the pattern community. It predates Java. The authors are affectionately referred to as the Gang of Four (GoF). All examples are written in C++ and/or Smalltalk. It can be hard to read if you are not familiar with these two languages, though the ideas are language independent. The "pattern language" used in this book also requires a lot of getting used to. We have learned so much from this book, and we are still reading it and learning from it. There is a version on CD-ROM which is cheaper (and perhaps, more versatile). We strongly recommend it, especially to any student considering further work in object-oriented programming.
- Thinking in Java, 2nd ed., by Bruce Eckel, Prentice Hall PTR, 2000. ISBN 0-13-027363-5.
Good OO treatment, with a little more detail on syntax than Gosling's book. Students often find it useful for "nuts-and-bolts" information on programming. The full text is available as a free download from www.bruceeckel.com. Also at the web site is his on-line only book: Thinking in Patterns with Java, which is recommended reading.
- Design Patterns Java Workbook, by Steven John Metsker, Addison-Wesley 2002.
One of the latest imitation of the GoF's book using Java and Java GUI components as examples.
- Java Design Patterns, A Tutorial, by James Cooper, Addison-Wesley 2000.
Another imitation of the GoF's book using Java and Java GUI components as examples.
- Patterns in Java, John Wiley & Sons, 1998, by Mark Grand.
Another imitation of the GoF's seminal book.
- Graphic Java 2, Mastering the JFC 3rd edition, by David Geary, Sun Microsystems Press, 1999.
This is by far the most well-written book on writing GUI applications in Java.
Any student with a documented disability needing academic adjustments or accommodations is requested to speak with an instructor during the first two weeks of class. All discussions will remain confidential. Students with disabilities should also contact Disability Support Services in the Ley Student Center.
Copyright © 2008-2010 Mathias Ricken and Stephen Wong