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
Inheritance
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
GUIs
Pair Programming
TDD JavaFX GUI Resources
Isolating Locale-Specific Data
JUnit Test Infected
Basic, Thu, Sep 18
Sep 22
Week 5
Code Review
Exceptions
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
Code Review Reflection
Generics
Annotations
 
Oct 20
Week 9
Advanced Java
More Design Patterns
Advancing Examples Foundation Patterns
Designing a Document Editor
Stable Abstractions Principle
Complete, Sat, Oct 25
Oct 27
Week 10
What is a Game?
What is a Framework?
Design a Game The Structure of Games
Introducing OO Frameworks
Design Patterns in Games
Analysis, Thu, Oct 30
Team Choice, Sun, Nov 2
VOOGASalad - Final Project: Putting it All Together
Nov 3
Week 11
Team Meeting
Design Ideas
Peer API Review Design to Accommodate Change
Composition vs. Inheritance
Reuse and Pluggable Design
Plan, Thu, Nov 6
Nov 10
Week 12
Future of Programming
Programming Paradigms
Exploring Languages    
Nov 17
Week 13
Open Source
Command Line Principles
    Basic, Mon, Nov 17
Revised Plan, Thu, Nov 20
Nov 24
Week 14
Presentations
THANKSGIVING
    Demo, Mon, Nov 24
Dec 1
Week 15
Professionalism
Course Review
  Commandments of Computer Ethics
ACM Code of Ethics
IEEE Code of Ethics
Complete, Sun, Dec 7
Sunday
Dec 14
2-5pm
Final Project Demo     Final Demo, Sat, Dec 13
Analysis, Sun, Dec 14