COMP 310
|
Course Information |
![]() ![]() ![]() ![]() ![]() ![]() |
Class will be held every Monday, Wednesday and Friday from 10:00 AM - 11:50 AM in Ryon 201.
Labs will be held in the OEDK Classroom at
Dr. Stephen Wong -- See home page for contact and office hour information.
Teaching Assistants e-mail (at rice.edu) Office Hours (all are 2 hr blocks) & Location (Subject to change, so check often!) Fushan Chen fc20 Jesse Chen zc31 Alicia Fan alf10 Anne Geng wg7 Yizi Gu yg31 Manmitha Gundampalli mrg7 Mengjin Hou mh58 Frankie Huang qh5 Zhaohan Jia zj7 William Koh kk49 Yifan "Eva" Li yl129 Druv Madhok dm36 Zhiyan Tang zt6 Hongyang Zhang hz44 Shuzin Zhang sz48 Yang Zhang yz78 Ning Zhu nz9 All Comp310 staff are also available by appointment!
Entire class or part thereof: From inside of Canvas, go to your "Inbox" and compose a new message. When you select this course from the droplist, various choices for the message recipient ("To:") will become available, including the whole class, just the staff or particular groups or people.
Just the staff: comp310 at rice.edu (replace the " at " with "@") This just a convenience alias that has been set up to enable sending an e-mail to all the staff from any e-mail client.
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 "Comp310: " 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 highly recommend 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 other recommendations.
- The Java Programming Language, 4th edition, by Arnold, Gosling, and Holmes, Addison-Wesley,
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, 4'th ed., by Bruce Eckel, Prentice Hall PTR.
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 of earlier editions are 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.
COMP 215 or equivalent: students should already be familiar with the full Java syntax and have experience writing procedural programs and algorithms in Java including the basic usage of classes, objects and inheritance as well as simple generics.
Object-oriented programming is the major software paradigm used in large systems today. This includes most desktop applications such a office productivity software, data management applications and even the main frameworks of many games. But object-oriented programming and design (OOP/D) absolutely rules in the enterprise-class arena, the globe-spanning, mission-critical systems that, via the Internet, tie together international corporations from one end of the Earth to the other. In Comp310, we will discover how to use state-of-the-art object-oriented programming and design techniques to create flexible and scalable software systems that can interact with eachother from anywhere in the world. We will learn about software design patterns and how they are used in multiple programming paradigms. Through a combination of theory and coding, the class will explore how highly decoupled systems with dynamically configurable behaviors are designed and implemented. The class will learn how to use design patterns as both a means of expressing fundamental computer science concepts as well as the building blocks in an abstract decomposition of a complex problem. In addition, the class will learn to use industry standard tools and technologies such as the Eclipse integrated development environment, Subversion source control and round-trip engineering design tools.
The course format will be that of lectures covering the theoretical, engineering and technological aspects of object-oriented programming and design that will be implemented in the project-like homework assignments. These homework projects will build upon each other as much as possible, culminating in a networked application.
Theory
Highly decoupled systems:
Design patterns:
Technologies
Please follow the navigation link to the Home page above to see the topical schedule for lectures and labs.
All homework will be done in teams of AT LEAST TWO students. Students are NOT allowed to work on assignments alone. An important aspect of this course is learning how to communicate with and work with a variety of other people who have different opinions on how a problem should be approached. Learning how to work in a team is a critical skill for one's career. Except for the final project, the teams will be randomly assigned by the staff.
Team assignments for each assignment will be posted in Owlspace. Assignments are listed on the schedule by their due date. All assignments are due before class time on their due date.
The turn-in mechanism will be the student's individual Comp310 Subversion repository on CLE@R, using the Subclipse version control plug-in in Eclipse. Please see
The course grade will be based on: TENTATIVE
- Homework Assignments (50% total)
- Video Assignments (10% total)
- Attendance (5% total)
- Design Activities (15% total)
- Final Project (20% = 5% Milestone 1 + 15% Milestone 2)
Assignments’ due dates and rules will be clearly stated at the time they are given.
No make-up work 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) at least 48 hours the due date!
We reserve the right to modify the above weightings at any time.
- No assignments will accepted late without express written permission from an instructor BEFORE the due date of the assignment. (See above) Excused lateness will not be penalized unless otherwise decided by the instructor (student will be notified at time of request).
- Extension requests will be considered ONLY for the following reasons and are NOT automatically accepted:
- Illness or unexpected travel occurring during or extending into the second half of the time period between the previous assignment due date and the current assignment due date.
- Pre-planned travel that covers more than half of the time period between the previous assignment due date and the current assignment due date. Must request extension at least 48 hours BEFORE travel!
- Unexpected technical problems that prevent the submission of the assignment such as a network or SVN outage.
- Note that broken computers or faulty software installations are not acceptable justifications because all work can be completed and submitted from the OEDK lab computers.
- The following will NOT be considered as valid reasons for extensions:
- Excessive work in other classes.
- Any extension request made less than 48 hours before a deadline unless for an emergency or unplanned event as detailed above.
- Travel to conferences or interviews where one is gone for less than half of the assignment time period. This includes the preparation for such trips.
- Starting late and/or discovering that the assignment is more difficult than anticipated. START EARLY!
- Not being able to meet with or having difficulty with an assignment partner.
- Any extension request must be accompanied by proof of having already made a concerted effort to complete the assignment, including SVN commits and meetings with the staff. Extensions will not be considered if no work has been done already on the assignment.
- No extensions for Video Assignment Quizzes will be considered because the correct answers are automatically released on the due date.
- If a late, unexcused submission is accepted at all, which is solely at the instructor's discretion and which is NOT the default policy:
- The assignment 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.
- If more one week after the due date, the assignment will not be accepted and will be given an automatic "0" score.
Principles of Object Oriented Programming courses:
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 this class, the following additional restrictions MUST be observed:
You may not look at solutions to assignments from past semesters or from other students. Furthermore, attempting to take credit for someone else’s work by turning it in as your own constitutes plagiarism, as defined by the Rice Honor Code.
You may not make your work in the class available to others in any form during or after the class. In particular, you may not place your code anywhere on the Internet that is viewable by others.
For example, posting one's code to a publicly viewable GitHub or other sort of repository or web page would be in violation of the above restrictions.
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.
Previous Offerings of Comp310:
© 2017 by Stephen Wong