COMP 310
Fall 2010

Advanced Object-Oriented Programming and Design

Home  Info  Owlspace  Resources

Welcome to the Fall 2010 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

Prerequisites:  Comp201 (not Comp202 -- typo on Registrar's site), Comp211 or Comp212      

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

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.




Assignment Due Date 
(at beginning of class!)

Mon. 08/23/10 Lec01: Administrivia, Getting started    
Wed. 08/25/10 Lec02: Programming Paradigms    
Fri. 08/27/10 Lec03: GUI Building    
Mon. 08/30/10 Lec04: UML Diagrams Lab01: Building GUIs with Jigloo  
Wed. 09/01/10 Lec05: UML continued, Source Control & Ballworld Demos  
Fri. 09/03/10 Lec06: HW01 review HW01: Simple GUI Program with Polymorphism
Mon. 09/06/10 Labor Day Holiday -- No Class!    
Wed. 09/08/10 Lec07:  Designing a Ball  Lab02: Animation
Fri. 09/10/10 Lec08: Connecting the Pieces
Mon. 09/13/10 Lec09: Composing Behaviors Lab03: MVC Implementation HW02: Inheritance-based Ballworld
Wed. 09/15/10 Lec10: Faking out the GUI with Factories    
Fri. 09/17/10 Lec11: Factories, cont. & Transforming How We Paint     
Mon. 09/20/10 Lec12:  Using Superclasses as Service Providers Lab04: Transforming Shapes  
Wed. 09/22/10 Lec13: Painting continued and Command-Driven Dispatching   HW03: Composition-based Ballworld 
Fri. 09/24/10 Lec14: Command Dispatching    
Mon. 09/27/10 Lec15: Collisions Lab05: Sending Commands  
Wed. 09/29/10 Lec16:  Collisions, continued...   HW04: Command-Driven FishWorld
Fri. 10/01/10 Lec17: Ballworld Recap    
Mon. 10/04/10 Lec18: Debugging with Eclipse and Visitors, revisited Lab06: Collisions and Debugging  
Wed. 10/06/10 Lec19: Visitors...    
Fri. 10/08/10 Lec20: Extended Visitors   HW05: Command-dispatching Ballworld with Inter-ball Interactions
Mon 10/11/10 Midterm Recess -- No Classes!    
Wed. 10/13/10 Lec21: Extended Visitors Example - Self-balancing Trees    
Fri. 10/15/10 Lec22: Extended Visitors Example, continued...    
Mon. 10/18/10 Lec23: Extended Visitors Example, continued..., Music project Lab07: Playing Music in Java  
Wed. 10/20/10 Lec24: Insertion and Deletion Algorithms for Self-Balancing Trees    
Fri. 10/22/10 Lec25: Remote Method Invocation (RMI)   HW06: ABC Music Player  (Blanket Extension until 11:59 PM Sat. 10/23/10!)
Mon. 10/25/10 Lec26: RMI continued... Lab08: Java RMI  
Wed. 10/27/10 Lec27: RMI Stubs Everywhere!    
Fri. 10/29/10 Lec28: Generic Extended Visitors and Data Packets   HW07: Remote Task Execution
Mon. 11/01/10 Lec29: Lec29: Use Cases and ChatApp API Design Lab09: ChatApp Design  
Wed. 11/03/10 Lec30: Chat Program Interfaces    
Fri. 11/05/10 Lec31: ChatApp Interfaces...    
Mon. 11/08/10 Lec32: ChatApp Design... Lab10: ChatApp Design, continued & Simple Threads  
Wed. 11/10/10 Lec33:  ChatApp finalization    
Fri. 11/12/10 Lec34:  ChatApp Testing    HW08:  RMI Chat Program
Mon. 11/15/10 Lec35: Design Post-Mortem Lab11: Final Project Design  
Wed. 11/17/10 Lec36: Final Project    
Fri. 11/19/10 Lec37: Weekend Planning.    
Mon. 11/22/10 Lec38: Final Project Milestone 1 prep Lab12: Final Project Design and Implementation  
Wed. 11/24/10 Lec39: RMI Garbage-Collecting and Final Project Quests   Final Project: Milestone 1
Fri. 11/26/10 Thanksgiving Recess -- No Class!    
Mon. 11/29/10 Lec40: WWJ Mapping Library Lab13: Using World Wind Java  
Wed. 12/01/10 Lec41: Serialization, Game Demo, API issues    
Fri. 12/03/10 Lec42: We Made It! Last Day of Classes!  
Mon.-Tue. 12/06/10-12/07/10 Practice days DH3092 For testing and debugging
Wed. 12/08/10  Demo Day!  (See photos!)  9:00am - 12:00 PM  OEDK classroom Final Project must be fully operational.
Fri. 12/10/10 Final Project Submission Due at 11:59 PM  Final Project: Milestone 2

© 2010 by Stephen Wong and Scott Rixner