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)
|
Assignment Due Date
(at beginning of class!)
DOES NOT INCLUDE VIDEO ASSIGNMENTS
|
Mon. 08/21/17 |
Lec01:
Administrivia, Getting started |
Lab01:
Software Installs, getting started with Eclipse and Building GUIs with
WindowBuilder |
Complete
your software installations BEFORE lab!
Sign up for Piazza (click link above) |
Wed. 08/23/17 |
Lec02:
GUI Building |
|
|
Fri. 08/25/17 |
Lec03:
Programming Paradigms |
|
|
|
|
|
|
Mon. 08/28/17 |
Lec04:
UML Diagrams
Lec05: UML continued, Source
Control & Ballworld Demos
|
Lab02:
Animation |
|
Wed. 08/30/17 |
Lec06:
HW01 review
Lec07: Designing a Ball |
|
HW01:
Simple GUI Program with Polymorphism |
Fri. 09/01/17 |
Lec08:
Connecting the Pieces |
|
|
|
|
|
|
Mon. 09/04/17 |
Labor Day Holiday -- No Class!
|
Labs as normal this week.
Lab03: MVC
Implementation |
|
Wed. 09/06/17 |
Lec09:
Composing Behaviors |
|
HW02:
Inheritance-based Ballworld |
Fri. 09/08/17 |
Lec10:
Faking out the GUI with Factories |
|
|
|
|
|
|
Mon. 09/11/17 |
Lec11:
Factories, cont. & Transforming How We Paint |
Lab04:
Transforming Shapes |
|
Wed. 09/13/17 |
Lec12:
Using Superclasses as Service Providers |
|
|
Fri. 09/15/17 |
Lec13:
Painting continued and Command-Driven Dispatching |
|
HW03:
Composition-based Ballworld |
|
|
|
|
Mon. 09/18/17 |
Lec14:
Command Dispatching |
Lab05:
Sending Commands |
|
Wed. 09/20/17 |
Visit from
Tubular Labs
Lec15:
Collisions |
|
|
Fri. 09/22/17 |
Lec16:
Collisions, continued...
Lec17: Ballworld Recap
Lec18: Debugging with Eclipse
and Visitors, revisited |
|
HW04:
Command-Driven FishWorld |
|
|
|
|
Mon. 09/25/17 |
Lec19:
Visitors... |
Lab06:
Collisions and Debugging |
|
Wed. 09/27/17 |
Visitors, continued...
|
|
|
Fri. 09/29/17 |
Lec20:
Extended Visitors |
|
|
|
|
|
|
Mon. 10/02/17 |
Lec21:
Extended Visitors Example - Self-balancing Trees |
Lab07:
Playing Music in Java |
HW05:
Command-dispatching Ballworld with Inter-ball Interactions |
Wed. 10/04/17 |
Lec22:
Extended Visitors Example, continued..., Music Project. |
|
|
Fri. 10/06/17 |
Lec23:
Insertion and Deletion Algorithms for Self-Balancing Trees. |
|
|
|
|
|
|
Mon. 10/09/17
Tues. 10/10/17 |
Midterm Recess: No
Classes! |
No labs this week! |
|
Wed. 10/11/17 |
Lec24:
Insertion and Deletion Algorithms for Self-Balancing Trees, continued...
Lec25: Remote Method
Invocation (RMI) |
|
|
Fri. 10/13/17 |
Lec26:
RMI continued... |
|
HW06:
ABC Music Player |
|
|
|
|
Mon. 10/16/17 |
Lec27:
RMI Stubs Everywhere! |
Lab08: Java
RMI |
|
Wed. 10/18/17 |
Lec28:
Generic Extended Visitors and Data Packets |
|
|
Fri. 10/20/17 |
Lec29:
Use Cases and ChatApp API Design |
|
HW07: Remote
Task Execution |
|
|
|
|
Mon. 10/23/17 |
Lec30:
Chat Program Interfaces
ChatApp API Proposal Presentations (Feedback Round) |
Lab09:
ChatApp Design |
Final Project Pair selection due |
Wed. 10/25/17 |
Lec31:
ChatApp Interfaces...
ChatApp API Proposal Presentations (Feedback Round)
Subgroup API proposals completed and documemented |
|
Full API
Proposal
Documentation complete and Presentations |
Fri. 10/27/17 |
Lec32:
ChatApp Design...
|
|
|
|
|
|
|
Mon. 10/30/17 |
Lec33:
ChatApp finalization
ChatApp API Proposal Presentations (Decision Round)
|
Lab10:
ChatApp Design, continued & Simple
Threads |
Feedback of ALL proposals due @ 11:59PM |
Wed. 11/01/17 |
Lec34:
ChatApp finalization, continued..
ChatApp API Proposal Presentations (Decision Round)
|
|
Final Vote on winning proposal due @ 11:59PM |
Fri. 11/03/17 |
Lec35:
Design Post-Mortem
|
|
Final Project Proposals due |
|
|
|
|
Mon. 11/06/17 |
Lec36:
Final Project
|
Lab11: Final
Project Design |
Student-arranged Testing
sessions TBA
|
Wed. 11/08/17 |
Lec37:
Game specifics discussion and Sequence Diagramming |
|
HW08: RMI Chat
Program |
Fri. 11/10/17 |
Lec38:
Final Project Milestone 1 prep |
|
|
|
|
|
|
Mon. 11/13/17 |
Lec39:
RMI Garbage-Collecting and Final Project Issues |
Lab12: Final
Project Design and Implementation |
|
Wed. 11/15/17 |
Lec40:
Mixed Data Dictionaries, WWJ Mapping Library and the
map package
Final Project API Proposal Presentations (Feedback Round) |
|
|
Fri. 11/17/17 |
Lec41:
Game Issues
Final Project API Proposal Presentations (Feedback
Round)
|
|
Final
Project: Milestone 1
Feedback of ALL proposals due @ 11:59PM |
|
|
|
|
Mon. 11/20/17 |
Lec42: Final
Project Development Issues
Final Project API Proposal Presentations (Decision
Round) |
Lab13: Final
Project Communciations Testing |
|
Wed. 11/22/17 |
Lec43: Final
Project Testing and Issues Discussion
Final Project API Proposal Presentations (Decision
Round) |
|
Final Vote on winning proposal due @ 11:59PM |
Thurs. 11/23/17 - Fri. 11/24/17 |
Thanksgiving Recess: No
Classes! |
|
|
|
|
|
|
Mon. 11/27/17 |
Lec44: Tips &
Traps and Team Work
|
Lab14: Final Project Testing |
|
Wed. 11/29/17 |
Lec45:
Lessons from Labs |
|
|
Fri. 12/1/17 |
Lec46: We
Made It! |
Last Day of Classes! |
|
|
|
|
|
TBA |
Testing session |
DH 3092 |
For testing and debugging |
TBA |
Testing session |
DH 3092 |
For testing and debugging |
TBA |
Testing session |
DH 3092 |
For testing and debugging |
TBA |
Testing session |
DH 3076 |
For testing and debugging |
TBA |
Testing session |
DH 3092 |
For testing and debugging |
Tues. 12/12/17
9:00 AM - 12:00 PM |
Demo Day! (Instructions) |
OEDK Classroom
(plus other OEDK rooms) |
Final Project must
be fully operational.
Operational testing will NOT be done after the demo time! |
Wed. 12/13/17 |
Final Project Code and Documentation Submission |
Due at 11:59 PM |
Final
Project: Milestone 2 |