CompSci 308
Fall 2015
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 early in the week on which they are listed.

Date Topic Recitation Readings Due
Game - Introduction and Basic Design Principles
Aug 25
Week 1
Course Introduction
What is GIT?
Small Refactorings
Bins Be a Better Programmer
Code Smells
JavaFX Architecture
Guide to Versioning Systems
Plan, Fri, Aug 27
Sep 1
Week 2
What is Design?

RPS OO in One Sentence
Refactoring: Extract Class
Complete, Fri, Sep 4
CellSociety - Basic Teamwork and Recognizing Good Design
Sep 8
Week 3
Team Meeting
GIT Practice
Open Closed Principle
Big Refactorings
Git: Branching and Merging
Analysis, Mon, Sep 7
Plan, Sat, Sep 12
Sep 15
Week 4
Inheritance Design
Browser Commonality Analysis
JavaFX GUI Resources
Isolating Locale-Specific Data
Basic, Sat, Sep 19
Sep 22
Week 5
Design Patterns
Peer Code Review Introduction to Design Patterns
Designing with Exceptions
Why Getters and Setters are Evil
Complete, Sun, Sep 27
SLogo - Advanced Teamwork and Design Strategies
Sep 29
Week 6
Designing APIs
Team Meeting
API Design Josh Bloch on API Design
Designing with Interfaces
JavaFX Properties and Bindings
Analysis, Wed, Sep 30
Oct 6
Week 7
Functional Programming:
A Progression of Steps
API Review Functional Programming in Java
Lambda Expression Tutorial
Why Lamba Expressions
Plan, Mon, Oct 5
Oct 13
Week 8
SOLID Design
Peer Code Review From STUPID to SOLID
Foundation Patterns
Big Ball of Mud
Basic, Sun, Oct 18
Oct 20
Week 9
"Advanced" Java Java Practice
Interview Panel
Enumerated Types
Oct 27
Week 10
What is a Game?
(and as a picture)
What is a Framework?
Design a Game Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Complete, Tue, Oct 27
VOOGASalad - Final Project: Putting it All Together
Nov 3
Week 11
Data Driven Design
Team Meeting Composition vs. Inheritance
Design to Accommodate Change
The Magic of Data Driven Design
Analysis, Mon, Nov 2
Team Choice, Tue, Nov 3
Nov 10
Week 12
User Interface Design
Future of Programming
Git: Undoing Changes
API Review
JUnit Test Infected
Don't Make Me Think

Why Software Sucks
Plan, Mon, Nov 10
Nov 17
Week 13
Programming Paradigms
Command Line Principles
Presentations Small Pieces, Loosely Coupled Basic, Wed, Nov 18
Demo, Mon, Nov 19
Nov 24
Week 14
Dec 1
Week 15
Open Source
  Cathedral and Bazaar
Free Software Definition
ACM Code of Ethics
Complete, Sun, Dec 6
Dec 9
Final Project Demo     Final Demo, Wed, Dec 9
Analysis, Sun, Dec 13