CS680 - OO Design and Programming, Fall 2008


Description:
Object-oriented techniques for the design and development of software. Students will develop a series of moderate sized programs in C++ and Java and then design and implement a more substantial project in small teams.

In Fall 2008, all OO programming will be in Java. The course will cover basics of database systems sufficient to allow us to persist the objects in a relational database.

Pre-requisites:

B or better for one course on the approved list (CS636, CS637, CS639, and CS651) and permission of the instructor. Programming expertise in Java of the level used in CS310 (advanced data structures).

Useful background: CS630 (first course in database systems), experience with ant, eclipse, JUnit.

Professor: Betty O’Neil  (eoneil at cs.umb.edu)
Class meets TuTh  5:30-6:45pm, in M-1-420

Textbooks:
Object Oriented Software Engineering Using UML, Patterns, and Java, Second Edition,
 by Bernd Bruegge and Allen Dutoit, Prentice Hall, 2004, ISBN 0130471100, available for example at Amazon or the bookstore.

Head First Design Patterns, by Eric Freeman and Elizabeth Freeman, O'Reilly, 2004,ISBN 0-596-00712-4, available for example at Amazon or the bookstore.

If you're less than a database expert, or no longer have your database text:, get this inexpensive but good database guide:
Fundamentals of SQL Programming,by Ramon Mata-Toledo and Pauline Cushman, Schaum's Outline/McGraw Hill, ISBN 0071359532, available for example at Amazon.

If you're less than a Java expert, or don't know Swing basics:
Core Java 2, Volume I--Fundamentals, by Cay Horstmann and Gary Cornell, Sun/Prentice Hall, 7th or 8th edition, ISBN 0-13-148202-5 or 0-13-235476-4, at Amazon

Syllabus

Getting Ready:
Check out your development PC: my old PC, a 3Ghz Pentium 4 Windows XP Professional system with 1.5GB of memory, is fine.  Laptops are particularly useful, since you can bring them in and get help when needed.

First week (Sept. 2-4):
Get a UNIX account for cs680 by running apply, even if you already have a UNIX account here.
Follow the Java/ant setup instructions for UNIX and your home PC.

Sept. 9-11: hw1 is due Thursday. Note new refactoring links below. hw2 is available.
Note: make sure you are receiving class email, by checking your email at cs.umb.edu, or setting up a .forward file. Join our Google group: see the invitation in your cs.umb.edu email and follow its directions.
Sept. 30: notes on object identity and equality  handout on JUnit
Oct. 7: handout on Threads and Futures code, Actors
Oct 9: Use cases
Oct 14: JDBC, Pizza1 project (handout)
Oct. 28: Midterm review: Midterm Reading Guide
Oct. 30: Midterm exam. Open books, notes, handouts, solutions
Nov. 4: ORM slides
Nov. 6: handout Hibernate Intro
Dec. 2: See below under hw7
Dec. 4, 9: F&F Chap 5, 6, 7: Singleton, Command, Adapter Patterns
Final Reading Guide


Homework and Programming Assignments

HW1 due Thurs, Sept. 11 Supplied project: pong (pong.zip) HW1 Solution pong1 (zip)
HW2 due Tues, Sept . 22 Supplied project: trainset (zip) HW2 Solution (zip) (Updated Oct. 12)
HW3 due Thurs., Oct. 9 HW3 Solution (zip)
HW4 due Monday, Oct. 20 Getting started on Databases HW4 Solution (zip)
HW5 due Sunday, Oct 26 Trainset MVC, Factory Methods, DI HW5 Solution (zip)
HW6 due Thurs, Nov. 13, except program due Sunday, Nov. 18. Hibernate, Game Project Design HW6 Solution (zip) (updated Nov. 20)
HW7: Multiuser Pong.  HW7 Notes
hw7a: Due Monday, Dec. 1, the Hibernate infrastructure. Solution: pong7a (zip) ClassDiagram
hw7b: Due Sunday,  Dec 7, the UI and proper threading for database actions
hw7b Communications Notes,
hw7b Communications Sequence Diagram, from class Tues., Dec. 2
Solution to hw7b: pong7b (zip)

Resources

Pizza1 project: pizza1 (zip) Intro Pizza1 setup handout
Pizza2 project: (Pizza1 using Hibernate) pizza2 (zip) Pizza2 Code handout
hibernate-address project: (One-table Hibernate project) hibernate-address (zip)

Java, ant, junit setup:  Java/ant setup instructions for UNIX and your home PC.

Refactoring:  Martin Fowler's Refactoring Resources From that site, Gene Garcia's list of code smells and corresponding refactorings from Fowler's book: SmellsToRefactoring

JUnit4: home at sourceforge.net  (read JUnit Cookbook, look at FAQ) DevX tutorial

JDBC: Sun tutorial Note that the API is part of the standard Java library

XMLXML tutorial at www.w3schools.com.  We need basic XML for ant now, and configuring Hibernate later. 

ant: Apache Ant documentation site.  Select the topic "Developing with Ant", and within that, "Hello World with Ant", the basic tutorial.

Oracle: We are using version 10g. Sign up (free) for Oracle Technical Network.   Access Oracle 10g documentation  Oracle error messages info and much more.

HSQLDB: We are using version 1.8. HSQLDB is an open-source in-memory DB with JDBC, great for unit testing.