Link Search Menu Expand Document

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.