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.

Tu, Jan 13

Course intro + course arc + architecture overview

Welcome to the course!

Quizzes
Th, Jan 15

Teams + Working Agreement (Phase 1) + dev setup

Reading discusion, meeting with client, and team assignments.
Slides / Activities
Required Readings
  1. 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.
  2. Rasmusson, J. (2010). The Agile Samurai. Ch. 1: Agile in a Nutshell
  3. Rasmusson, J. (2010). The Agile Samurai. Ch. 2: Meet Your Agile Team
Assigned:
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.

Tu, Jan 20

Backend deep dive: models, schemas, routes, dependencies

Review backend structure (models vs schemas vs routes), dependency injection, and how requests flow.
Slides / Activities
Quizzes
Th, Jan 22

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
Slides / Activities
Quizzes
Assigned:
HW 1: Backend Tests
Due:
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.

Tu, Jan 27

Class cancelled

Th, Jan 29

Domain modeling + relationship tradeoffs (whiteboard first)

Today's Agenda:
  • 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)
Quizzes
Assigned:
HW 2: New Models + Module CRUD
Due:
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.

Tu, Feb 3

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
Th, Feb 5

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)
Required Readings
  1. Martin, R. C. (2009). Clean Code. Chapters 2 (Meaningful Names), 3 (Functions), and 17 (Smells and Heuristics) Link
Quizzes
Assigned:
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.

Tu, Feb 10

React architecture review (state ownership + boundaries)

  • React as an architectural system: pages vs components, local vs global state, and data flow
  • Activity: map one backend feature to a UI flow and identify states/edge cases
Slides / Activities
  • Slides
  • React Architecture
Required Readings
  1. React Team. Thinking in React. React Documentation. Link
  2. Short handout: Mapping User Goals to UI State Link
Due:
HW 2: New Models + Module CRUD
Th, Feb 12

Integration studio: connect frontend to backend feature

  • Studio: implement UI integration with a tested backend endpoint
  • Review focus: component responsibility and predictable data flow
  • Quick check: 'What can a user do now?'
Slides / Activities
  • TypeScript, Contexts, Hooks
Assigned:
HW4: Frontend Integration PR + 1 Peer Review (Frontend Focus)
Due:
HW 3: Refactoring Exercise

Topic 6: Mobile - React Native and Expo

Build mobile UI using React Native and Expo. Connect mobile app to backend API. SDLC concept: platform considerations and mobile-specific patterns.

Tu, Feb 17

React Native architecture + Expo setup

  • React Native vs React: similarities and differences
  • Expo: what it is, why we use it
  • Team activity: set up Expo project, understand structure
  • Discussion: "How is mobile different from web? What's the same?"
Slides / Activities
  • Slides
  • React Native + Expo
Required Readings
  1. Expo Documentation. Getting Started Link
Th, Feb 19

Mobile UI + navigation + backend integration

  • Mobile UI patterns: navigation, screens, components
  • Team studio: build mobile UI for existing backend feature
  • Connect mobile app to same backend API
  • Pair programming: one codes, one reviews, then switch
  • Reflection: "What's hard about mobile? What's easier than web?"
Slides / Activities
  • Mobile UI Integration
Assigned:
HW5: Mobile Integration PR + Peer Review + Reflection

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.

Tu, Feb 24

Human-centered design + low-fi prototyping

  • Intro to HCD
  • Create low-fidelity prototypes (paper or Figma) for a targeted flow
  • Studio critique: identify mismatches between current UI/system behavior and user goals
Slides / Activities
  • Slides
  • Human-Centered Design + Low-Fi Prototyping
Required Readings
  1. Krug, S. (2014). Don’t Make Me Think. (Ch. 1–2 -- selected) Link
  2. Nielsen Norman Group. 10 Usability Heuristics. (selected) Link
Due:
Tutorial 4: Frontend Integration
Th, Feb 26

Iterate based on prototype + review focus on assumptions

  • Studio: revise a flow or UI element based on prototype critique
  • Review focus shifts: assess user assumptions and flow clarity (not code style)
Slides / Activities
  • High-Fidelity Prototyping + Implementation
Assigned:
HW6: Low-Fi + Hi-Fi Prototypes + UX Implementation

Topic 8: Design Synthesis + Sprint 1 Demo + Phase 1 Reflection

Synthesize design work, stabilize Phase 1 contributions, and demo. Prepare for the Phase 2 shift from exploration to shared ownership.

Tu, Mar 3

High-fi prototyping + demo prep

  • High-fidelity prototyping and alignment: confirm prototype behaviors map to system behaviors
  • Studio: prepare Sprint 1 demos and ensure PRs are reviewable and rebased (linear history)
Slides / Activities
  • Demo Prep + Phase 1 Reflection
Required Readings
  1. Short reading: Agile Overview (forward-looking; prepares for Phase 2) Link
Due:
Tutorial 5: Mobile Integration
Th, Mar 5

Sprint 1 demos + Phase 1 retrospective

  • Sprint 1 demos
  • Phase 1 retrospective: what improved (tests, reviews, design clarity), what remained hard, and what will change in Phase 2 (shared repo, vertical slices)
Slides / Activities
  • Sprint 1 Demos + Phase 1 Retrospective
Assigned:
HW7: Phase 1 Reflection + Phase 2 Preparation

Topic 9: Spring Break

No class

Tu, Mar 10

Spring Break - No class

Th, Mar 12

Spring Break - No class

Topic 10: Phase 2: Agile and Vertical Features

Introduction to Agile. Form vertical teams. Begin feature development in shared repo.

Tu, Mar 17

Agile introduction + vertical team formation

  • Agile principles: iterations, user stories, sprints
  • Form vertical teams: backend + web + mobile developers
  • Team working agreement for Phase 2 (collaboration, communication)
  • Discussion: "How is Phase 2 different? What skills do we need?"
Required Readings
  1. Schwaber, K., & Sutherland, J. The Scrum Guide. Link
Due:
Tutorial 6: Low-Fi + Hi-Fi Prototypes + UX Implementation
Th, Mar 19

Sprint 1 planning + feature assignment

  • Review shared repo structure and workflow
  • Assign features to vertical teams
  • Sprint 1 planning: break features into user stories and tasks
  • Define API contracts (shared types)
  • Set up feature branches
  • Team reflection: "What are our goals? What are we worried about?"

Topic 11: Feature Development Sprint 1

Build first vertical feature. Practice daily standups, PRs, code review across teams. Reflect on collaboration challenges.

Tu, Mar 24

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?"
Due:
Tutorial 7: Phase 1 Reflection + Phase 2 Preparation
Th, Mar 26

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?"
Tu, Mar 31

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?"
Th, Apr 2

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.

Tu, Apr 7

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?"
Th, Apr 9

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?"
Tu, Apr 14

Sprint 2 continued: feature development

  • Teams continue Sprint 2 feature work
  • Daily standups
  • Integration and testing
  • Team check-in: "What progress have we made?"
Th, Apr 16

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.

Tu, Apr 21

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?"
Th, Apr 23

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?"
Tu, Apr 28

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?"
Th, Apr 30

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.

Tu, May 3

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?"
Required Readings
  1. Martin, R. C. (2011). The Clean Coder. (Ch. 12-13) Link
Th, May 5

Final demos + course reflection

  • Final team demos: showcase completed features
  • Course reflection: "How did we grow? What did we learn?"
  • Celebration and wrap-up

UNC Asheville Department of Computer Science