Course Schedule
This schedule will definitely change over the course of the semester. Please continue to check back for updates.
Topic 1: Intro to the Course
Expectations, team norms, intro to the tech stack and course structure.
Course intro + course arc + architecture overview
Welcome to the course!
Teams + Working Agreement (Phase 1) + dev setup
- Maitre, N.L., Marra, L., Kjeldsen, W. et al. A social media-delivered intervention for motor delays: stage-Ib randomized clinical trial and implementation exploration. Pediatr Res (2025). https://doi.org/10.1038/s41390-025-04151-5. Full text available via UNCA library.
- Rasmusson, J. (2010). The Agile Samurai. Ch. 1: Agile in a Nutshell
- Rasmusson, J. (2010). The Agile Samurai. Ch. 2: Meet Your Agile Team
- HW 0: Team Working Agreement + Dev Setup
Topic 2: Backend Architecture + Testing as Specification
Deepen backend architectural understanding and introduce testing as behavioral specification (contract-level). SDLC concept: turning vague needs into testable behaviors.
Backend deep dive: models, schemas, routes, dependencies
Pytest workshop: contract-level tests (backend)
- Testing workshop focused on contract-level API tests (not full coverage)
- Studio: write tests for existing endpoints
- Live critique of one test PR: clarity, naming, and what behavior is asserted
- HW 1: Backend Tests
- HW 0: Team Working Agreement + Dev Setup
Topic 3: Data Modeling + API Design + Review-as-Learning
Design and implement a new backend model (including relationship design) with tests. SDLC concept: articulating tradeoffs and constraints in PRs and reviews.
Class cancelled
Domain modeling + relationship tradeoffs (whiteboard first)
- Team agreements
- How is testing going? Any questions?
- Mini-lecture on relationship design and tradeoffs
- Activity: whiteboard the domain model before coding
- Begin implementation plan and test plan (what behavior must be true)
- HW 2: New Models + Module CRUD
- HW 1: Backend Tests
Topic 4: Software Design Principles in Practice
Apply design principles (cohesion, coupling, DRY, data minimization) directly to the starter architecture. Use tests to refactor safely. SDLC concept: design for change.
HW1 Reflection + Data Modeling Studio
- HW1 Feedback & Discussion
- Show & Tell: Compare your implementation with your counterpart on the other team and discuss.
- Discussion of each team's data model
Writing Clean Code and Refactoring Safely
- Lecture using your codebase as examples: cohesion/coupling, DRY, function/class size, and data minimization
- Studio: refactor or extend an existing API safely (tests as guardrails)
- Martin, R. C. (2009). Clean Code. Chapters 2 (Meaningful Names), 3 (Functions), and 17 (Smells and Heuristics) Link
- HW 3: Refactoring Exercise
Topic 5: Frontend Architecture & System Boundaries
Treat React as architecture: component responsibility, state ownership, and data flow. Connect UI to tested APIs. SDLC concept: mapping user needs to system behavior.
React architecture review (state ownership + boundaries)
Review of Tuesday's Activity; New team assignments
- HW4: Frontend Integration PR + 1 Peer Review (Frontend Focus)
- HW 3: Refactoring Exercise
Workday + Front-end Testing
Topic 6: Mobile - React Native and Expo + AI Coding Tools
Build mobile UI using React Native and Expo. Connect mobile app to backend API. Introduce AI coding assistants and best practices for using them in software development. SDLC concepts: platform considerations, mobile-specific patterns, and modern development tooling.
React Native I
- Expo Documentation. Getting Started Link
AI Coding Tools II
- Discussion: Vibe Coding readings
- Work on mobile interface (HW5)
- Willison, S. Vibe Coding.
- Willison, S. Vibe Engineering.
Topic 7: UX, Prototyping, and Revisiting Assumptions
Introduce HCD and low-fidelity prototyping once technical fluency exists. Use critique to surface mismatches between user intent and current implementation.
Human-centered design + low-fi prototyping
- Interaction Design Foundation. Low-Fidelity Prototypes.
- Nielsen Norman Group. 10 Usability Heuristics. (selected)
- Krug, S. (2014). Don't Make Me Think. (Chapters 1, 3, and 6)
- skim Nielsen Norman Group. Paper Prototyping: Getting User Data Before You Code.
Low-fidelity prototyping continued
- Figma Wireframe Tutorial for Beginners (Video), Aliena Cai
- Generate Style Guide in Figma Automatically (Video), Nick Babich
- skim Frost, B. Atomic Design
- HW 6: From User Journeys to Wireframes (Part 1)
- HW 5: Mobile UI (for Parents & Caregivers)
Topic 9: Spring Break
No class
Spring Break - No class
Spring Break - No class
Topic 10: From User Journeys to Figma Wireframes
Share HW6 journeys and wireframes. Begin building token-driven, component-based wireframes in Figma.
HW6 presentations: journeys → screens → wireframes
- HW 6: From User Journeys to Wireframes (Part 1)
HW7 launch: tokens, components, and responsive frames in Figma
- Walk through importing the provided design token JSON files and switching between themes
- Live demo: build a token-driven Button component with variants (primary, secondary, ghost)
- Introduce frames and Auto Layout for desktop and mobile screens (Dashboard, Activity Detail, Profile)
- In-class work: teams start HW7 components and first screens based on their HW6 wireframes
- Figma Auto Layout Tutorial for Beginners (Video), Aliena Cai
- Figma tutorial for beginners - auto layout & components (Video), Aliena Cai
- Figma Component Tutorial for Beginners (Video), Aliena Cai
- HW 7: Building Maintainable Wireframes in Figma
Topic 11: Feature Development Sprint 1
Build first vertical feature. Practice daily standups, PRs, code review across teams. Reflect on collaboration challenges.
Feature development kickoff + daily standup protocol
- Teams begin feature work
- Daily standup protocol: what did you do, what will you do, blockers
- Pair programming: backend + frontend developers work together
- Discussion: "How do we coordinate? What's hard about shared codebase?"
- HW 7: Building Maintainable Wireframes in Figma
Feature work + PR workflow + code review
- Teams continue feature work
- Open PRs, practice code review across teams
- Resolve merge conflicts, coordinate API changes
- Team reflection: "What's working? What's challenging? How are we communicating?"
Sprint 1 continued: feature development
- Teams continue Sprint 1 feature work
- Daily standups
- Pair programming and collaboration
- Team check-in: "What progress have we made? What blockers do we have?"
Sprint 1 continued: integration and testing
- Teams continue feature work
- Integration testing across components
- Code review and PR refinement
- Team reflection: "What's working well? What needs improvement?"
Topic 12: Feature Development Sprint 2
Continue feature development. Sprint review and retrospective. Plan next sprint.
Sprint 1 review + sprint 2 planning
- Sprint 1 demos: teams show what they built
- Sprint retrospective: what worked, what didn't, what to improve
- Sprint 2 planning: next features, user stories, tasks
- Reflection: "How did Sprint 1 go? What did we learn about teamwork?"
Sprint 2 feature development kickoff
- Teams begin Sprint 2 features
- Continue daily standups
- Practice cross-team coordination
- Team reflection: "How are we improving? What's still hard?"
Sprint 2 continued: feature development
- Teams continue Sprint 2 feature work
- Daily standups
- Integration and testing
- Team check-in: "What progress have we made?"
Sprint 2 continued: refinement and testing
- Teams continue feature work
- Code review and PR refinement
- Integration testing
- Team reflection: "What's working? What needs improvement?"
Topic 13: Feature Development Sprint 3
Final feature sprint. Integration testing. Polish and refinement.
Sprint 2 review + final sprint planning
- Sprint 2 demos
- Sprint retrospective
- Final sprint planning: polish, integration, testing
- Discussion: "What features are complete? What needs polish?"
Sprint 3 feature development kickoff
- Teams begin final sprint features
- Polish existing features, fix bugs
- Write integration tests
- Team reflection: "What are we proud of? What needs work?"
Sprint 3 continued: integration and polish
- Teams continue final sprint work
- Cross-team integration: ensure features work together
- Bug fixes and polish
- Team check-in: "What's left to do?"
Sprint 3 continued: final refinement
- Teams finalize features
- Final integration testing
- Code review and PR refinement
- Team reflection: "What are we proud of? What would we do differently?"
Topic 14: Final Delivery and Reflection
Final integration, testing, and polish. Course reflection and celebration.
Final integration and testing
- Final integration testing: all features work together
- Bug fixes and polish
- Prepare for final demo
- Team reflection: "What did we accomplish? What are we proud of?"
- Martin, R. C. (2011). The Clean Coder. (Ch. 12-13) Link
Final demos + course reflection
- Final team demos: showcase completed features
- Course reflection: "How did we grow? What did we learn?"
- Celebration and wrap-up