Introductory Lessons
To prepare students for the team assignments and legacy code projects in this course, we hold mini-lectures about the following topics to build up enough knowledge to meaningfully contribute.
Many of these tutorials are aided by the “Rational” tutorials on GitHub, which is a repo containing various versions of a Java Spring Boot application, each one designed to illustrate a specific concept as described on the tutorial website.
The topics covered in introductory mini-lectures include:
- Git branching
- What are branches used for?
- How do we establish new branches in GitHub
- How do we pull and push branches? What does “pulling” and “pushing” mean?
- GitHub branches and pull requests
- How do we create a pull request?
- What is a pull request actually doing?
- Unit testing and code coverage with JUnit
- How do we test Java code?
- How do we ensure that all branches of code have been covered?
- Mutation testing with Pitest
- How can code coverage be “falsified”? How does mutation testing solve this problem?
- What is mutation testing and how does it work?
- Backend REST Architecture / Spring Boot Controllers
- What is an API? What is REST?
- What’s the difference between GET, POST, PUT, PATCH, and DELETE?
- What are HTTP status codes and what do they mean?
- Introduction to JavaScript and React
- How can we render HTML in JavaScript using React?
- What is a React component? What is the architecture of a React application?
- How do we talk to the backend in React?
- OAuth
- What is OAuth? How do we set it up?
- Standups and Retrospectives
- What’s the purpose of a standup and how does a team perform one?
- What’s the purpose of a retrospective and how does a team perform one?
These topics can be covered either in a short face-to-face lecture during an instructional period, or asynchronously via a pre-recorded lecture uploaded to GauchoCast (mainly for the more technical content). This class, in a way, loosely follows the “flipped classroom” model, where instructional content is either limited or presented via video, and class time is mostly reserved for interactive exercises and team work.