| COMP 310 
		 Spring 2010
 | Advanced Object-Oriented Programming and Design | 
	
		|        | 
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 rice.edu) 
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. 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