A Modern Approach to Software Design with AI Collaboration
This repository contains comprehensive course materials for CPSC 310: Software Design, taught at Trinity College by Ken Kousen. The course emphasizes practical software design principles, test-driven development, and critical evaluation of AI-assisted coding.
This course teaches students to be software architects and designers, not just coders. We embrace modern AI tools while maintaining critical thinking and emphasizing testing as the primary validation method for all codeβespecially AI-generated code.
- AI-Integrated Learning: Students use GitHub Copilot, Claude, ChatGPT, and Gemini throughout the course
- Team-First Approach: All major work done in teams from day one
- Test-Driven Development: Testing is not an afterthoughtβit's the foundation
- Modern Java: Focus on Java 21 LTS features and idioms
- Production-Ready Skills: Build real Spring Boot applications with professional workflows
software-design-course/
βββ slides/ # Weekly Slidev presentations
β βββ week-01-java-foundations/ # Java basics (37 slides)
β βββ week-02-oop-java/ # OOP in Java (70 slides)
β βββ week-03-spring-boot-rest/ # Spring Boot & REST APIs
β βββ week-04-functional-tdd/ # Functional programming & TDD
β βββ week-05-data-ai/ # Data layer & AI collaboration
β βββ week-06-solid-principles/ # SOLID & DRY principles
β
βββ examples/ # Code examples (Gradle modules)
β βββ design-patterns/ # SOLID & DRY implementations
β β βββ src/main/java/edu/trincoll/
β β βββ solid/ # All 5 SOLID principles
β β β βββ srp/ # Single Responsibility
β β β βββ ocp/ # Open-Closed
β β β βββ lsp/ # Liskov Substitution
β β β βββ isp/ # Interface Segregation
β β β βββ dip/ # Dependency Inversion
β β βββ dry/ # DRY principle examples
β βββ testing-fundamentals/ # JUnit 5, AssertJ, jqwik
β βββ week2-oop/ # OOP examples
β
βββ assignments/ # Student assignments
β βββ assignment-1-task-tracker/ # REST API starter
β βββ assignment-2-service-layer/ # Service architecture
β
βββ docs/ # Documentation & guides
β βββ github-workflow-guide.md # Git/GitHub best practices
β βββ gradle-guide.md # Gradle setup
β βββ intellij-guide.md # IntelliJ IDEA setup
β
βββ build.gradle.kts # Root Gradle configuration
βββ settings.gradle.kts # Multi-module setup
βββ course-schedule.md # 14-week schedule
βββ syllabus.md # Course syllabus
βββ DEMO-CHECKLIST.md # Live coding guides
- Java 21 LTS (required)
- IntelliJ IDEA Ultimate (free with student license)
- Git (2.30 or later)
- Gradle (included via wrapper)
# Clone the repository
git clone https://github.com/kousen/software-design-course.git
cd software-design-course
# Build all modules
./gradlew build
# Run all tests
./gradlew testIntelliJ IDEA will automatically detect the multi-module Gradle structure when you open the project.
| Category | Technology | Version |
|---|---|---|
| Language | Java | 21 LTS |
| Framework | Spring Boot | 3.5.5 |
| Testing | JUnit 5 | 5.11.0 |
| AssertJ | 3.26.3 | |
| jqwik | 1.9.1 | |
| Build Tool | Gradle | 8.11.1 |
| Code Quality | SonarCloud | Latest |
| Presentations | Slidev | Latest |
| AI Tools | GitHub Copilot, Claude, ChatGPT, Gemini | - |
- 40% Progressive Team Project (4 milestones)
- 30% Repository Analysis (individual)
- 20% Code Reviews & Peer Assessment
- 10% Process & Participation
- Week 1: Java Foundations & Team Formation
- Week 2: Object-Oriented Programming in Java
- Week 3: Spring Boot & REST APIs
- Week 4: Functional Programming & Test-Driven Development
- Week 5: Data Layer with JPA & AI Code Evaluation
- Week 6: SOLID Principles & DRY Principle
- Week 7: Advanced Design Principles
- Week 8: Creational Design Patterns
- Week 9: Structural Design Patterns
- Week 10: Behavioral Design Patterns
- Week 11: Security & Production Concerns
- Week 12: Advanced Spring & Performance
- Week 13: DevOps & Deployment
- Week 14: Project Presentations
No classes: October 14 (Fall Break), November 27 (Thanksgiving)
Assignment repositories are distributed via GitHub template:
- One team member: Click "Use this template" on the assignment repo
- Name it:
team-X-domain(e.g.,team-3-bookmarks) - Add teammates: Settings β Collaborators
- Everyone clones:
git clone <your-team-repo-url> - Run tests:
./gradlew test(many will fail initially!) - Implement features: Make those tests pass!
- Submit: Repository URL to Moodle (team submission)
- β All team members must contribute via GitHub
- β Use issues, feature branches, and pull requests
- β Document AI assistance in code comments
- β Maintain 80% test coverage (verified by SonarCloud)
- β Follow professional Git workflow practices
This course encourages thoughtful use of AI tools:
β Good Uses:
- Generate boilerplate code
- Explore different approaches
- Debug with AI assistance
- Learn new concepts
- Refactor existing code
β Bad Uses:
- Submit AI code without understanding
- Let AI make design decisions
- Skip writing tests
- Copy-paste without verification
Remember: Tests validate everything, including AI output!
By the end of this course, students will be able to:
- Design maintainable software using SOLID principles and design patterns
- Implement production-ready Spring Boot REST APIs
- Test code comprehensively using TDD and multiple testing strategies
- Evaluate AI-generated code critically using testing and design principles
- Collaborate effectively using professional Git/GitHub workflows
- Apply functional programming concepts in Java
- Deploy applications using modern DevOps practices
All slides are created with Slidev and available in the slides/ directory. Each week includes:
- Markdown source files
- Exported PDF versions
- Live code examples
- Practice exercises
All code examples are organized as Gradle submodules with:
- Comprehensive test suites
- Real-world scenarios
- Before/after refactoring examples
- Progressive complexity
Extensive guides available in docs/:
- GitHub workflow guide
- Gradle configuration guide
- IntelliJ IDEA setup guide
- Testing best practices
- Spring Boot patterns
- Primary: Head First Java (3rd Edition)
- Effective Java by Joshua Bloch
- Design Patterns by Gamma, Helm, Johnson, and Vlissides (Gang of Four)
- Clean Architecture by Robert C. Martin
- Java Documentation
- Spring Boot Documentation
- JUnit 5 User Guide
- AssertJ Documentation
- jqwik User Guide
- Baeldung Java Tutorials
This repository is a public educational resource! Contributions are welcome:
- Report Issues: Found a bug or typo? Open an issue
- Suggest Improvements: Have ideas for better examples? Let us know!
- Submit Fixes: Fork, fix, and submit a pull request
See CONTRIBUTING.md for detailed guidelines.
Instructor: Ken Kousen Email: kkousen@trincoll.edu Office: MECC 175 Office Hours: Wednesdays 1:30-3:00 PM
This project is licensed under the MIT License - see the LICENSE file for details.
This course material is freely available for educational use and can be adapted for other software design courses.
- Trinity College Computer Science Department
- The Java and Spring communities
- All the students who have helped refine these materials
- AI tools (Claude, ChatGPT, GitHub Copilot, Gemini) for development assistance
Note: This repository is actively maintained and updated throughout the Fall 2025 semester. Content and structure may evolve as the course progresses.
Last Updated: October 2025