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 Programing (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.

  3. Technology Stack — There is no mobile application development in this unit’s lab. However, it’s worth reviewing these features of ReactNative implementations:

    1. Layout with Flexbox — Formatting in future labs and homeworks will be based on Flexbox, so review this material with particular focus on these concepts:
      • Direction, alignment and justification.
      • Absolute vs. relative layout.

    2. Color Reference — This explains JavaScript colors.