CompSci 307
Spring 2019
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.


Date Topic Example Discussion Readings Due
Design Using Classes
Jan 9
Week 1
Course Policies
Classes and Encapsulation
Interfaces and Flexibility
Video
Bins NO Discussion Clean Code
OO in One Sentence
Decomposition
 
Jan 14
Week 2
Designing to Organize
Coding to Communicate
Code Smells and Refactoring
Video
Bins GIT: Basics
Exercise: Decomposition
Code Smells
Refactoring: Extract Class
Guide to Versioning Systems
Data, Basic, Wed
Design Using Abstractions
Jan 21
Week 3
MLK, Jr Day — NO Class   Exercise: Team JavaFX
Video
Making Classes
OpenJFX/JavaFX Tutorial
GIT ready: Branching and Merging
Data, Complete, Tue
Data, Analysis, Sat
Jan 28
Week 4
OO Design: Collaborating Objects
Video
Hangman Quiz
Exercise: Making OO Classes
Open Closed Principle
Write Better Code With OOP Concepts
 
Feb 4
Week 5
Creating Abstractions: Inheritance and Interfaces
Video
Roulette Exercise: Inheritance Inheritance and Polymorphism
Why Java Interfaces Are So Very Cool
Replace Conditional with Polymorphism
Game, Basic, Mon
Design Using SOLID Principles
Feb 11
Week 6
Unit Testing
Video

Money Exercise: Unit Testing
Team Meeting
JUnit Test Infected
Unit Testing Best Practices
TDD with IntelliJ
Game, Complete, Mon
Simulation, Team Contract, Wed
Game, Analysis, Fri
Feb 18
Week 7
Design Principles
GUIs
Video
Browser GIT: Undoing Changes
Exercise: TDD
MVC
Dependency Inversion Principle
JavaFX: Making Client Apps
Isolating Locale-Specific Data
Simulation, Test, Thu
Feb 25
Week 8
Class Variations: Enums, Generics, Exceptions
Video
Variations Quiz
Exercise: Exceptions
Exercise: Enumerated Types
Designing with Exceptions
Exceptions
Enumerated Types
Generics
Simulation, Basic, Thu
Simulation, Team Report, Fri
Mar 4
Week 9
OO Design: Encapsulation
SOLID Design
Video
Encapsulation Exercise: Refactoring From STUPID to SOLID
Commonality Analysis
Why Lamba Expressions
Simulation, Complete, Fri
Mar 11 SPRING BREAK        
Design Using APIs
Mar 18
Week 11
APIs and APIE
Video
DNA Exercise: APIs
Exercise: Refactoring
Josh Bloch on API Design
Four Pillars of OOP
Why Encapsulation Is Fundamental to OOP
Simulation, Refactoring, Sat
Mar 25
Week 12
Agile Project Management
Video
  Team Meeting Scrum Guide
Teamwork is an Individual Skill
Extreme Programming Practices
Simulation, Analysis, Tue
Apr 1
Week 13
"Advanced" Design
Design Patterns
Video

  Quiz
GIT: Issues and Tags
Presentation: Design Plan
Composition vs. Inheritance
Introduction to Design Patterns
Refactoring to Patterns
The Magic of Data Driven Design
Final, Plan, Tue
Apr 8
Week 14
"Advanced" Java
Video
Calculator Presentation: Progress Demo
Exercise: Reflection
Reflection
JavaFX Properties and Bindings
Why Lamba Expressions
Final, Sprint #1, Tue
Final, Sprint Retorspective, Wed
Apr 15
Week 15
Testing Levels and Acceptance Testing
Packaging and Deploying Software
Video
TestFX Presentation: Progress Demo
Exercise: Refactoring
Test Automation Strategy
Build Automation with Maven
Evolution in Software Delivery
Final, Sprint #2, Tue
Final, Sprint Retorspective, Wed
Apr 22
Week 16
Quiz
Security
Professionalism
Video
  NO Discussion Secure Coding Practices in Java
Do Programmers Need a Code of Conduct
True Programmers Never Stop Learning
Final, Complete, Fri
Apr 29 Final Project Demos: 12-7pm       Final, Examples, Mon
Final, Analysis, Fri