About this course
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 and web software applications.
In particular, this course will focus on supporting
- rapid code development with
- modern open-source frameworks,such as React and React Native
- cloud services,such as Firebase
- development IDEs,such as Atom and Visual Studio Code
- collaboration tools, such as Github and Trello
- early deployment of value with
- vertical slicing
- build-measure-learn hypothesis testing
- continuous development flow
- continuous retrospective process improvement
Format
The course is learn by doing. There will be three projects:
- one 2-week warmup project, defined by the instructor
- 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 focused on in-class activities, setting, tracking, and analyzing team and product development goals.
Each team will have face-to-face agile coaching sessions with the instructor every other week.
There will be three CATME reviews, where team members assess each other's contributions to the team's development.
Technologies
Teams will maintain code repositories on Github under an organization created for the class, to support transparent review of every team member's contributions to the code base.
Applications will be developed in HTML5, JavaScript, React, and React Native.
Prerequisites
Substantial programming experience with several languages and some web application technology is presumed.
Computer science experience, at least through data structures, e.g., EECS 214, is presumed.
Grading
Grading is based entirely on participation and contribution to the project and team development, as evidenced by
- code contributions in Github
- contribution to the team's development
- team reviews in CATME
- attendance and participation in in-class activities and agile coaching sessions
- participation in the Piazza forum
Themes
Rapid iterative web and mobile app prototype development:
- Multi-platform rapid prototype: 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
- swarming and pairing
- iteration planning and tracking (burndown, burnup)
- retrospective-based continuous improvement
- work-in-progress, cumulative flow
Readings
Online tutorials for technical frameworks, to be curated and links, here and on Piazza
Recommended book: The Agile Samurai
Plagiarism
For the most part, sharing of code is expected and encouraged. In particular, in the team applications, you should feel free to use
- open-source libraries
- code examples from tutorials and public repositories
- code from other team members and other teams within the course
Any individual content that is requested, such retrospective reflections, should be solely your own, and the standard rules regarding plagiarism apply.
Posts and Emails
For all questions about the course, please post to Piazza, so that everyone in the class is in on the discussion. If I get a good question by email, I will ask you to post it to Piazza instead.
For all items that affect the team, including absences and such, email me. All such emails must
- CC the team
- Have 497 and the team name in the subject line
I will return any email that does not do this, for revision, no matter how trivial the email is, because
- I get a ton of email and need 497 in the subject to find class-related emails.
- I need the team name to organize emails for team review.
- I need to know that the team is in the loop on anything that comes up, and I want the team to see any reply I make.
The one and only exception to the "CC the team" rule is some inter-personal issue. These are very rare.