We're developing our ability to turn ideas into reality by pursuing increasingly ambitious projects.
During Block Four, middle school students spent time working on projects in all of their morning classes. In both Introductory and Intermediate Python, this two-week project period occurred at the very start of the block. I decided to keep things simple and gave students free rein to choose a coding project they would like to work on during that time. My only request was that students design a project that is modular in nature, so that if they were not able to complete the full project in the allotted time, the part of the project that they were able to complete would still be interesting in its own right.
I admit to having concern that students would have difficulty designing projects appropriate to their current ability level, but for the most part these fears were unfounded, as the students demonstrated their ability to choose suitable projects and to write interesting, creative code. In Introductory Python, one very nice project was a Morse Code translation program. This was not just a simple 1-1 correspondence between the 26 letters of the alphabet and their Morse Code equivalents, but also included standard Morse Code abbreviations, and the ideas of "Prosigns" and "Q Codes", which I had never heard of before. One learns something new every day at Proof School!
Students in the Intermediate Python class possess a greater amount of coding experience, so perhaps not surprisingly, they were more likely to design overly ambitious projects. I received a fairly large number of partially completed games, which nonetheless contained a great deal of nicely written code. One such example was a Pacman game. The full project proposal was to recreate the arcade game exactly, but five hours of coding time was not nearly enough time to allow that to happen. However, the student was able to code up the playing field, complete with dots and walls, and had Pacman move around the screen, eating the dots, and not being allowed to move through the walls. The final product is shown below:
Overall, I thought this two-week project period was class time well spent. The students appreciated having complete freedom to choose what they wanted to work on, and got the opportunity to design a "mini-project". This experience should serve the students well as they start to design their larger projects for Block Five, regardless of whether or not those Block Five projects are related to computer science.