Week 1

Unix, Python, and our first project.

Read, test, and play around with the programs available at my Python page. Do you know how to do all that stuff?
Nothing to turn in. Bring questions to class on Wednesday, September 15.
Reading: The Tar Pit and The Mythical Man-Month by Fred Brooks. Available via Moodle.
By ready to discuss in class on Wednesday, September 15.
Unix tutorial
If you haven't done this tutorial in a previous class, make sure to go through it by Friday, September 17. Nothing to turn in.

Week 2

Functional and command-line interfaces. Style.

Readings: Chapter 7 (High-Quality Routines) and Section 32.3 (The Commento) from Code Complete, 2nd edition by Steve McConnell.
Read by Monday, September 20.
A dictionary log analyzer.
Source and documentation due by 9:50 AM Monday, Sep 27. Code reviews and revisions will follow.

Week 3

Testing. Defensive programming.

Code reviews and loganalyzer revision.
Reviews will be Tuesday and Wednesday Sep 28-29. Revision due Friday, Oct 1.
Readings: Chapter 5 (Design in Construction), 8 (Defensive Programming) and 22 (Developer Testing) of McConnell.
Read by Monday, Oct 4.

Week 4

Testing

Test-driven development: test cases for Mancala.
Submit via e-mail to Jeff by 9:50AM Wednesday, October 6.
Test-driven development part 2: the Mancala code and PyUnit test infrastructure.
Submit by 9:50AM Monday, October 11. Be prompt--we'll be in lab Monday testing your code against the full set of test cases generated by your classmates.
Did you read Chapter 22 yet?
Please do.

Week 5

Testing wrap-up. Java intro.

Testing lab
Hand in a program revision (if any) and a testing report by 11:59PM Oct 12
Getting started with Java
Due 9:50AM Wednesday, October 20
Read Chapters 1-3 of About Face 3.
Ideally before Wednesday, Oct 20, but definitely by Oct 22

Week 6

User interface design. Swing.

GUI mockups
Hand in jpegs (or other images) via e-mail by 9:40AM Friday, Oct 22.
Read in About Face 3: Chapters 1-3; the Personas subsection of Chapter 5; Chapter 6; up through Designing for the Web in Chapter 9; Chapters 11, 12, 16, and 17.
We'll talk through these ideas between now and Oct 29.

Week 7

More user interface design and Swing.

GUI implementation
Hand in code, data, and readme by 11:59PM Monday, Nov 1.
A layout sample program: LayoutExample.java, ButtonPanel.java, and TricolorPanel.java.
Compile these three and run "java LayoutExample" to see it at work.

Week 8

Web design. Design patterns.

A web page redesign report
Hand in as a PDF file via the Courses folder by 9:50AM Monday, Nov 8.
Read Chapters 1, 2, 4, 5, 9, and 12 of Head First Design Patterns.
We'll talk about these ideas between now and Nov 12. Get started with Chapters 1 and 2 soon, and chip away at the rest later.

Weeks 9, 10

Miscellaneous: UML, Make, API design, etc.

Code reviews for Java, and planning for final
Late week 9, more details later
Final project
Project plan due on paper Nov 12; project due Nov 22.
A polymorphism sample program: Playground.java, ButtonPanel.java, SpritePanel.java, Sprite.java, CircleSprite.java, SquareSprite.java, and MooseSprite.java.
Compile these and run "java Playground" to see it at work.
A little bit of threading in Python: threads.py, threads2.py, and threads3.py.