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
-
Agile software development
-
Agile software
development — Focus on the introduction
and the following sections: “History”,
“Overview” & “Philosophy”.:
- Based on the principles of the agile
manifesto, what key features distinguish
agile development practices from traditional
practices?
- What does it mean to:
- be “adaptive” rather than
“predictive”?
- favor code to documentation?
-
Review the following, well-known agile methods and be
familiar with the listed concepts/questions:
- eXtreme
Programming (XP) — focus on the
introduction only here:
- Practices: pair programming;
unit testing
- What is so “extreme” about XP?
- 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.
- KanBan
— focus on the introduction only here:
- How does this lean manufacturing process
relate to software development?
-
Project Management Tools
-
Git Handbook
- What does a version control system do?
- Compare and contrast distributed vs.
centralized version control.
- Understand the following terms: clone,
commit, push, pull.
-
GitHub
- 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
- Read this GitHub guide: Hello World
- Familiarize yourself with these concepts:
repo(sitory); branch;
pull request.
- Read this GitHub flow guide: Understanding
the GitHub Flow
- Familiarize yourself with
branch→commit→pull-request→review→
merge process.
-
Markdown —
Familiarize yourself with GitHub Markdown
notation.
-
Setup GitHub Copilot (see the plugins you installed Guide
1).
- GitHub Copilot
in VS Code — Understand Copilot usage
patterns, best practices, and pricing.
- Set up GitHub
Copilot in VS Code — Get set up to use
Copilot in VSCode as an individual.
- Get started
with GitHub Copilot in VS Code —
Practice the basics of using Copilot.
- Use chat in VS
Code — Understand the interaction
between Copilot and Copilot Chat.
- 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.