CompSci 308
Fall 2014
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?
What is Design?
Small Refactorings
Bins OO in One Sentence
Code Smells

Guide to Versioning Systems
Plan, Wed, Aug 27
Sep 1
Week 2
Design Principles
Large Refactorings
Roulette Inheritance
Commonality Analysis
Open Closed Principle
Complete, Thu, Sep 4
Analysis, Sun, Sep 7
CellSociety - Basic Teamwork and Recognizing Good Design
Sep 8
Week 3
Team Meeting
GIT Team Workflow
Inheritance Hueristics
GIT Immersion Git: Branching and Merging
Liskov Substitution Principle
Why Getters and Setters are Evil
Plan, Wed, Sep 10
Sep 15
Week 4
Pair Programming
TDD JavaFX GUI Resources
Isolating Locale-Specific Data
JUnit Test Infected
Basic, Thu, Sep 18
Sep 22
Week 5
Code Review
Design Patterns
Arithmetica Extreme Programming Explained
Introduction to Design Patterns
Dependency Inversion Principle
Complete, Thu, Sep 25
Analysis, Sun, Sep 28
SLogo - Advanced Teamwork and Design Strategies
Sep 29
Week 6
Team Meeting
Designing APIs
Browser Josh Bloch on API Design
Designing with Interfaces

Interface Segregation Principle
JavaFX Properties and Bindings
Plan, Sat Oct 4
Oct 6
Week 7
Functional Programming TagCloud Lambda Expression Tutorial
Why Lamba Expressions
Functional Programming in Java
Basic, Fri, Oct 10
Oct 13
Week 8
FALL BREAK   Reflection
Oct 20
Week 9
Advanced Java
More Design Patterns
  Foundation Patterns
Designing a Document Editor
Stable Abstractions Principle
Complete, Sat, Oct 25
Oct 27
Week 10
      Analysis, Thu, Oct 30
VOOGASalad - Final Project: Putting it All Together
Nov 3
Week 11
Team Meeting
Nov 10
Week 12
Nov 17
Week 13
      Revise Plan
Nov 24
Week 14
Dec 1
Week 15
Dec 14
Final Project Demo     Demo Preparation