The exact order and details of these topics is subject to change during the semester based on the pace needed, but we will try to set them at least two weeks in advance. As much as possible, materials discussed in class will be posted here in case you miss class.
Readings should be completed before the day on which they are listed.
| Topic | Reading | Day | Assignment |
|---|---|---|---|
|
Refactoring to Design |
OO in One Sentence Open Closed Principle Code Smells |
||
| Jan 09 |
Overview Out: Bins |
||
| Jan 10 | Due: Bins, Critique | ||
| Jan 11 |
Refactoring, Introduction Classwork: Bins Out: Build A Game |
||
| Jan 12 | |||
| Inheritance |
Inheritance Commonality Analysis Liskov Substitution Principle |
Jan 13 | |
| Jan 14 | Towards Inheritance Bins Refactored |
||
| Jan 15 | |||
| Jan 16 | Inheritance | ||
| Jan 17 | |||
| Jan 18 | Refactoring, Practice Classwork: Roulette Due: Build A Game Out: Springies |
||
| Jan 19 | |||
| Working in Teams |
Design Patterns Single Responsibility Principle Guide to Versioning Systems |
Jan 20 | |
| Jan 21 | No Class: MLK, Jr. Day | ||
| Jan 22 | Due: Springies, Part 1 | ||
| Jan 23 | Designing Inheritance | ||
| Jan 24 | |||
| Jan 25 | Guests: Joe Levy, Microsoft Nicole Jacque, McCrae Linton, and Rajit Shinh, Apple Classwork: GIT Setup |
||
| Jan 26 | |||
| Testing and Debugging |
Test Infected Extreme Programming Explained Debug It! |
Jan 27 | |
| Jan 28 | No Class: Out Sick | ||
| Jan 29 | |||
| Jan 30 | Guest: John Bley, Chief Architect of BlueStripe Software |
||
| Jan 31 | |||
| Feb 01 | Team Technology |
||
| Feb 02 | |||
| Catch-up | Feb 03 | ||
| Feb 04 | Design Patterns Out: Springies, Part 3 |
||
| Feb 05 | |||
| Feb 06 | eXtreme Programming | ||
| Feb 07 | Due: Springies, Part 2 (final draft) | ||
| Feb 08 | Pair Programming |
||
| Feb 09 | |||
| APIs | API Design Designing with Interfaces Dependency Inversion Principle Exceptions |
Feb 10 | |
| Feb 11 | Code Review Due: Springies, Part 3 (first draft) |
||
| Feb 12 | |||
| Feb 13 | Design Exercise | ||
| Feb 14 | Due: Springies, Part 3 (final draft) | ||
| Feb 15 | API Design Out: SLogo |
||
| Feb 16 | Due: Springies, Analysis | ||
| GUIs | User Interfaces that Swing Using Swing Components Isolating Locale-Specific Data |
Feb 17 | |
| Feb 18 | Springies Design Review Due: SLogo, Individual Design (in class) |
||
| Feb 19 | |||
| Feb 20 | GUIs with Swing | ||
| Feb 21 | Due: SLogo, Team Design | ||
| Feb 22 | API Design Review Out: SLogo, Part 2, First Draft |
||
| Feb 23 | |||
| Advanced Java | Reflection Generics Annotations Enumerated Types Java I/O |
Feb 24 | |
| Feb 25 | Advanced Java Topics | ||
| Feb 26 | Due: SLogo, Part 2, First Draft | ||
| Feb 27 | Advanced Java Examples: Generics, Enums | ||
| Feb 28 | |||
| Mar 01 | GIT Workshop Out: SLogo, Part 3 |
||
| Mar 02 | |||
| Making Software Flexible |
Interface Segregation Principle | Mar 03 | Due: SLogo, Part 2, Revised Draft |
| Mar 04 | Code Review | ||
| Mar 05 | |||
| Mar 06 | Guest: Alan Davidson | ||
| Mar 07 | |||
| Mar 08 | No Class: Traveling Due: SLogo, Part 2, Final Draft |
||
| Mar 09 | Spring Break | ||
| Spring Break | Technical Debt or Call Option The Craftsmen vs. the Scavengers Good Code Tells the Truth |
Mar 10 | Spring Break |
| Mar 11 | Spring Break | ||
| Mar 12 | Spring Break | ||
| Mar 13 | Spring Break | ||
| Mar 14 | Spring Break | ||
| Mar 15 | Spring Break | ||
| Mar 16 | Spring Break | ||
| Functional Programming |
Charming Python Why Functional Programming Matters Mapreduce |
Mar 17 | Spring Break |
| Mar 18 | Functional Principles | ||
| Mar 19 | |||
| Mar 20 | More Functional Examples | ||
| Mar 21 | Due: SLogo, Part 3, First Draft | ||
| Mar 22 | Lambda in Java 8 and Collections | ||
| Mar 23 | |||
| Designing Larger Projects |
The Structure of Games Introducing OO Frameworks Reuse and Pluggable Design |
Mar 24 | |
| Mar 25 | Design Exercise Due: SLogo, Part 3, Final Draft |
||
| Mar 26 | |||
| Mar 27 | What is a Game?
(as a picture) Due: SLogo, Wrap-up |
||
| Mar 28 | |||
| Mar 29 | Game Engine Design Due: Game Peer Review Out: VOOGA |
||
| Mar 30 | |||
| Starting the Project |
Design to Accommodate Change The Magic of Data Driven Design Design Patterns in Game Engines |
Mar 31 | Due: VOOGA, Team Preferences |
| Apr 01 | Team Design Meetings | ||
| Apr 02 | |||
| Apr 03 | Project Logistics: Github Workflow, Pull Requests, Eclipse and Git |
||
| Apr 04 | |||
| Apr 05 | API Review | ||
| Apr 06 | |||
| From Patterns to Principles |
Foundation Patterns Designing a Document Editor |
Apr 07 | Due: VOOGA, Inital API |
| Apr 08 | VOOGA API Presentations Due: VOOGA, Initial Implementation |
||
| Apr 09 | |||
| Apr 10 | VOOGA API Presentations | ||
| Apr 11 | |||
| Apr 12 | Design Patterns Revisited | ||
| Apr 13 | |||
| Open Source Software |
Free Software Definition Cathedral and Bazaar Homesteading the Noosphere |
Apr 14 | |
| Apr 15 | Team Meetings Due: VOOGA, Inital Implementation |
||
| Apr 16 | |||
| Apr 17 | Repository Review | ||
| Apr 18 | |||
| Apr 19 | Build-a-Game --- during class! Really Due: VOOGA, Initial Implementation! |
||
| Apr 20 | |||
| Path to the Profession |
ACM Code of Ethics IEEE Code of Ethics Ten Commandments of Computer Ethics |
Apr 21 | Due: VOOGA, Revised API |
| Apr 22 | Course Review | ||
| Apr 23 | |||
| Apr 24 | Moving on ... Due: VOOGA, Final Implementation |
||
| Apr 25 | Reading Period | ||
| Apr 26 | Reading Period | ||
| Apr 27 | Reading Period | ||
| Finals | Apr 28 | Reading Period Due: VOOGA, Example |
|
| Apr 29 | |||
| Apr 30 | Final Project Demo, 10am-12pm Due: VOOGA, Wrap-up |