CompSci 307 Fall 2022 |
Software Design and Implementation |
Simple is better than complex. Complex is better than complicated. — from The Zen of Python by Tim Peters
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.
Topic | Resources | Date | Schedule | Due |
---|---|---|---|---|
Introduction and Basic Design Principles through Refactoring | ||||
Week 1 Readable Code and Debugging |
Everything is an Object Debugging JavaFX (sections 1-3) Visual Guide to Version Control |
|||
Aug 29 |
Course Overview Example: Conditionals Video: Video of Class |
|||
Aug 30 | ||||
Aug 31 |
Exercise: GITing Started Example: Animation Video: Software Install Video: Accessing Gitlab Video: Class |
|||
Sep 01 | ||||
Sep 02 |
Exercise: Debugging Video: Class |
Journal: CompSci Autobiography | ||
Sep 03 | ||||
Sep 04 | Project: Breakout, Part 1 | |||
Week 2 Clean Code and Refactoring |
Clean Code OO in One Sentence Code Smells Refactoring: Extract Class |
|||
Sep 05 |
Example: Bins Video: Class |
|||
Sep 06 | ||||
Sep 07 |
Exercise: Hangman Video: Class |
|||
Sep 08 | ||||
Sep 09 | Exercise: Hangman | Journal: Ethics and Failure | ||
Sep 10 | ||||
Sep 11 | Project: Breakout, Part 2 | |||
Week 3 Inheritance and Design Principles |
Single Responsibility Principle Inheritance and Polymorphism Access Control (Encapsulation) Refactoring: Replace Conditional |
|||
Sep 12 |
Example: Roulette Video: Class |
|||
Sep 13 | ||||
Sep 14 |
Exercise: Inheritance and Debugging Video: Class |
|||
Sep 15 | ||||
Sep 16 | Exercise: GIT Practice | Journal: Habits and Teamwork | ||
Sep 17 | ||||
Sep 18 | ||||
Recognizing Good Design and Basic Teamwork | ||||
Week 4 GUIs and Resources |
Model-View Separation Git Branching JavaFX GUIs Effective Teamwork |
|||
Sep 19 |
NO CLASS Example: Browser Video: JavaFX GUIs |
Project: Breakout, Part 3 | ||
Sep 20 | ||||
Sep 21 | Team Meeting | Team Contract | ||
Sep 22 | ||||
Sep 23 |
GIT Workflow Video: Class |
Journal: Starting a Big Project | ||
Sep 24 | ||||
Sep 25 | ||||
Week 5 Testing |
Open-Closed Principle JUnit Test Infected User Interface Testing with TestFX Java: Records |
|||
Sep 26 |
Example: JUnit Exercise: Unit Testing Video: Class |
Project: OOLALA, App 1 | ||
Sep 27 | ||||
Sep 28 |
Example: TestFX Video: Class |
|||
Sep 29 | ||||
Sep 30 | Teamwork: Testing your Code | Journal: Ethics in the News | ||
Oct 01 | ||||
Oct 02 | ||||
Week 6 Exceptions and Design Principles |
Dependency Inversion Principle Exceptions: Throwing and Designing Write Better Code With OOP Java: Enumerated Types |
|||
Oct 03 |
Code Design Habit Checklist Example: Browser (with Exceptions) Video: Class |
Project: OOLALA, App 2 | ||
Oct 04 | ||||
Oct 05 | Code Review | |||
Oct 06 | ||||
Oct 07 | Teamwork: Code Review | Project: OOLALA, Refactoring | ||
Oct 08 | ||||
Oct 09 | ||||
Design Strategies and Advanced Teamwork | ||||
Week 7 MVC Design and Encapsulation |
Model-View-Controller (MVC) Interface Separation Principle Commonality and Variability Managing Conflict in Teams |
|||
Oct 10 | FALL BREAK (no class) | |||
Oct 11 | ||||
Oct 12 | Team Meeting | Team Contract | ||
Oct 13 | ||||
Oct 14 | Video: Class Teamwork: Planning |
|||
Oct 15 | Journal: Project Analysis | |||
Oct 16 | ||||
Week 8 Interfaces and Flexibility |
Liskov Substitution Principle Respecting Levels of Abstraction Java: Reflection Java: Lambda Expressions |
|||
Oct 17 |
Example: Reflection Video: Class |
Project: Cell Society, Plan/Test | ||
Oct 18 | ||||
Oct 19 | Exercise: Reflection | |||
Oct 20 | ||||
Oct 21 | Teamwork | Journal: Testing Reflection | ||
Oct 22 | ||||
Oct 23 | ||||
Week 9 Design Smells |
Java Interfaces Are So Very Cool From STUPID to SOLID Make an Immutable Object in Java Why Getters and Setters are Evil |
|||
Oct 24 |
Example: Immutability Encapsulation Video: Class |
Project: Cell Society, Basic | ||
Oct 25 | ||||
Oct 26 | Code and Testing Review | |||
Oct 27 | ||||
Oct 28 | Teamwork: Code Review | |||
Oct 29 | Journal: Teamwork Reflection | |||
Oct 30 | Project: Cell Society, Change | |||
Final Project: Putting it All Together | ||||
Week 10 APIs and Project Management |
API Design Agile Project Management Introducing OO Frameworks Teamwork is an Individual Skill |
|||
Oct 31 | Video: Class | |||
Nov 01 | ||||
Nov 02 | Team Meeting | |||
Nov 03 | ||||
Nov 04 | Team exercises with DUI! | Journal: Project Analysis | ||
Nov 05 | ||||
Nov 06 | ||||
Week 11 Design Patterns and Data Driven Design |
Introduction to Design Patterns Composition vs. Inheritance The Magic of Data Driven Design Gitlab: Always Start with an Issue |
|||
Nov 07 | Java Time and Dates API Video: Design Patterns |
Project: OOGA, Plan | ||
Nov 08 | ||||
Nov 09 |
Teamwork: Agile Planning Video: Class |
|||
Nov 10 | ||||
Nov 11 | Teamwork | Journal: Ethics (Professional) | ||
Nov 12 | ||||
Nov 13 | ||||
Week 12 Logging and More on Patterns |
Dependency Injection Pattern Java Logging Best Practices Refactoring to Patterns Foundation Patterns |
|||
Nov 14 |
Ethics: GitHub CoPilot Exercise: Design Patterns Class: Video |
Project: OOGA, Test | ||
Nov 15 | ||||
Nov 16 | Teamwork: Stand Up, Retrospective, and Planning Class: Video |
|||
Nov 17 | ||||
Nov 18 |
Ethics: Log4j Exploit Example: Bins (with Logging) Class: Video |
Journal: Ethics (Applied) | ||
Nov 19 | ||||
Nov 20 | ||||
Week 13 Break! |
||||
Nov 21 | THANKSGIVING (no class) | Project: OOGA, Sprint 1 and Presentation Video |
||
Nov 22 | ||||
Nov 23 | THANKSGIVING (no class) | |||
Nov 24 | ||||
Nov 25 | THANKSGIVING (no class) | |||
Nov 26 | ||||
Nov 27 | ||||
Week 14 Design for Programming |
Small Pieces, Loosely Coupled Refactoring Loops with Pipelines Maven: A Build Automation Tool Towards Ethics by Default |
|||
Nov 28 |
Unix, Streams, and Maven Example: WordCloud (with Streams) Class: Video |
|||
Nov 29 | ||||
Nov 30 |
Teamwork: Stand Up, Retrospective, and Planning |
|||
Dec 01 | ||||
Dec 02 | Ethics: Accessibility API Review Class: Video |
Journal: Improvement Reflection | ||
Dec 03 | ||||
Dec 04 | ||||
Week 15 Beyond Objects |
Four Pillars of OOP Software Engineering at Google Future of Java at 25 Do Programmers Need a Code of Conduct |
|||
Dec 05 | Future of Java General Software Design Example: Groovy language |
Project: OOGA, Sprint 2 and Presentation Video |
||
Dec 06 | ||||
Dec 07 | Teamwork: Stand Up, Retrospective, and Planning |
|||
Dec 08 | ||||
Dec 09 | Ethics: Google v. Oracle Ruling Demo Advice |
|||
Dec 10 | Journal: Teamwork Reflection | |||
Dec 11 | ||||
Week 16 Finals Week |
True Programmers Never Stop Learning Dark Side of Software Development Defending Democracy from Big Tech The API-First World |
|||
Dec 12 | Project: OOGA, Complete | |||
Dec 13 | ||||
Dec 14 | ||||
Dec 15 | Project: OOGA, Demo, by 12pm | |||
Dec 16 | ||||
Dec 17 | ||||
Dec 18 | Journal: Final Analysis |