Several of my software projects are in one way or another related to programming assignments that I gave to my students. However, these were not simple projects. [1] Simple programs have their place in teaching students how to program, but nothing builds their confidence like having written some part of a program that is ..., well, non-trivial.
I enjoy programming, and I’ve never shied away from letting others exam my code. I often frame my larger programming assignments in a way that requires me to do far more programming than the students do. I often give quite a bit of code as a starting point to the assignment, and I always complete the assignment myself well before it is due. Thus, I am able to demonstrate the correct running of the program and I’m also able to give better assistance when they struggle with the assignment. So, because of my personal efforts that often go far beyond just teaching the class, I am left with some nice programs that I can make available as open–source software [2] and integrate those efforts into my scholarship activities.
Ideally, we would like to give the students a problem description and have them do it all themselves. However, that is not always practical. Sometimes the students lack the confidence to know how to even get started on a larger project. Overwhelming the students can also slow the pace of the class resulting in a reduction of how much material is covered in the class. I have two teaching methods that I like to use to build students up to where they are able to attempt serious programming projects.
Footnotes
| [1] | I have plenty of simple programs too, they are not listed here. |
| [2] | Because students may be still working on the assignment, I am sometimes delayed on when I can release some programs as open–source, or I may not be able to release the versions of my programs that have the assignment completed. |
| [3] | I prefer this approach by quite a bit over taking a program and striping out part of the code and asking the students to fill in the missing code. I’ve done that on a few occasions when I could not think a feature for them to add and progressive assignments were not possible. From a student learning perspective, I am usuall not pleased with the results when I ask students to fill in the missing code. When students add a feature, it gives them ownership of a corner of the overall program. |