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 Comp504, 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/24/15 |
Lec01:
Administrivia, Getting started |
Lab01:
Software ls, getting sInstaltarted with Eclipse and Building GUIs with WindowBuilder |
Complete
your software installations BEFORE lab! |
Wed. 08/26/15 |
Lec02:
GUI Building |
|
|
Fri. 08/28/15 |
Lec03:
Programming Paradigms |
|
|
|
|
|
|
Mon. 08/31/15 |
Lec04: UML Diagrams
Lec05: UML continued, Source Control &
Ballworld Demos |
|
|
Wed. 09/02/15 |
Lec06: HW01 review
Lec07:
Designing a Ball |
Lab02:
Animation |
HW01: Simple GUI Program
with Polymorphism
COMM01: Programming Paradigms
Comparison |
Fri. 09/04/15 |
Lec08: Connecting the Pieces |
|
Comm01 Peer Reviews due |
|
|
|
|
Mon. 09/07/15 |
Labor Day Holiday --
No Class! |
Labs as normal this week. |
|
Wed. 09/09/15 |
Lec09: Composing Behaviors |
Lab03: MVC Implementation |
HW02: Inheritance-based Ballworld
COMM02: Composites in the
Real World |
Fri. 09/11/15 |
Lec10: Faking out the GUI with Factories |
|
Comm02 Peer Reviews due |
|
|
|
|
Mon. 09/14/15 |
Lec11:
Factories, cont. & Transforming How We Paint |
Lab04:
Transforming Shapes |
|
Wed. 09/16/15 |
Lec12: Using
Superclasses as Service Providers |
|
|
Fri. 09/18/15 |
Lec13: Painting continued and Command-Driven Dispatching |
|
HW03: Composition-based Ballworld
COMM03: Inheritance vs. Composition |
|
|
|
Comm03 Peer Reviews due by Sunday |
Mon. 09/21/15 |
Lec14:
Command Dispatching |
Lab05:
Sending Commands |
|
Wed. 09/23/15 |
Lec15:
Collisions |
|
|
Fri. 09/25/15 |
Lec16:
Collisions, continued...
Lec17:
Ballworld Recap
Lec18:
Debugging with Eclipse and Visitors, revisited |
|
HW04:
Command-Driven FishWorld
COMM04: Commands in the Real World |
|
|
|
Comm04 Peer Reviews due by Sunday |
Mon. 09/28/15 |
Lec19:
Visitors...
Presentation by
Tubular Labs |
Lab06:
Collisions and Debugging |
|
Wed. 09/30/15 |
Visitors, continued... |
|
|
Fri. 10/02/15 |
Lec20: Extended Visitors
|
|
|
|
|
|
|
Mon. 10/05/15 |
Lec21: Extended Visitors Example - Self-balancing Trees
|
Lab07:
Playing Music in Java |
HW05: Command-dispatching Ballworld with Inter-ball Interactions
COMM05: Modeling Abstract Behavior |
Wed. 10/07/15 |
Lec22:
Extended Visitors Example, continued..., Music Project. |
|
Comm05 Peer Reviews due |
Fri. 10/09/15 |
Lec23:
Insertion and Deletion Algorithms for Self-Balancing Trees. |
|
|
|
|
|
|
Mon 10/12/15
Tues. 10/13/15 |
Midterm Recess:
No Classes! |
No Labs This Week! |
|
Wed. 10/14/15 |
Lec24:
Insertion and Deletion Algorithms for Self-Balancing Trees, continued...
Lec25:
Remote Method Invocation (RMI) |
|
|
Fri. 10/16/15 |
Lec26:
RMI continued... |
|
HW06: ABC Music Player
Comm06: Balancing Flexibility and
Extensibility Against Security |
|
|
|
Comm06 Peer Reviews due by Sunday |
Mon. 10/19/15 |
Lec27:
RMI Stubs Everywhere! |
Lab08:
Java RMI |
|
Wed. 10/21/15 |
Lec28:
Generic Extended Visitors and Data Packets |
|
|
Fri. 10/23/15 |
Lec29: Use Cases and
ChatApp API Design |
|
|
|
|
|
|
Mon. 10/26/15 |
Lec30:
Chat Program Interfaces |
Lab09:
ChatApp Design |
HW07: Remote Task
Execution
Comm07: Scenarios for
Extended Visitors |
Wed. 10/28/15 |
Lec31:
ChatApp Interfaces...
Subgroup API proposals completed and documemented |
|
Comm07 Peer Reviews due |
Fri. 10/30/15 |
Lec32:
ChatApp Design...
Full API Proposal Documentation complete and Presentations |
|
|
|
|
|
|
Mon. 11/02/15 |
Lec33:
ChatApp finalization
Revised Proposal Presentations and Final Voting |
Lab10:
ChatApp Design, continued & Simple
Threads |
Round 1 Proposal Presentations |
Wed. 11/04/15 |
Lec34:
ChatApp finalization, continued..
Revised Proposal Presentations and Final Voting, continued... |
|
|
Fri. 11/06/15 |
Lec35: Design Post-Mortem |
|
Round 2 Proposal Presentations |
|
|
|
|
Mon. 11/09/15 |
Lec36:
Final Project |
Lab11:
Final Project Design |
Testing sessions in
DH3092:
Mon. 11/9/15 2:00 PM - 5:00 PM
Tues. 11/10/15 9:00 AM - 12:00 PM |
Wed. 11/11/15 |
Lec37:
Game specifics discussion and
Sequence Diagramming |
|
Project Pair selection due
Testing sessions in DH3092:
Wed. 11/11/15: 3:00 - 5:30 PM
Thurs. 11/12/15 1:00 PM - 5:30 PM |
Fri. 11/13/15 |
Lec38:
Final Project Milestone 1 prep |
|
|
|
|
|
|
Mon. 11/16/15 |
Lec39:
RMI Garbage-Collecting and Final Project Issues |
Lab12:
Final Project Design and Implementation |
HW08: RMI Chat
Program
Comm08: Architectures in Perspective Project Proposals due in Piazza |
Wed. 11/18/15 |
Lec40:
Mixed Data Dictionaries, WWJ Mapping
Library and the map package |
|
|
Fri. 11/20/15 |
Lec41: Game Issues |
|
Final Project Proposal Presentations |
|
|
|
Comm08 Peer Reviews due (Sat.) |
Mon. 11/23/15 |
Lec42: Final Project Development Issues |
Lab13:
Final Project Communciations Testing |
|
Wed. 11/25/15 |
Lec43: Final Project Testing and Issues Discussion |
|
Final
Project: Milestone 1
Comm09: Peer-review
of Comm08 |
Fri. 11/27/15 |
Thanksgiving Recess -- No
Class! |
|
|
|
|
|
|
Mon. 11/30/15 |
Lec44: Tips & Traps and Team Work |
Lab14: Final
Project testing |
|
Wed. 12/02/15 |
Lec45: Lessons from Labs |
|
|
Fri. 12/04/15 |
Lec46:
We Made It! |
Last Day of Classes! |
|
|
|
|
|
Tues. 12/8/15
1:30 PM - 5:30 PM |
Testing session
(shared with Comp310) |
DH 3092 |
For testing and debugging |
Wed. 12/9/15
9:00 AM - 1 :00 PM
3:00 PM - 5:30 PM |
Testing session
(shared with Comp310) |
DH 3092 |
For testing and debugging |
Thurs. 12/10/15
9 AM - 12:00 PM |
Testing session
(shared with Comp310) |
DH 3092 |
For testing and debugging |
Fri. 12/11/15
9:00 AM - 12:00 PM |
Testing session
(shared with Comp310) |
DH 3076 |
For testing and debugging |
Fri.
12/11/15
2:00 PM - 5:00 PM |
Demo Day!
(Instructions) |
OEDK Classroom and Computer Lab |
Final Project must be fully operational.
Operational testing will NOT be done after the demo time! |
Wed. 12/16/15 |
Final Project Code and
Documentation Submission |
Due at 11:59 PM |
Final Project: Milestone 2 |