A collection of my overviews on various topics relevant to CS 394.

Team Tools

Most of the links on this page about about software development, but the primary focus of the course is team development. So the first link is about some simple tools for detecting possible team development issues. We use these to start discussion in coaching.

Git and Github


A prerequisite to good React coding is a solid understanding of modern functionally-oriented JavaScript programming.


React is one of the baseline technologies for this course. It is very popular, very helpful for quickly building robust interactive single-page apps, and good to have on your resume.

When looking for help with React, be wary of any site that is more than a year old, and avoid any site from before 2019, when React 16.8 was released. Even React 17 has some incompatibilities with the current React 18.

I have created the following React tutorial for my courses.

  • Quick, React! -- This is a tutorial challenge, introducing the most critical tools you'll need, including connecting to a cloud database.

Here are some useful React resources:


Quite often, apps will need a central place to keep data. While you can create your own server to do this, that means you have to maintain a stable host that's easily deployed to. A regular web server, e.g., PHP, is not really appropriate since you don't want HTML pages, you want data.

The current best free option is Firebase. It's easy to get started, but it has its quirks.

Debugging React Apps


As your app becomes more complex, the odds become higher that new code will break somethinng that used to work. Such breakage is called regression. Manually testing that all the functionality of your app becomes harder and harder. The answer is to automate this testing with a testing framework.

Unit testing

End to end testing

Cypress is an end-to-end testing framework. Where React library unit tests call React code to test what is generated, Cypress tests use a browser engine to interact with your web app running a server, just as a user does.

Continuous Integration

Once you have automated test suites it's worth setting up continuous integration and deployment (CI/CD) to automate the process of building, testing, and deploying an application every time the main repository is updated.

© 2024 Chris Riesbeck
Template design by Andreas Viklund