CompSci 308
Spring 2025
Advanced Software Design and Implementation

Computer Science is a science of abstraction - creating the right model for a problem and devising the appropriate mechanizable techniques to solve it. — A. Aho and J. Ullman

The exact order and details of 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.
Materials discussed in class and lecture recordings will be posted here.


Date Topics Examples/Videos Lab Due
1 - Jan 9 Course Overview
GIT in Practice
Example: Conditionals
Example: Bounce
Video: Class Introduction
GITing Started
Making Classes
Sun 1/12: Journal - CompSci Autobiography
2 - Jan 14/16 Refactoring and Code Smells
Finding Objects
Example: Bins
Video: Clean Code
Video: Refactoring
Refactoring Tue 1/14: Breakout - Plan and Basic Start
Fri 1/17: Journal - Habits and Failure
3 - Jan 21/23
Abstraction   Team Meeting
Tue 1/21: Breakout - Complete
Fri 1/24: Journal - Project Analysis
4 - Jan 28/30
Separating Model from Views
Unit Testing
     
5 - Feb 4/6 APIs, Encapsulation, and Interfaces      
6 - Feb 11/13
Exceptions
     
7 - Feb 18/20
GUI Testing      
8 - Feb 25/27
Design Patterns      
9 - Mar 4/6 Ethics
Project Presentation  
10 - Mar 11/13
SPRING BREAK      
11 - Mar 18/20
Agile Project Management   Team Meeting  
12 - Mar 25/27 Design Patterns
     
13 - Apr 1/3
TBD      
14 - Apr 8/10
TBD      
15 - Apr 15/17
TBD      
16 - Apr 22
Wrap-Up   NO LAB  
Fri, May 2 Final Project Demos, in person, 2-5pm   Project Presentation