|
Comp201: Principles of Object-Oriented Programming I
|
Class will be held every Monday, Wednesday and Friday in Duncan Hall 1046 from 10:00 AM to 10:50 AM.
See the lab general information page for times and locations of the laboratories.
Please see the lab page for times and locations of the laboratories.
Dr. Stephen B. Wong -- See home page for contact and office hour information.
Teaching Assistants e-mail (@rice.edu) Office Hours & Location Cherif Salama cherif Mon. 1 PM - 3 PM in DH 3109 Nathan Tallent tallent Wed. & Thurs. 11 AM - 12 PM in DH 3063 Chelsea Derrick cderrick Thurs. 2 PM - 4 PM in Symonds II Robert LiKamWa rl2 Wed. 10 PM - 12 AM in Will Rice Commons James Russell jcr2 Thurs 5:30 PM - 7:30 PM in Symonds I All Comp201 staff are also available by appointment!
Staff only: comp201 at rice.edu (replace the "at" with an "@")
Entire class (including staff): comp201s08 at owlspace-ccm.rice.edu
Please do not send e-mail directly to the instructor or any specific staff member, as doing so will only delay the response.
Please DO start your subject line with "Comp201: " so that your message can be easily identified as being class-related!
Though none of the existing text books truly meet our needs and requirements, we like the following book and require it for the course.
- Head First Design Patterns, First Edition, by Eric Freeman and Elizabeth Freeman, O'Reilly, 2004. ISBN 0-596-00712-4.
We also have a few recommendations.
- 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.
None.
This course is an introduction to object-oriented programming (OOP) with Java as the implementation language. It emphasizes proper formulation and abstraction of the problem domain in the programming process in order to build programs that are robust, flexible, and extensible. It teaches how design patterns help formulate and implement abstractions in effective and elegant ways.
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.
The course covers data structures and algorithms to manipulate them that are essential to programming, such as lists, stacks, queues, trees, tables. These structures are implemented as systems of cooperating objects using appropriate design patterns. The course will also cover event-driven I/O. Since the textbooks do not systematically present these topics, additional lecture notes will be provided. As such, class and laboratory attendance is mandatory!
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.
Upon successful completion of the course, the students should know:
- How to design and program in the object-oriented (OO) paradigm making proper use of encapsulation, inheritance, and polymorphism.
- The Unified Modeling Language (UML) diagrams, industry standard to describe program designs.
- The Java programming language to implement OO program design.
- Use of unit testing and its implementation using JUnit.
- Common design patterns, such as composite, command, singleton, strategy, state, visitor, adapter, decorator, factory and null object.
- The formulation and implementation of basic data structures, such as lists and trees.
- Fundamental algorithms on data structures, such as searching and structural traversal.
- Graphical User Interface (GUI) programming using Java GUI components and the Model-View-Controller (MVC) paradigm.
- Basic construction of event-driven systems.
- The basics of component software construction and object-oriented frameworks.
- Rudiments of complexity analysis, such as asymptotic behavior and "big O" notation.
If time permits, the following topics may be covered as well:
- Additional design patterns such as facade, template and iterator.
- Additional data structures such as stacks, queues and tables.
- Additional algorithms, such as hashing and sorting.
- Using stream I/O to process files.
Please follow the navigation links above to see the topical schedule for lectures and labs.
The course grade will be based on:
Homework Assignments (45% total)
Exams (3 @ 10%, 20%, 20% respectively)
Final Project (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 (hard copy or e-mail) BEFORE the due date!
We reserve the right to modify the above weightings at any time.
LATE POLICY::
- No assignments will accepted late without express written permission from an instructor before the due date of the assignment. Excused lateness will not be penalized unless otherwise decided by the instructor (student will be notified at time of request).
- Any unexcused work submitted late will be penalized at least 5% of the total possible score per day on top of any normal markdowns, rounded up to the nearest day.
- Any unexcused late work submitted more than one week after the due date will either not be accepted and will be given an automatic "0" score.
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. During any Rice exam, the student is expected to write the honor pledge on the outside of the exam:
On my honor, I have neither given nor received aid on this examination.
The Computer Science Department takes the Rice Honor System very seriously and handles all violations accordingly. General rules of conduct concerning collaboration will be spelled out before assignments or exams are distributed (see for instance, above). When in doubt, contact an instructor before proceeding.
For more information concerning the Rice Honor System, see:
Any student with a documented disability needing academic adjustments or accommodations is requested to speak with us 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.
.
Last Revised Thursday, 03-Jun-2010 09:50:27 CDT
©2008 Stephen Wong and Dung Nguyen