COMP 310
|
Advanced Object-Oriented Programming and Design |
![]() ![]() ![]() ![]() ![]() ![]() |
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.
Prerequisites: Comp201, Comp211, Comp212 or Comp215
Primary target audience: Second or third year undergraduate CS students who are interested in object-oriented programming and design, large flexible systems, enterprise-class networked applications, dynamically configurable systems and software engineering. Students who plan on taking Comp410 in the future are strongly advised to take Comp310 beforehand (also taking Comp405 before Comp410 is also highly recommended). Undergraduates may only take Comp310 not Comp504 which is restricted to graduate students that have not already taken Comp310.
For more and the latest infomation, please see the Info page or contact Dr. Wong (swong at rice.edu)
CLASS TIMES: MWF 10:00 AM - 10:50 PM (Ryon 201)
LAB TIMES: (OEDK Classroom)
This schedule should only be considered as a guide. Expect that the schedule will change often!
See Canvas for General assignment requirements and instructions on how to use Subclipse/Subversion to turn-in your assignements.
WARNING: The
Microsoft Edge and
Chrome
browsers cannot run the Java plug-in so you will
need to switch to Internet Explorer or Firefox to run the demos.
(Still having troubles? Check the
Java Tips and Traps and post your issues to Piazza!)
IMPORTANT: The content on this site is being partially migrated to Canvas and its content is being reformatted as the semester progresses. Please note the following:
The official assignment listings and due dates are in Canvas, NOT here!
Content on this page will be changing, sometimes radically, so be sure to refresh this page often.
Help us improve the course site! Please inform the course staff of any broken links or otherwise misleading or confusing content.
Date |
Lecture |
Labs (Tues) |
Assignment Due Date
|
Mon. 01/08/18 | Lec01: Administrivia, Getting started | Lab01: Software Installs, getting started with Eclipse and Building GUIs with WindowBuilder | Complete
your software installations BEFORE lab! Sign up for Piazza (click link above) |
Wed. 01/10/18 | Lec02: GUI Building | ||
Fri. 01/12/18 | Lec03: Programming Paradigms | ||
Mon. 01/15/18 | MLK Jr. Day Holiday -- No Class! | Labs as normal this week.
Lab02: Animation |
|
Wed. 01/17/18 | Lec04:
UML Diagrams Lec05: UML continued, Source Control & Ballworld Demos |
HW01: Simple GUI Program with Polymorphism -- See Canvas | |
Fri. 01/19/18 |
Lec06:
HW01 review Lec07: Designing a Ball |
||
Mon. 01/22/18 | Lec08: Connecting the Pieces | Lab03: MVC Implementation | |
Wed. 01/24/18 | Lec09: Composing Behaviors | HW02: Inheritance-based Ballworld -- See Canvas | |
Fri. 01/26/18 | Lec10: Faking out the GUI with Factories | ||
Mon. 01/29/18 | Lec11: Factories, cont. & Transforming How We Paint | Lab04: Transforming Shapes | |
Wed. 01/31/18 | Lec12: Using Superclasses as Service Providers | HW03: Composition-based Ballworld -- See Canvas | |
Fri. 02/02/18 | Lec13: Painting continued and Command-Driven Dispatching | ||
Mon. 02/05/18 | Lec14: Command Dispatching | Lab05: Sending Commands | |
Wed. 02/07/18 | Lec15: Collisions | HW04: Command-Driven FishWorld -- See Canvas | |
Thurs. 02/08/18 - Fri. 02/09/18 |
Spring Recess: No Classes! | ||
Mon. 02/12/18 | Lec16:
Collisions, continued... Lec17: Ballworld Recap Lec18: Debugging with Eclipse and Visitors, revisited |
Lab06: Collisions and Debugging | |
Wed. 02/14/18 | Lec19: Visitors... | HW05: Command-dispatching Ballworld with Inter-ball Interactions -- See Canvas | |
Fri. 02/16/18 | Visitors, continued... |
||
Mon. 02/19/18 | Lec20: Extended Visitors | Lab07: Playing Music in Java | |
Wed. 02/21/18 | Lec21: Extended Visitors Example - Self-balancing Trees | ||
Fri. 02/23/18 | Lec22: Extended Visitors Example, continued..., Music Project. | HW06: ABC Music Player -- See Canvas | |
Mon. 02/26/18 |
Lec23: Insertion and Deletion Algorithms for Self-Balancing Trees. | Lab08: Java RMI | |
Wed. 02/28/18 | Lec24:
Insertion and Deletion Algorithms for Self-Balancing Trees, continued...
Lec25: Remote Method Invocation (RMI) |
||
Fri. 03/02/18 | Lec26: RMI continued... | HW07: Remote Task Execution -- See Canvas | |
Mon. 03/05/18 | Lec27: RMI Stubs Everywhere! | Lab09: ChatApp Design | |
Wed. 03/07/18 | Lec28: Generic Extended Visitors and Data Packets | ||
Fri. 03/09/18 | Lec29: Use Cases and ChatApp API Design | ||
Mon. 03/12/18 - Fri. 03/16/18 |
Spring Break: No Classes! | ||
Mon. 03/19/18 | Lec30:
Chat Program Interfaces ChatApp API Proposal Presentations (Feedback Round) |
Lab10: ChatApp Design, continued & Simple Threads | |
Wed. 03/21/18 | Lec31:
ChatApp Interfaces... ChatApp API Proposal Presentations (Feedback Round) Subgroup API proposals completed and documemented |
||
Fri. 03/23/18 | Lec32:
ChatApp Design... |
Final Project Proposals due | |
Mon. 03/26/18 | Lec33:
ChatApp finalization ChatApp API Proposal Presentations (Decision Round) |
Lab11: Final Project Design | |
Wed. 03/28/18 | Lec34:
ChatApp finalization, continued.. ChatApp API Proposal Presentations (Decision Round) |
HW08: RMI Chat Program -- See Canvas | |
Fri. 03/30/18 | Lec35:
Design Post-Mortem |
||
Mon. 04/02/18 | Lec36:
Final Project |
Lab12: Final Project Design and Implementation | |
Wed. 04/04/18 | Lec37: Game specifics discussion and Sequence Diagramming | ||
Fri. 04/06/18 | Lec38: Final Project Milestone 1 prep | ||
Mon. 04/09/18 | Lec39: RMI Garbage-Collecting and Final Project Issues | Lab13: Final Project Communciations Testing | |
Wed. 04/11/18 | Lec40:
Mixed Data Dictionaries, WWJ Mapping Library and the
map package Final Project API Proposal Presentations (Feedback Round) |
Final Project: Milestone 1 | |
Fri. 04/13/18 | Lec41:
Game Issues Lec42: Final Project Development Issues Final Project API Proposal Presentations (Feedback Round) |
|
|
Mon. 04/16/18 |
Lec43: Final
Project Testing and Issues Discussion Lec44: Tips & Traps and Team Work Final Project API Proposal Presentations (Decision Round) |
Lab14: Final Project Testing | |
Wed. 04/18/18 |
Lec45:
Lessons from Labs Final Project API Proposal Presentations (Decision Round) |
||
Fri. 04/20/18 | Lec46: We Made It! | Last Day of Classes! | |
TBA | Testing session | DH 3092 | For testing and debugging |
TBA | Testing session | DH 3092 | For testing and debugging |
TBA | Testing session | DH 3092 | For testing and debugging |
TBA | Testing session | DH 3076 | For testing and debugging |
TBA | Testing session | DH 3092 | For testing and debugging |
TBA (Registar-scheduled exam date and time) |
Demo Day! (Instructions) Final Project Code and Documentation Submission due at 11:59 PM |
OEDK Classroom (plus other OEDK rooms) |
Final
Project: Milestone 2 Final Project must be fully operational. Operational testing will NOT be done after the demo time! |
© 2018 by Stephen Wong