CompSci 308
Spring 2013
Software Design and Implementation

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
Due: Springies, Part 1.5

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
Classwork: Test-First Challenge

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