If, as I believe, the conceptual structures we construct today are too complicated to be specified accurately in advance, and too complex to be built faultlessly, then we must take a radically different approach.
Let us turn to nature and study complexity in living things, instead of just the dead works of man. Here we find constructs whose complexities thrill us with awe. The brain alone is intricate beyond mapping, powerful beyond imitation, rich in diversity, self-protecting, and self-renewing. The secret is that it is grown, not built.
— F.P. Brooks, No Silver Bullet: Essence and Accidents of Software Engineering, 1986
  1. Agile software development

    1. Agile software development — Focus on the introduction and the following sections: “History”, “Overview” & “Philosophy”.:

      1. Based on the principles of the agile manifesto, what key features distinguish agile development practices from traditional practices?
      2. What does it mean to:
        • be “adaptive” rather than “predictive”?
        • favor code to documentation?
    2. Review the following, well-known agile methods and be familiar with the listed concepts/questions:

      1. eXtreme Programming (XP) — focus on the introduction only here:
        • Practices: pair programming; unit testing
        • What is so “extreme” about XP?
      2. Scrum — focus on the “Workflow” and “burn-down chart” sections:
        • The meanings of these Scrum terms: sprint, daily scrum, review/retrospective, backlog and burn-down chart
        • The interpretation of the two lines on a burn-down chart.
      3. KanBan — focus on the introduction only here:
        • How does this lean manufacturing process relate to software development?
  2. Project Management Tools

    1. Git Handbook

      1. What does a version control system do?
      2. Compare and contrast distributed vs. centralized version control.
      3. Understand the following terms: clone, commit, push, pull.
    2. GitHub

      1. If don’t already have a GitHub ID, create one for yourself now. You’ll use this GitHub account to submit code for this class, so please submit your ID using this form: CS 262 - GitHub IDs
      2. Read this GitHub guide: Hello World
        • Familiarize yourself with these concepts: repo(sitory); branch; pull request.
      3. Read this GitHub flow guide: Understanding the GitHub Flow
        • Familiarize yourself with branch→commit→pull-request→review→ merge process.
    3. Markdown — Familiarize yourself with GitHub Markdown notation.

    4. Setup GitHub Copilot (see the plugins you installed Guide 1).

      1. GitHub Copilot in VS Code — Understand Copilot usage patterns, best practices, and pricing.
      2. Set up GitHub Copilot in VS Code — Get set up to use Copilot in VSCode as an individual.
      3. Get started with GitHub Copilot in VS Code — Practice the basics of using Copilot.
      4. Use chat in VS Code — Understand the interaction between Copilot and Copilot Chat.
      5. Getting started with Copilot Chat in VS Code — Practice the basics of using Copilot and Copilot Chat.

      As a general rule, we’ll use Copilot for homework assignments and project work, not labs or quizzes/exams. Thus, you don’t need to have this work completed until you start working on homework 1.