Week 1
Getting started thinking about software. Also, a few new tools.
- [ASSIGNMENT: do right away] Accept the invitation to join our class Slack channel, and
set up Slack so that you'll check it once a day for the term.
- [ASSIGNMENT: do right away] Create a GitHub account (if you don't already have one) and post
your GitHub account name to the appropriate Slack thread once you have an account.
Instructions are provided in the "Hello, World" assignment linked below.
- [ASSIGNMENT due 11:59PM 9/13] Hello, World: a
short introduction to git
and make
- [ASSIGNMENT due 11:59PM 9/18]
Books, phase 1: CSV and command-line arguments
- [READING: skim by 9/14]
Test-driven development (TDD).
The core idea here is very simple, but as you'll see from the Wikipedia article, it has accumulated
a lot of formalism. Read enough to get a feel for the basics.
- [READING: read by 9/17] Chapters 1 (Clean Code) and 2 (Meaningful Names) from
Clean Code, by Robert C. Martin. We will start Monday's class with some discussion of
theses chapters. Use those famous liberal arts critical thinking skills here: what is Martin
trying to say? what are his biases, explicit or implicit? are his arguments persuasive?
what are his strongest and weakest points? etc.
- [LAB: in class, 9/14] Unit testing with PyUnit.
Nothing to hand in.
Week 1.5
Start learning vim or emacs in a terminal. Every programmer should know how to use one or both
of these venerable editors. They're both old, extremely widely available, and very powerful. It takes time
to learn them, but it's worth it.
- vi (pronounced VEE-EYE) dates back to 1976,
and is my editor of choice. Its modern versions are usually referred to as "vim" (for "vi improved", pronounced VIM).
There are tons of tutorials, including a vim-learning game,
a kind of gamelike tutorial, and lots of
short introductions.
- emacs also originated in 1976, and is
typically associated with the GNU Project.
Though vim is powerful, emacs has greater aspirations, with its "e" standing for "extensible."
You can work with emacs as just a text editor, but you can also use its extensions to make emacs
be your IDE/home-base/terminal/.... I'm not an emacs user (I tried in the early 90s, and it hurt
my left wrist, so I went back to vi), so I'm not expert at the huge variety of things you can do
with it. But again, there are many, many tutorials on the subject, including
the official GNU Emacs guided tour,
this "absolute beginner's guide",
etc.
Week 2
Test-driven development (TDD). What makes a good functional interface?
Week 3
More on code quality. HTTP-based APIs.
Week 4
Web application planning; user stories & use cases; git workflows, etc.
Week 5
Mockups, SQL & other database stuff, Flask
Week 6
Midterm break, API implementation, HTML & CSS
Week 7
Web application: HTML, CSS, and & Javascript
Week 8
Usability & interaction design. JavaFX. Design patterns.
- [READING: by class time Friday, 11/2] Excerpts from
About Face 3: Essentials of Interaction Design by Alan Cooper, Robert Reimann, and David Cronin. It's about 75 pages total, so
get started early. Be ready to talk about the main themes: user goals, mental models, excise and navigation,
experience level (beginner/intermediate/expert), posture, etc.
- [READING: by class time Monday, 11/5] Read about
Design Patterns
in general, and the Observer Pattern
and the Model View Controller (MVC)
pattern in particular. All of these topics are described by innumerable bloggers and youtubists out there
(e.g. this
MVC explanation
is probably clearer than the Wikipedia page). We'll continue to discuss these ideas in the coming week.
- [OPTIONAL READING] If you want to (and have time to) go a little deeper into object-oriented design,
try this tutorial,
which does a pretty clear job of explaining the object-oriented design principles known as
SOLID. Watch out, though—some of the
earlier code in the tutorial (e.g. for the explanation of the "S" in "SOLID") has some serious design problems
that are only fixed when considering the later principles.
Weeks 9, 10
MVC, final project, miscellaneous