COMP 310
Spring 2010

Advanced Object-Oriented Programming and Design

Home  Info  Owlspace  Resources

Welcome to the Spring 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. 01/11/10 Lec01: Administrivia, setting up Eclipse, UML diagrams    
Wed. 01/13/10 Lec02: Simple GUI program, Ballworld design    
Fri. 01/15/10 Lec03: Ballworld design and animation    
Mon. 01/18/10 M.L.K. Holiday -- No Class!    
Wed. 01/20/10 Lec04: Ballworld design, continued...  
Fri. 01/22/10 Lec05: Ballworld: The Next Generation   HW01: Inheritance-based Ballworld (grading criteria)
Mon. 01/25/10 Lec06: Abstracted Construction using Factories    
Wed. 01/27/10 Lec07:  Composition-based Ballworld considerations and even more fun...     
Fri. 01/29/10 Lec08:  To Infinity..and Beyond!   HW02: Composition-based Ballworld  (replicate demo + 5 strategies min.) (grading criteria)
Mon. 02/01/10 Lec09: MVC and Collision Handling    
Wed. 02/03/10 Lec10:  Collisions, killing and the environment    
Fri. 02/05/10 Lec11: Source Control and Ball Initializations   HW03: Command-driven BallWar, part 1   (due 5 PM Sun 2/7/10)
Mon. 02/08/10 Lec12:  Using Superclasses as Service Providers    
Wed. 02/10/10 Lec13:  Using Lambdas for Asynchronous Updating and Key Binding with Action Maps    
Fri. 02/12/10 Lec14: Encapsulated Functionality and Applet/Application Duality    
Mon. 02/15/10 Lec15: Continued...    
Wed. 02/17/10 Lec16:  Extended Visitor Design Pattern    
Fri. 02/19/10 Lec17: Continued...   HW04: Command-driven BallWar, part 2
Mon. 02/22/10 Lec18: Continued...    
Wed. 02/24/10 Lec19: Java Generics    
Fri. 02/26/10 Lec20: Generic List Frameworks    
03/01/10 - 03/05/10 Spring Break -- No Classes!    
Mon. 03/08/10 Lec21: Generics and Extended Visitors Together    
Wed. 03/10/10 Lec22: Lambda-based Generic Extended Visitors, continued...    
Fri. 03/12/10 Lec23: RMI    
Mon. 03/15/10 Lec24: RMI...    
Wed. 03/17/10 Lec25: RMI...   HW05: Self-modifying Finite State Machine
Fri. 03/19/10 Lec26: Remote Dynamic Class Loading with RMI,  Chat Program Use Cases    
Mon. 03/22/10 Lec27: Chat Design    
Wed. 03/24/10 Lec28: Chat Use Cases and API   HW06: Remote Task Execution
Fri. 03/26/10 Lec29: RMI Testing, Chat API Design
Mon. 03/29/10 Lec30: Chat Program Interfaces    
Wed. 03/31/10 Lec31: Chat App Interfaces...    
Fri. 04/02/10 Spring Recess -- No Class!    
Mon. 04/05/10 Lec32: Chat App Testing    
Wed. 04/07/10 Lec33:  Chat App demos   HW07:  RMI Chat Program
Fri. 04/09/10 Lec34:  Final Project Brainstorming     
Mon. 04/12/10 Lec35: Final Project API design    
Wed. 04/14/10 Lec36: Final Project API...    
Fri. 04/16/10 Lec37: Final Project initialization and control data types.    
Mon. 04/19/10 Lec38: Final Project Milestone 1 review   Final Project: Milestone 1
Wed. 04/21/10 Lec39: Cross-thread Invocations and Final Project game play issues    
Fri. 04/23/10 Lec40: Threads and Associated Issues Room change:
OEDK 104
Last Day of Classes!
Mon. 04/26/10      
Wed. 04/28/10 Practice day 1 PM in OEDK For testing and debugging
Fri. 04/30/10 Practice day 1 PM in OEDK For testing and debugging
Mon. 05/03/10 Demo Day! 1 PM in OEDK Final Project must be fully operational.
05/05/10 Last day of exams Due at NOON (5/5/10) Final Project: Milestone 2

© 2010 by Stephen Wong