COMP 310
Fall 2014

Advanced Object-Oriented Programming and Design

Home  Info  Owlspace   Java Resources  Eclipse Resources  Piazza

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

New! See Comp310 in action!  (See previous years too!

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

CLASS TIMES:  MWF 1:00 PM - 1:050 PM  (DH 1064)

LAB TIMES:    (OEDK 112 -- Computer Lab)  Please go fill out both the Lab Times and Initial Experience surveys right away! 

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!   

General assignment requirements and instructions on how to use Subclipse/Subversion to turn-in your assignements.



Labs (Tues & Wed.)

Assignment Due Date 
(at beginning of class!)

Mon. 08/25/14 Lec01: Administrivia, Getting started Lab01: Software Installs, getting started with Eclipse and Building GUIs with WindowBuilder Complete your software installations BEFORE lab!
Wed. 08/27/14 Lec02: GUI Building
Fri. 08/29/14 Lec03: Programming Paradigms    
Mon. 09/01/14 Labor Day Holiday -- No Class! Labs as normal this week.  
Wed. 09/03/14 Lec04: UML Diagrams
Lec05: UML continued, Source Control & Ballworld Demos
Lab02: Animation HW01: Simple GUI Program with Polymorphism
Fri. 09/05/14 Lec06: HW01 review
Lec07:  Designing a Ball 
Mon. 09/08/14 Lec08: Connecting the Pieces Lab03: MVC Implementation  
Wed. 09/10/14 Lec09: Composing Behaviors   HW02: Inheritance-based Ballworld
Fri. 09/13/14 Lec10: Faking out the GUI with Factories
Mon. 09/15/14 Lec11: Factories, cont. & Transforming How We Paint Lab04: Transforming Shapes  
Wed. 09/17/14 Lec12:  Using Superclasses as Service Providers    
Fri. 09/19/14 Lec13: Painting continued and Command-Driven Dispatching   HW03: Composition-based Ballworld 
Mon. 09/22/14 Lec14: Command Dispatching Lab05: Sending Commands  
Wed. 09/24/14 Lec15: Collisions    
Fri. 09/26/14 Lec16:  Collisions, continued...
Lec17: Ballworld Recap
Lec18: Debugging with Eclipse and Visitors, revisited
  HW04: Command-Driven FishWorld
Mon. 09/29/14 Lec19: Visitors...
Palantir Info Session @ 6PM in DH1064
Lab06: Collisions and Debugging  
Wed. 10/01/14 Visitors, continued...
Visit from Delphix
Fri. 10/03/14 Lec20: Extended Visitors    
Mon. 10/06/14 Visit from Tubular Labs (more info)
Lec21: Extended Visitors Example - Self-balancing Trees
 Lab07: Playing Music in Java HW05: Command-dispatching Ballworld with Inter-ball Interactions
Wed. 10/08/14 Lec22: Extended Visitors Example, continued..., Music Project.    
Fri. 10/10/14 Lec23: Insertion and Deletion Algorithms for Self-Balancing Trees.    
Mon 10/13/14
Tues. 10/14/14
Midterm Recess:  No Classes! No Labs This Week!  
Wed. 10/15/14 Lec24: Insertion and Deletion Algorithms for Self-Balancing Trees, continued...
Lec25: Remote Method Invocation (RMI)
Fri. 10/17/14 Lec26: RMI continued... HW06: ABC Music Player
Mon. 10/20/14 Lec27: RMI Stubs Everywhere! Lab08: Java RMI  
Wed. 10/22/14 Lec28: Generic Extended Visitors and Data Packets    
Fri. 10/24/14 Lec29: Use Cases and ChatApp API Design    
Mon. 10/27/14 Lec30: Chat Program Interfaces Lab09: ChatApp Design HW07: Remote Task Execution
Wed. 10/29/14 Lec31: ChatApp Interfaces...
Subgroup API proposals completed and documemented
Fri. 11/31/14 Lec32: ChatApp Design...
Full API Proposal Documentation complete and Presentations
Mon. 11/03/14 Lec33:  ChatApp finalization
Full API Proposal Documentation complete and Presentations, continued...
Lab10: ChatApp Design, continued & Simple Threads
Wed. 11/05/14 Lec34:  ChatApp finalization, continued.. 
Revised Proposal Presentations and Final Voting
  Testing session TBA
Fri. 11/07/14 Lec35: Design Post-Mortem    
Mon. 11/10/14 Lec36: Final Project Lab11: Final Project Design  
Wed. 11/12/14 Lec37: Game specifics discussion and Sequence Diagramming   Project Pair selection due
Fri. 11/14/14 Lec38: Final Project Milestone 1 prep HW08:  RMI Chat Program 
Project Proposals due in Piazza
Mon. 11/17/14 Lec39: RMI Garbage-Collecting and Final Project Issues Lab12: Final Project Design and Implementation  
Wed. 11/19/14 Lec40: Mixed Data  Dictionareis, WWJ Mapping Library and the map package    
Fri. 11/21/14 Lec41: Game Issues   Final Project: Milestone 1
Mon. 11/24/14 Lec42: Final Project Development Issues Lab13: Final Project Communciations Testing
Wed. 11/26/14 Lec43: Final Project Testing and Issues Discussion
Fri. 11/28/14 Thanksgiving Recess -- No Class!
Mon. 12/0113 Lec44: Tips & Traps and Team Work Lab14:  Final Project testing
Wed. 12/03/14 Lec45: Lessons from Labs
Fri. 12/05/14 Lec46: We Made It! Last Day of Classes!  
Tues. 12/09/14
2:00 PM - 6:00 PM
Testing session (shared with Comp404) DH 3092 and DH 1044 For testing and debugging
Thurs. 12/11/14
9:00 AM - 12:00 PM
Testing session (shared with Comp404) DH 3092 and DH 3076 For testing and debugging
Fri. 12/12/14
2:00 PM - 6:00 PM
Testing session (shared with Comp404) DH 3092 and DH 3076 For testing and debugging
Sat. 12/13/14
9:00 AM - 6:00 PM
Testing session (shared with Comp404) DH 3093, DH 3076, DH 1049 and DH 1044 For testing and debugging
Sun. 12/14/14
2:00 PM - 5: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/17/14 Final Project Code and Documentation Submission Due at 11:59 PM  Final Project: Milestone 2

© 2014 by Stephen Wong