Students with enthusiasm – awesome! Spring CIT 275 students developed a multi-player top-down shooter game and presented their project twice last April, to faculty and staff at the Friday Forum and to community business leaders at the CIT Advisory Committee. They were proud of their product; it was easy to get them to share. However, I wanted them to share process too. How might this be possible?
These criteria were posted on Moodle, accompanied by a few sample topic suggestions:
- Relevant and “interesting”
- Abstract concept, concrete application
- Divisible into multiple requirements that can be deployed iteratively – i.e., good fit with agile programming
- Good for team development aligned with skills of current students
- Appropriate to manage with version control
- Architecturally sound (multi-project, custom classes and interfaces, IoC, DI); persistent data storage; multiple UI views
- Thoroughly testable (and tested)
Numbers two through seven were mine, needed to fulfill many of the requirements of our competency-based course. Number one was theirs, though, and they took it to heart.
“Relevant” is a curious concept. My sample topic suggestions listed ideas I found interesting – a Sudoku puzzle application (focus: logic), a 3D graph generator (focus: computer drawing), and a Dijkstra path optimization (focus: algorithms). The students seemed to appreciate and understand my intentions, gravitating as expected toward choice number 4: “Other ideas (focus TBD)”. They somehow believed that I would be open to their own choice, their own relevance. With just a little bit of prompting, I stood back and watched the conversations begin.
Over six two-week iterations, students continued to negotiate and encourage each other as they saw their vision morph into a playable product. A few dead ends, a few spec modifications, and several ah-ha! moments seasoned the project as it grew. I nudged here and there to make sure they included criteria two through seven, and soon I heard students themselves using the language of agile programming, design patterns, version control, and application test.
I’m not really a gamer. I’m of a different generation; I even had to buy my own Xbox controller to try their application. I understood their concepts, though, and that was enough for learning success. Along the way, I sprinkled in a bit of role-play, asking naïve questions to get them thinking about other aspects such as how they should document their work and how they could make features more intuitive.
By the end of the semester, students owned both product and process, ready to share both with anyone who would listen. Definitely a success!