COMP 310
Fall 2012
|
Advanced Object-Oriented Programming and Design
|
 |
Welcome to the Fall 2012 Comp310 home page!
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 the Comp310 announcement
flyer
New!
See Comp310 in Action!
Prerequisites:
Comp201, Comp211, Comp212 or Comp215
Primary target audience: Second or third
year 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.
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
(DH 1064)
LAB TIMES: (OEDK 112 --
Computer Lab)
- Tues. 9:25AM - 10:40 AM
- Tues. 2:30 PM - 3:45 PM
- Wed. 9:35 AM - 10:50 AM
For a tentative topics list, please see the Info
page.
Tentative Schedule
This schedule should only be considered as a guide.
Expect that the schedule will change often!
Instructions on how to use
Subclipse/Subversion to turn-in your assignements.
Date
|
Lecture
|
Notes
|
Assignment Due Date
(at beginning of class!)
|
Mon. 08/20/12 |
Lec01:
Administrivia, Getting started |
Lab00:
Software installations and getting started with Eclipse. |
|
Wed. 08/22/12 |
Lec02:
Programming Paradigms |
|
|
Fri. 08/24/12 |
Lec03:
GUI Building |
|
|
|
|
|
|
Mon. 08/27/12 |
Lec04: UML Diagrams |
Lab01:
Building GUIs with WindowBuilder |
|
Wed. 08/29/12 |
Lec05: UML continued, Source Control &
Ballworld Demos |
|
|
Fri. 08/31/12 |
Lec06: HW01 review |
|
HW01: Simple GUI Program
with Polymorphism |
|
|
|
|
Mon. 09/03/12 |
Labor Day Holiday --
No Class! |
|
|
Wed. 09/05/12 |
Lec07:
Designing a Ball |
Lab02:
Animation |
|
Fri. 09/07/12 |
Lec08: Connecting the Pieces |
|
|
|
|
|
|
Mon. 09/10/12 |
Lec09: Composing Behaviors |
Lab03: MVC Implementation |
HW02: Inheritance-based Ballworld |
Wed. 09/12/12 |
Lec10: Faking out the GUI with Factories |
|
|
Fri. 09/14/12 |
Lec11:
Factories, cont. & Transforming How We Paint |
|
|
|
|
|
|
Mon. 09/17/12 |
Lec12: Using
Superclasses as Service Providers |
Lab04:
Transforming Shapes |
|
Wed. 09/19/12 |
Lec13: Painting continued and Command-Driven Dispatching |
|
HW03: Composition-based Ballworld |
Fri. 09/21/12 |
Lec14:
Command Dispatching |
|
|
|
|
|
|
Mon. 09/24/12 |
Lec15:
Collisions |
Lab05:
Sending Commands |
|
Wed. 09/26/12 |
Lec16:
Collisions, continued... |
|
HW04:
Command-Driven FishWorld |
Fri. 09/28/12 |
Lec17:
Ballworld Recap |
|
|
|
|
|
|
Mon. 10/01/12 |
Lec18:
Debugging with Eclipse and Visitors, revisited |
Lab06:
Collisions and Debugging |
|
Wed. 10/03/12 |
Lec19:
Visitors... |
|
|
Fri. 10/05/12 |
Lec20: Extended Visitors
|
|
HW05: Command-dispatching Ballworld with Inter-ball Interactions |
|
|
|
|
Mon 10/08/12 |
Lec21: Extended Visitors Example - Self-balancing Trees
|
No Labs This Week! |
|
Wed. 10/10/12 |
Lec22:
Extended Visitors Example, continued... |
|
|
Fri. 10/12/12 |
Rice Centennial
Celebration Days -- No
Classes! |
|
|
|
|
|
|
Mon. 10/15/12 |
Lec23:
Extended Visitors Example, continued..., Music project
|
Lab07:
Playing Music in Java |
|
Wed. 10/17/12 |
Lec24:
Insertion and Deletion Algorithms for Self-Balancing Trees
|
|
|
Fri. 10/19/12 |
Lec25:
Remote Method Invocation (RMI) |
|
HW06: ABC Music Player |
|
|
|
|
Mon. 10/22/12 |
Lec26:
RMI continued... |
Lab08:
Java RMI |
|
Wed. 10/24/12 |
Lec27:
RMI Stubs Everywhere! |
|
|
Fri. 10/26/12 |
Lec28:
Generic Extended Visitors and Data Packets |
|
HW07: Remote Task
Execution |
|
|
|
|
Mon. 10/29/12 |
Lec29: Use Cases and
ChatApp API Design |
Lab09:
ChatApp Design |
|
Wed. 10/31/12 |
Lec30:
Chat Program Interfaces |
|
|
Fri. 11/02/12 |
Lec31:
ChatApp Interfaces... |
|
|
|
|
|
|
Mon. 11/05/12 |
Lec32:
ChatApp Design... |
Lab10:
ChatApp Design, continued & Simple
Threads |
|
Wed. 11/08/12 |
Lec33:
ChatApp finalization |
|
|
Fri. 11/10/12 |
Lec34:
ChatApp finalization, continued.. |
|
|
|
|
|
|
Mon. 11/12/12 |
Lec35: Design Post-Mortem |
Lab11:
Final Project Design |
Testing session 7 PM, location:
Meet outside of DH164 and find an open room |
Wed. 11/14/12 |
Lec36:
Final Project |
|
HW08: RMI Chat
Program |
Fri. 11/16/12 |
Lec37:
Weekend Planning. |
|
|
|
|
|
|
Mon. 11/19/12 |
Lec38:
Final Project Milestone 1 prep |
Lab12:
Final Project Design and Implementation |
|
Wed. 11/21/12 |
Lec39:
RMI Garbage-Collecting and Final Project Issues |
|
Final
Project: Milestone 1 |
Fri. 11/23/12 |
Thanksgiving Recess -- No
Class! |
|
|
|
|
|
|
Mon. 11/26/12 |
Lec40:
WWJ Mapping Library and Sequence Diagramming |
Lab13:
Using World Wind Java |
|
Wed. 11/28/12 |
Lec41: Game Issues |
|
|
Fri. 11/30/12 |
Lec42:
We Made It! |
Last Day of Classes! |
|
|
|
|
|
Mon 12/03/12 |
Practice day |
DH3092 1:30 PM -
7:30
PM |
For testing and debugging |
Tue.
12/04/12 |
Practice day |
DH3092 4:00 PM -
7:00
PM |
For testing and debugging |
Fri. 12/07/12 |
Practice day |
DH3092 2:00 PM -
7:00
PM |
For testing and debugging |
Mon. 12/10/12 |
Practice day |
DH3092 1:30 PM -
7:30
PM |
For testing and debugging |
Tues. 12/11/12 |
Demo Day! |
9:00am - 12:00 PM
DH 3092 |
Final Project must be fully operational. |
Wed. 12/12/12 |
Final Project Submission |
Due at 11:59 PM |
Final Project: Milestone 2 |
© 2012 by Stephen Wong