Thoughs on improving the course next time
Week 1
Two tools, a perspective, and a habit
- [Due 11:59PM 3/30] The tools: IntelliJ and git
- [Skim by 4/1 4/4] The perspective:
User-centered design (UCD).
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 understand the core idea.
- [Skim by 4/1 4/4] The habit:
Test-driven development (TDD).
Ditto the comments on UCD
- [Read by 4/1 4/4] Sections 1-6 and 14-17 from The Pragmatic Programmer. Come to class ready to
discuss today's readings.
- [Do by 4/4] Work through the official Oracle tutorial on
Java regular expressions,
from the Introduction through the Boundary Matchers section. There's nothing to hand in here, but
you should play around with regular expressions until you feel like you can do some reasonably
sophisticated things with them. (Could you, for example, extract all the email addresses out of
a document?) Bring questions to class as needed.
- [Due 11:59PM 4/4] Unit Tests for Word Game Assistant
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.
- vi (pronounced VEE-EYE) dates back to the 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
Functional and command-line interfaces
Week 3
APIs, REST, design-by-contract, style
Week 4
The web app assignment, databases, WSGI frameworks
Week 5
PostgreSQL from Python, HTML, CSS, Javascript
Weeks 6, 7
HTML, CSS, templates in flask, Javascript
- [Read now] The Guiding Principles section (i.e. Chapters 1-5) of Steve Krug's
Don't Make Me Think, Revisited (3rd edition)
- [Read now] Section 10 (Tracer Bullets) of The Pragmatic Programmer
- [Due 11:59PM Monday, 5/9] Have a functioning draft of
the Web App, Phase 4 ready in your repository and running
on thacker, and share your repository with your tablemates in advance of Wednesday's code reviews.
- [Due 11:59PM Friday, 5/13] Submit your final Web App, Phase 4, taking into account the
feedback you got in Wednesday's code reviews.
- [In class 5/4] Here are three profoundly ugly HTML/CSS example pages:
example1.html,
example2.html, and
example3.html.
Learn the content, but please don't emulate the ugliness.
- [In class 5/4] Here's a Flask app illustrating templates.
Read the readme.txt file.
- [In class 5/6] Javascript lab
Week 8
Usability. Design patterns. JavaFX.
Weeks 9, 10
MVC, final project, miscellaneous