| Week | Topics | Examples | Reading | Assignment | |
|---|---|---|---|---|---|
| Aug 27-31 | Intro to Java, intro to software design. First lecture slides, First lecture slides (black & white) Java crash course notes, slides Git setup Object Oriented Modeling (notes) (slides) Tic-tac-toe user stories created in class.  | 
                 
                 Circle.java CircleTest.java CircleCopy.java  | 
                 Horstmann Ch 1.1-1.6 Horstmann Ch 2.1-2.4  | 
                 Initial Assessment Survey | |
| Sep 3 | NO CLASS: Labor day | ||||
| Sep 5-7 | Object Oriented Modeling: part2 (slides), notes | CRC Cards for Tic Tac Toe | Horstmann Ch 2.5-2.8 | Homework 1 is posted | |
| Sep 9-21 | 
                     Practice in Object Oriented Modeling Review models designed in class Astract classes Exception Handling in Java Intro to Java SWING interface Java SWING event handling  | 
                  Quiz Software Project Requirements Review UML Diagram Question.java QuestionMultipleChoice.java TestQuestion.java BoardPosition.java IScoreBoard.java ScoreBoard.java Game.java EventDemo.java EventDemoLocal.java  | 
                     
                  
                      Horstmann Ch 6.5  | 
                  ||
| Sep 24-28 | (Sep 24) Review: class interface concept SWING action listeners (Sep 26) Inheritance (Sep 28) Polymorphism  | 
                  
                     Number.java NumberGUI.java Circle.java Cylinder.java TestCylinder.java Point2D.java Point3D.java TestPoint2DPoint3D.java  | 
                  Homework 2 is posted  | 
               ||
| Oct 1 | 
                     Icon interface, Movable shapes | 
                  
                     Example 1: Snowman.java, SnowmanDisplay.java Example 2: MeltingSnowman.java, SnowmanAnimation.java, MovableShape.java, ShapeIcon.java Example 3: Car.java, CarAnimation.java, RedCar.png  | 
                  |||
| Oct 3 | Guidelines for class design (notes) (slides) | 
                     Example 1: Day.java DayTester.java Example 2: Day.java DayTester.java Example 3: Day.java DayTester.java  | 
                  Horstmann Ch 3 | ||
| Oct 5 | Unit testing | 
                     Example: Day.java DayTest.java Write a test class for the Baloon class Download Balloon.java and run your tests.  | 
                  Horstmann Ch 3 | Homework 3 is posted | |
| Oct 8 | Unit testing 2 | Updated Balloon.java. | Horstmann Ch 3 | ||
| Oct 10 | Bank Account Simulation | Interface | |||
| Oct 12 | 
                     Custom packages and jar files Bank account testing continued  | 
                  
                     User.java Student.java PackageTest.java Updated Interface source set_classpath.sh bankAccount.jar  | 
                  |||
| Oct 15 | Design patterns (notes). | 
                  Board Iterator Const Position Board Iterator  | 
                  Horstmann Ch 5 | ||
| Oct 17 | Midterm exam | ||||
| Oct 19 | Iterator Design Pattern (continued) | 
                     Book Shelf Iterator Iterable Book Shelf  | 
                  Horstmann Ch 5 | ||
| Oct 22 | Midterm Break | ||||
| Oct 24 | 
                     Group Project Project ideas Observer Pattern Example (using bank account siumulation) Java docs  | 
                  Observer Pattern | Homework 4 is assigned (group project) | ||
| Oct 26 | Decorator Pattern (using slides/notes from Oct 15). Example (using bank account siumulation) Java docs | Decorator Pattern | |||
| Oct 29 | Strategy and Factory Patterns | 
                     Strategy Example (Shopping Cart) Factory Example (Shopping Cart)  | 
                  |||
| Oct 31 | 
                      Serializable objects Requirements review  | 
                  Serializable Bank Account | Ch 7 | Requirements revision | |
| Nov 2 | Design Artifacts, Designing for requirements | ||||
| Nov 5 | Guest lecture | Project design assigned | |||
| Nov 7 | SOLID Design Principles | ||||
| Nov 9 | 
                     Finish SOLID Principles Discuss "conceptual integrity" Communication games Team work with GIT  | 
                  ||||
| Nov 12 | In class work on group project design | Group project class implementation/unit tests assigned | |||
| Nov 14 | SOLID exercises | DIP ISP  | 
                  Peer evaluation assigned | ||
| Nov 16 | DesignPatterns:Singleton and Template patterns | Singleton | |||
| Nov 19 | Multi-threading in Java | 
                    Runnable Thread  | 
                |||
| Nov 21-23 | Thanksgiving Break | ||||
| Nov 26 | Client Server Applications | 
                   Serializable Text Message JSON Text Message  | 
                |||
| Nov 28 | Group Project work | ||||
| Nov 30 | Basic Chat application: iterative design improvements | 
                   Server reads one message from each client Server reads many messages from each client Basic Chat  | 
                |||
| Dec 3 | Basic chat improvmememtns, Chat application with GUI | 
                   Improved Basic Chat GUI Chat  | 
                |||
| Dec 5 | Group Project work | ||||
| Dec 7 | Group Project Presentations: Video Poker, Snake, Sliding Puzzle | ||||
| Dec 10 | Group Project Presentations | ||||
| Dec 12 | FINAL EXAM: 12:00pm - 1:50pm. | ||||