Day 10 - Thursday, May 1, 2014

Summary: Project Overviews


1. Use overhead projector and go through each project description with the whole class, explaining some of the background, why the project is interesting and what programming skills it will entail.

2. After presenting projects, they will be assigned. Each class has a fixed number of each project. Pass out randomly to each student color-coded cards with the project names on them. Allow them to exchange cards with each other until they are happy with their assigned project. (Note: there was very little exchanging. Most people were happy with what they got.)

3. Have each group of students working on a project get together and talk about how they can collaborate and support each other. Encourage the groups to discuss strategies and general approaches but remind them of the rules for academic honesty as written in the syllabus.

4. I initiated a verbal discussion of Program Design strategies with the remaining class period, but next time I will probably prepare a document with guidance to distribute on PolyLearn for their reference. One could present an entire course on program design, so I stuck to some general advice:

  • Design - Identify the problem that you need to solve and/or questions that you need to answer, then create a list of steps for how to get to the solution/answer.
  • Modularization - break a complex problem into easy-to-implement building blocks that can be independently tested.
  • Scaffolding - like an outline of a software program in which skeletons of the main functions for the program are developed that take in the necessary inputs and just pass default information back until you are ready to implement the "guts"
  • Documentation - comment your code as you go, include docstrings in all major functions
  • Testing - include test cases for each function that demonstrate they work as expected.
  • Debugging - where the bulk of the work takes place.

All content is under a modified MIT License, and can be freely used and adapted. See the full license text here.