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. 
	
		
		Date
		 | 
		
		Lecture
		 | 
		
		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 |