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.
See Comp310 in action! (coming soon!) (See previous years too: F13, F14)
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 Comp404 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 1:00 PM - 1:050 PM (HZ 212)
LAB TIMES: (OEDK Classroom) Please go fill out the Initial Experience survey right away!
This schedule should only be considered as a guide. Expect that the schedule will change often!
Windows 10 Users: The new Microsoft Edge browser cannot run the Java plug-in so you will need to switch to Internet Explorer to run the demos.
Date |
Lecture |
Labs (Tues) |
Assignment Due Date
|
Mon. 08/24/15 | Lec01: Administrivia, Getting started | Lab01: Software Installs, getting started with Eclipse and Building GUIs with WindowBuilder | Complete your software installations BEFORE lab! |
Wed. 08/26/15 | Lec02: GUI Building | ||
Fri. 08/28/15 | Lec03: Programming Paradigms | ||
Mon. 08/31/15 | Lec04:
UML Diagrams Lec05: UML continued, Source Control & Ballworld Demos |
Lab02: Animation | |
Wed. 09/02/15 | Lec06:
HW01 review Lec07: Designing a Ball |
HW01: Simple GUI Program with Polymorphism | |
Fri. 09/04/15 | Lec08: Connecting the Pieces | ||
Mon. 09/07/15 | Labor Day Holiday -- No Class! | Labs as normal this week. |
|
Wed. 09/09/15 | Lec09: Composing Behaviors | Lab03: MVC Implementation | HW02: Inheritance-based Ballworld |
Fri. 09/11/15 | Lec10: Faking out the GUI with Factories | ||
Mon. 09/14/15 | Lec11: Factories, cont. & Transforming How We Paint | Lab04: Transforming Shapes | |
Wed. 09/16/15 | Lec12: Using Superclasses as Service Providers | ||
Fri. 09/18/15 | Lec13: Painting continued and Command-Driven Dispatching | HW03: Composition-based Ballworld | |
Mon. 09/21/15 | Lec14: Command Dispatching | Lab05: Sending Commands | |
Wed. 09/23/15 | Lec15: Collisions | ||
Fri. 09/25/15 | Lec16:
Collisions, continued... Lec17: Ballworld Recap Lec18: Debugging with Eclipse and Visitors, revisited |
HW04: Command-Driven FishWorld | |
Mon. 09/28/15 | Lec19:
Visitors... Presentation by Tubular Labs |
Lab06: Collisions and Debugging | |
Wed. 09/30/15 | Visitors, continued... |
||
Fri. 10/02/15 | Lec20: Extended Visitors | ||
Mon. 10/05/15 | Lec21: Extended Visitors Example - Self-balancing Trees | Lab07: Playing Music in Java | HW05: Command-dispatching Ballworld with Inter-ball Interactions |
Wed. 10/07/15 | Lec22: Extended Visitors Example, continued..., Music Project. | ||
Fri. 10/09/15 | Lec23: Insertion and Deletion Algorithms for Self-Balancing Trees. | ||
Mon. 10/12/15 - Tues. 10/13/15 |
Midterm Recess: No Classes! | No Labs This Week! | |
Wed. 10/14/15 | Lec24:
Insertion and Deletion Algorithms for Self-Balancing Trees, continued...
Lec25: Remote Method Invocation (RMI) |
||
Fri. 10/16/15 | Lec26: RMI continued... | HW06: ABC Music Player | |
Mon. 10/19/15 | Lec27: RMI Stubs Everywhere! | Lab08: Java RMI | |
Wed. 10/21/15 | Lec28: Generic Extended Visitors and Data Packets | ||
Fri. 10/23/15 | Lec29: Use Cases and ChatApp API Design | ||
Mon. 10/26/15 | Lec30: Chat Program Interfaces | Lab09: ChatApp Design | HW07: Remote Task Execution |
Wed. 10/28/15 | Lec31:
ChatApp Interfaces... Subgroup API proposals completed and documemented |
||
Fri. 10/30/15 | Lec32:
ChatApp Design... Full API Proposal Documentation complete and Presentations |
||
Mon. 11/02/15 | Lec33:
ChatApp finalization Full API Proposal Documentation complete and Presentations, continued... |
Lab10: ChatApp Design, continued & Simple Threads | Round 1 Proposal Presentations |
Wed. 11/04/15 | Lec34:
ChatApp finalization, continued.. Revised Proposal Presentations and Final Voting |
||
Fri. 11/06/15 | Lec35: Design Post-Mortem | ||
Mon. 11/09/15 | Lec36: Final Project | Lab11: Final Project Design |
Round 2 Proposal Presentations Testing sessions in DH3092: Mon. 11/9/15 2:00 PM - 5:00 PM Tues. 11/10/15 9:00 AM - 12:00 PM |
Wed. 11/11/15 | Lec37: Game specifics discussion and Sequence Diagramming |
Final
Project Pair selection due Testing sessions in DH3092: Wed. 11/11/15: 3:00 - 5:30 PM Thurs. 11/12/15 1:00 PM - 5:30 PM |
|
Fri. 11/13/15 | Lec38: Final Project Milestone 1 prep | ||
Mon. 11/16/15 | Lec39: RMI Garbage-Collecting and Final Project Issues | Lab12: Final Project Design and Implementation | HW08: RMI Chat Program |
Wed. 11/18/15 | Lec40: Mixed Data Dictionaries, WWJ Mapping Library and the map package | Final Project Proposals due in Piazza | |
Fri. 11/20/15 | Lec41: Game Issues | Final Project API Proposal Presentations | |
Mon. 11/23/15 | Lec42: Final Project Development Issues | Lab13: Final Project Communciations Testing | |
Wed. 11/25/15 | Lec43: Final Project Testing and Issues Discussion | Final Project: Milestone 1 | |
Thur. 11/26/15 -Fri. 11/27/15 | Thanksgiving Recess -- No Class! | ||
Mon. 11/20/15 | Lec44: Tips & Traps and Team Work | Lab14: Final Project testing | |
Wed. 12/02/15 | Lec45: Lessons from Labs | ||
Fri. 12/04/15 | Lec46: We Made It! | Last Day of Classes! | |
Tues. 12/8/15 1:30 PM - 5:30 PM |
Testing session (shared with Comp504) | DH 3092 | For testing and debugging |
Wed. 12/9/15 9:00 AM - 1 :00 PM 3:00 PM - 5:30 PM |
Testing session (shared with Comp504) | DH 3092 | For testing and debugging |
Thurs. 12/10/15 9 AM - 12:00 PM |
Testing session (shared with Comp504) | DH 3092 | For testing and debugging |
Fri. 12/11/15 9:00 AM - 12:00 PM |
Testing session (shared with Comp504) | DH 3076 | For testing and debugging |
Mon. 12/14/15 8:30 AM - 11:30 AM 1:30 PM - 6:00 PM |
Testing session | DH 3092 | For testing and debugging |
Tues. 12/15/15 9:00 AM - 12:00 PM | Demo Day! (Instructions) | OEDK Classroom (plus Rm 104 and Computer Lab) |
Final Project must
be fully operational. Operational testing will NOT be done after the demo time! |
Wed. 12/16/15 | Final Project Code and Documentation Submission | Due at 11:59 PM | Final Project: Milestone 2 |
© 2015 by Stephen Wong