CompSci 108
Fall 2011
The Software Studio

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
Aug 28
Aug 29 Overview
Out: Bins
Aug 30 Due: Bins, Part 1
Aug 31 Refactoring, the Basics
Sep 01  
Sep 02 Refactoring, Abstraction
Out: PICASSA
Sep 03
Inheritance Inheritance
Commonality Analysis
Liskov Substitution Principle
Sep 04 Due: Bins, Part 2
Sep 05 Inheritance
Sep 06
Sep 07 Refactoring Practice, Roulette
Due: PICASSA, Part 1 Draft
Sep 08  
Sep 09 Factory Design Discussion
Sep 10  
Design Patterns Design Patterns
Single Responsibility Principle
Sep 11 Due: PICASSA, Part 1 Final
Sep 12 Introduction to Patterns
Sep 13
Sep 14 Guest: Aaron Patzer,
Mint.com
Sep 15 Due: PICASSA, Part 2 Draft
Sep 16 Code Review, The Basics
Sep 17
Design Heuristics
and Teamwork
Test Infected
Getters and Setters, Extending
Guide to Versioning Systems
Sep 18
Sep 19 Code Review, Tell Don't Ask
Sep 20
Sep 21 Testing and Debugging
Sep 22  
Sep 23 Guest: Ryan Echternacht,
Capitalogix
Out: TIVOO
Sep 24  
APIs API Design
Framework Design Guidelines
Module Decomposition Criteria
Sep 25 Due: PICASSA, Final
Sep 26 Designing APIs
Sep 27
Sep 28 TIVOO Technicalities
Sep 29 Due: TIVOO, TA Meeting
Sep 30 Team Meetings
Oct 01  
GUIs User Interfaces that Swing
Using Swing Components
Isolating Locale-Specific Data
Dependency Inversion Principle
Oct 02  
Oct 03 GUIs and Events
Due: TIVOO, Part 1
Oct 04
Oct 05 Code Review
Oct 06  
Oct 07 Secrets Revealed
Due: TIVOO, TA Meeting
Oct 08 Fall Break
Designing for
Reusability
Reuse and Pluggable Design
Interface Segregation Principle
Debug It!
Oct 09 Fall Break
Oct 10 Fall Break
Oct 11 Fall Break
Oct 12 Designing Reusable Components
Oct 13 Due: TIVOO, Part 2
Oct 14 Debugging and Exceptions
Oct 15
System-wide
Design
Model-View-Controller: General
Model-View-Controller: Design Pattern
Stable Abstractions Principle
Oct 16
Oct 17 Designing with MVC
Oct 18 Due: TIVOO, TA Meeting
Oct 19

Guest: Benjamin Wolf,
Bloomberg L.P. Financial

Oct 20 Due: TIVOO, Final Code
Oct 21 Team Review
Oct 22  
Making Games
Flexible
The Game Loop
Using Keys
Oct 23 Due: TIVOO, Program Documentation
Oct 24 Guest: Tom Carbone,
Florida Interactive Entertainment Academy
Oct 25  
Oct 26 TIVOO API Presentations
Oct 27  
Oct 28 Game Development
Oct 29
Advanced Java Design to Accommodate Change
Reflection
Generics
Annotations
Exceptions
Designing with Interfaces
Enumerated Types
Oct 30
Oct 31 Data Driven Design, Reflection
Due: Build-a-Game Demo
Nov 01
Nov 02 Generics, Annotations, Exceptions
Nov 03  
Nov 04 Organization: Interfaces, Classes, Enums
Nov 05  
Designing the
Project
Introducing OO Frameworks
Use of Heuristics in Design
Designing a Document Editor
Nov 06 Due: Build-a-Game Final
Nov 07 Issues Designing a Game Engine
Due: Build-a-Game Analysis
Nov 08  
Nov 09 Team Design Meetings
Due: VOOGA Individual API
Nov 10  
Nov 11 Collective Team Design Meetings
Due: VOOGA Team API
Nov 12
From Principles
to Patterns
Foundation Patterns Nov 13
Nov 14 VOOGA API Presentations
Nov 15
Nov 16 Design Patterns Revisited
Nov 17  
Nov 18 Team Meetings
Nov 19  
Open Source
Software
Free Software Definition
Cathedral and Bazaar

Homesteading the Noosphere
Nov 20  
Nov 21 VOOGA Demos
Nov 22  
Nov 23 Thanksgiving Break
Nov 24 Thanksgiving Break
Nov 25 Thanksgiving Break
Nov 26 Thanksgiving Break
Evaluating Design   Nov 27 Thanksgiving Break
Nov 28 Build-a-Game --- in class!
Nov 29
Nov 30 Team Meetings
Due: VOOGA Individual Revised API
Dec 01  
Dec 02 VOOGA API Presentations
Dec 03  
Looking Forward ACM Code of Ethics
IEEE Code of Ethics
Ten Commandments of Computer Ethics
Dec 04  
Dec 05 Course Evaluation
Dec 06  
Dec 07 When Design Goes Wrong
Dec 08  
Dec 09 The Future
Dec 10 Reading Period
    Dec 11 Reading Period
Dec 12 Reading Period
Dec 13
Dec 14  
Dec 15  
Dec 16  
Dec 17 Final Project Demo, 2-5pm