CompSci 308
Fall 2016
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.

As decided by the class, deadlines are at 10am the morning after the given deadline. For example, if this calendar says a deadline is Sunday, it will be accepted until Monday morning at 10am.

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

RPS OO in One Sentence
Decomposition
Refactoring: Extract Class
Complete, Sun
CellSociety - Basic Teamwork and Recognizing Good Design
Sep 13
Week 3
Inheritance GIT for Teams
Team Meeting
Open Closed Principle
Inheritance
Big Refactorings
Analysis, Wed
Plan, Sat
Sep 20
Week 4
GUIs
Exceptions
Browser Designing with Exceptions
JavaFX GUI Resources
Isolating Locale-Specific Data
Team Contract, Tue
Basic, Sun
Sep 27
Week 5
Interfaces
Inheritance Design
Peer Code Review Introduction to Design Patterns
Why Java Interfaces
Commonality Analysis
Team Report, Tue
Complete, Sun
SLogo - Advanced Teamwork and Design Strategies
Oct 4
Week 6
Design Patterns
Designing APIs
Team Meeting Josh Bloch on API Design
Designing with Interfaces
JavaFX Properties and Bindings
Analysis, Wed
Team Contract, Thu
Oct 11
Week 7
FALL BREAK Peer API Review Reflection
Enumerated Types
Generics
Regular Expressions
Plan, Thu
Oct 18
Week 8
Functional Programming
A Progression of Steps

Refactoring Practice Functional Programming in Java
Lambda Expression Tutorial
Why Lamba Expressions
Basic, Sun
Oct 25
Week 9
SOLID Design Peer Code Review From STUPID to SOLID
Foundation Patterns
Big Ball of Mud
Team Report, Mon
Nov 1
Week 10
What is a Framework?
What is a Game?
(and as a picture)
Git: Undoing Changes
Design a Game
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Complete, Tue
VOOGASalad - Final Project: Putting it All Together
Nov 8
Week 11
Data Driven Design
Composition
Agile Programming:
Process and Design
Team Meeting Composition vs. Inheritance
Design to Accommodate Change
The Magic of Data Driven Design
Team Choice, Tue
Plan, Sun
Nov 15
Week 12
Programming Paradigms
Future of Programming
API Review
Team Meeting
Scrum Guide
Don't Make Me Think
Why Software Sucks
 
Nov 22
Week 13
No class THANKSGIVING    
Nov 29
Week 14
Command Line Principles
Open Source
Mid-Point Demo Small Pieces, Loosely Coupled
Cathedral and Bazaar
Free Software Definition
Basic, Tue
Team Report, Wed
Demo, Thu
Dec 6
Week 15
Professionalism TDD
Agile Retrospective
Commandments of Computer Ethics
ACM Code of Ethics (under revision)
IEEE Code of Ethics
Complete, Sun
Wed
Dec 14
7-10pm
Final Project Demo     Final Demo, Wed
Analysis, Sun