Courses
  /  
Descriptions
COMP_SCI 497: Rapid Prototyping for Software Innovation

Quarter Offered

None : 10-10:50 MWF ; Riesbeck

Description

The goal of this course is to provide an opportunity to learn the technical and critical reasoning skills need to rapidly and iteratively develop innovative full-stack mobile / web software applications.

In particular, this course will focus on how

  • rapid code development is supported by
    • modern open-source frameworks, such as React and React Native,
    • cloud services, such as Firebase,
    • development IDEs, such as Atom and Visual Studio Code, and
    • collaborative source control tools, such as Github, GitLab, and Bitbucket.
  • value-early development and user testing is supported by
    • agile's focus on continuous retrospective process improvement
    • Kanban's focus on continuous flow
    • lean startup's emphasis on value-driven hypothesis testing

INSTRUCTOR: Prof. Chris Riesbeck

FORMAT: There will be three projects: one 2-week warmup project, defined by the instructor, and two 4-week projects defined by the teams. Each project will have two in-class demonstrations: one after the first week, to show an initial slice of testable value, and one at the end of the project, to demonstrate the final state of the project.

The course class meetings will have some lectures, but be primarily in-class activities, setting, tracking, and analyzing team and product development goals. Attendance is tracked.

Each team will meet face-to-face with the instructor for agile coaching every other week.

Teams will maintain code repositories on Github under an organization created for the class, to support weekly review of every team member's contributions to the code base.

There will be three CATME reviews, where team members assess each other's contributions to the team's development.

GRADING: Is based entirely on participation and contribution to the project and team development, as evidenced by

  • code contributions in Github
  • team review in CATME
  • attendance and participation in in-class activities and agile coaching sessions
  • participation in the Piazza forum

PREREQUISITES:

  • At least a year of programming experience, preferably in multiple languages
  • A data structures course, e.g., COMP_SCI 214
  • HTML and JavaScript experience a plus.

TOPICS: Rapid iterative web and mobile app prototype development:

  • Multi-platform rapid prototype with React and React Native
  • Data evolution with key-value databases: Firebase, MongoDB
  • Feature-driven source control branching: Github, GitFlow
  • Robust state management: Redux
  • Authentication: OAuth 2.0
  • Web workers, Progressive Web Apps, Push notifications

Lean agile development

  • user stories and task boards
  • iteration planning and tracking (burndown, burnup)
  • retrospective-based continuous improvement
  • Kanban WIP, cumulative flow

READINGS: Online tutorials for technical frameworks, e.g., React, React Native, Git and Github.

Agile development slides at the COMP_SCI 394 course web site.

Recommended book: The Agile Samurai