To get a permission number for this course for ${year}, fill in the prior experience survey , then email me a request for a permission number. Use the Subject 392 Permission Request
Note: You must be logged into your u.northwestern.edu Gmail account to access the survey.
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 web software applications.
In particular, this course will focus on supporting
- rapid code development with
- modern coding with functional JavaScript
- modularization with JavaScript modules
- unit testing
- React
- cloud services,such as Firebase
- development IDEs,such as 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
Prerequisites
Computer science experience, at least through data structures, e.g., CS 214, is presumed.
React experience is not required, but experience with modern JavaScript is very useful. Fluency with several languages, such as Python, C, C#, Java, or PHP is recommended.
Test yourself. Are you in over your head trying to follow along and run the code in the Quick, React! introductory tutorial?
Format
The course is learn by doing in teams. Each team will design and implement three projects, in three weeks each.
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 be a mix of lectures and in-class activities. Outside the class meetings, teams will be responsible for tracking, analyzing, and developing both the product and the team.
Technologies
Teams will maintain code repositories on Github under a Github organization created for the class.
Applications will be developed using React, a platform for rapidly developing mobile web applications that run on iOS, Android, and the web.
Grading
There are two parts to your grade:
- 75%: Your team's evaluation of your contribution to both projects, based on weekly team reviews.
- 25%: My evaluation of what you have learned and can articulate about rapid prototyping, value-driven development, and agile team work, based on participation in various class and team activities, and performance on individual tutorials.
Getting Help
The best place to get help is to post questions on Campuswire.
For issues specific to you and your team, e.g., notifying me of an upcoming absence, send email, as follows:
- My Northwestern email address
- Subject: 392 + team name + short topic descriptor
- CC the entire team
I return for repair any emails that don't do the above. The subject line is important for me to prioritize, file, and later find the email. The CC to your team is important so that I know everyone knows, they know I know, and if I send a reply, everyone sees it.
Office Hours
My homepage has a link to my calendar. My calendar has a form that emails a request for a meeting time. I usually reply within 2 hours. I'm available from 9 until 5, unless the calendar says I'm booked. Please do not ask for a meeting in the 30 minutes before I have a class or during lunch (noon) unless it's very short, like signing something.
Themes
Rapid iterative web and mobile app prototype development:
- Multi-platform rapid prototype: React and React "styles/
- Data evolution with key-value databases: Firebase, MongoDB
- Feature-driven source control branching: Github, GitFlow
- Authentication
Value-driven development:
- user stories and backlogs, vs. schedules
- iterative prototyping vs. incremental development
- cross-functional teams and swarming vs. silos and solo programming
Readings
Online tutorials for technical frameworks, to be curated and links, here and on Campuswire
Recommended books:
- Getting Real -- a free PDF (despite subtitle, this is about any kind of app, not just web)
- 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
Individual actitivities, such as the React and automated testing tutorials, should be solely your own, and the standard rules regarding plagiarism apply.