How to read this page
- Items marked ASSIGNMENT require you to hand something in, which you will do by adding the relevant
files to your (or your partner's) GitHub repository and pushing up to the GitHub server
- Items marked VIDEO, READING, or TASK do not require you to hand anything in.
Do these items by the date specified, or during the week in which the video or task appears.
- Items marked "QUESTIONS DG1" (or DG2) tell you what to prepare or think about before your first
(or second) Discussion Group session in the given week.
- Tuesday due dates have a due-time of 11:59PM Central.
- Friday due dates have a due-time of 5:00PM Central.
Ideas for improving the course
Week 0
Things to do right away, on or before the first day of class.
Week 1 (Jan 4-10)
What makes software good or bad? Setting up your computer. Version control.
Week 1.5
[TASK] Start learning the vi/vim editor in a terminal. You'll be glad you did.
Week 2 (Jan 11-17)
Command-line interface design and implementation. Writing good functions.
- [TASK] Fill out this brief survey about your partnership for the Hello World for Teams assignment.
- [VIDEO] (18:50) Intro to Unix, part 2. File permissions, redirecting input/output streams, environment variables, start-up files.
- [ASSIGNMENT part one 1/12, part two 1/15]
Books: command-line arguments and CSV
- [READ for DG1] articles on command-line design
- [QUESTIONS DG1]
(0) Did you remember to bring your first-draft command-line syntax for this week's program with you? (See
the Books assignment above.)
(1) What common features do you see in the command-line syntax of Unix commands?
(2) Which Unix commands or command options have you found most confusing, and why?
(3) What general principles would you propose for the design of good command-line interfaces?
- [READING for DG2] High-Quality Routines
from Code Complete, 2nd edition by Steve McConnell.
You have to be
connected to
the Carleton network for this link.
- [QUESTIONS DG2] What would Steve McConnell say are are the 2-3 most important ideas to keep in mind
if you want to write good functions/methods/routines? Do you agree with him?
- [VIDEO] (11:14) Tabs & spaces
- [VIDEO] (7:17) git config & git log
- [ASSIGNMENT] Don't forget to do the code review preparation this weekend, as described
under QUESTIONS DG1 at the top of Week 3.
Week 3 (Jan 18-24)
Code review. More UI design. Databases.
- [QUESTIONS DG1] Code review preparation
- [VIDEO] (23:58) Intro to databases
- [VIDEO] (23:57) psql details to help with a few problems people have been encountering while getting postgres runnning on their machines
- [TASK 1/20] Intro to PostgreSQL, psql, and SQL
- [READING DG2] From The Commento, from
Code Complete 2 by Steve McConnell
- [READING DG2] From About Face 3
by Alan Cooper, Robert Reimann, and David Cronin,
read selections from Chapter 1 (Goal-Oriented Design, pp), Chapter 10 (Orchestration and Flow, pp201-202),
and Chapter 11 (Eliminating Excise, pp223-248).
You have to be
connected to
the Carleton network for this link.
- [QUESTIONS DG2] (1) What kinds of comments do you now think you should include in your code, and why?
(2) Pick a website example from our Slack #examples channel and be ready to use the
ideas in the About Face 3 readings to discuss your selected website.
- [ASSIGNMENT 1/22] Revise your books.py based on feedback
from the code review. I compiled a few notes from the code reviews
to help you with the revision.
Week 4 (Jan 25-31)
Database design and population. PostgreSQL access from Python. HTTP-based APIs
Week 5 (Feb 1-7)
Implementing HTTP-based APIs using Flask. Intro to HTML and CSS.
Week 6 (Feb 8-14)
Midterm break. Starting the web application project. Requirements-gathering techniques.
- [ASSIGNMENT 2/12] Web app: selecting your data
- [READING 2/12] User stories, up through section 6 (Limitations)
- [READING 2/12] Use cases, sections 1 (History), 2 (General principle), 7 (Examples), 8 (Advantages) and 9 (Limitations)
- [READING 2/12] Requirements analysis
- [QUESTIONS DG2 2/12] Based on the readings listed above, what steps should you and your partner use to decide on the requirements for your web application? Which of the techniques described in the readings is appropriate and feasible for a 4-week class project?
- [ASSIGNMENT 2/16] Web app: requirements & wireframes
Week 7 (Feb 15-21)
Web app project: server side. Test-Driven Development. Accessibility.
Week 8 (Feb 22-28)
Web app project: end-to-end system in place, and then start iterating.
- [READING 2/22] Chapters 9 (Usability on 10 cents a day) and 11 (Usability as common courtesy) from
Don't Make Me Think, Revisited.
- [QUESTIONS DG1] (1) Interesting ideas from the readings? (2) What stuff is worrying you about the project?
(3) Which is better? Project due last day of classes, or last day of finals?
- [TASK] "git pull" your copy of
my GitHub repository and take note of the new
pieces: javascript-samples, tiny-webapp, maps, graphs. You may find these handy soon.
- [TASK] Intro to Javascript
- [ASSIGNMENT 2/23] Web app: setting up a rudimentary end-to-end system
- [VIDEO] (56:47) A walkthrough of the end-to-end setup. This is a recording of one of last fall's discussion group Zoom sessions in which I just talked people through the process of doing the
end-to-end assignment. Here are the
notes
that I refer to in the video. Note that at the time of this session, they had already done
some initial HTML/CSS work on their web apps. Otherwise, the content of this video should apply for you
just fine, using the tiny-webapp folder in my GitHub repository.
- [VIDEO] (42:29) Intro to Javascript
Week 9 (Mar 1-7)
Web app project: getting to a first draft. Miscellaneous topics along the way.
- [INFO] This is a great tutorial about flexbox. Check it out if you need help doing layout on your pages.
- [VIDEO] (16:43) Tiny intro to bootstrap
- [ASSIGNMENT 3/5] Web app: first draft
- [READING 3/5] The Tar Pit, by Fred Brooks, a chapter from his
book The Mythical Man-Month. (Note that the book was written in 1975, not the 1995 of the edition
this copy was taken from.) NOTE: This document is only viewable if you're connected to the Carleton network.
- [READING 3/5] An excerpt from Close to the Machine: Technophilia and its Discontents, by Ellen Ullman. NOTE: This document is only viewable if you're connected to the Carleton network.
- [QUESTIONS DG2] Reactions to the Ullman and Brooks readings?
Week 10 & finals week (Mar 8-16)
Code review and wrapping things up
- [QUESTIONS DG1] Web app: code review
- [ASSIGNMENT 5:00PM 3/15] Web app: final product
- [FINAL CLASS 3/10] (This is absolutely optional, but I hope to see you anyway)
Let's all get together at 8:30AM Wednesday, March 10, to have a little wrap-up
discussion. I'll run through a few lessons I've learned over my programming career,
and we can talk about anything else you want to end with. My "lessons" slides include a handful
of my most entertaining customer emails ever.