My sophomore Unity students were getting bored watching the Unity education series of videos I had them working through. I was identifying. I was bored watching videos also. We had pretty much proved to ourselves that we could do anything we wanted in Unity if we found the right tutorial. The kids were confident they could learn whatever they needed to do in Unity. That was what I was after. They were not afraid to learn on their own. One of the kids asked if the class could do some Python programming. (Be still my heart.) I had not planned to do Python with this group until next year. Next year they would be eligible for the dual-credit from the University but I figured why not, we can always quickly repeat what we do this year next year and then go on to bigger and better things. Now this group is a bunch of programming geeks. They like coding and tinkering with computers. I had done a little Python with them in a brief programming language parade earlier in the year and they have coded in Scratch and Small Basic. The group understands the fundamentals of coding so this should not be a great problem.
There is a problem. They are doing the projects at home for fun. They are looking at the book (“How to Think Like a Computer Scientist: Learning with Python 3 Documentation” by Wentworth, et al.) out of class. What I had planned to do in two or three class periods is taking less than one. I had a whole class lecture laid out on doing the program in outline form and some kind of pseudo code before sitting down to type. I started in on my talk and one of the kids holds up a piece of paper with a program outline. “We did that last night.” Smart kids can really mess with a schedule. What am I supposed to do? Ah, the burdens we teachers bare. I will suffer along no matter what the hardships.
Anyway we have started on the first major programming project. Major in the sense it is not one of the assignments in the book (none of which I had assigned but they were doing them for fun so I did not need to assign them) and requires assembling knowledge from several chapters to do the project. The project uses turtle graphics to draw a circular pattern of bricks. Initially the variables are the distance from the center to the inner edge of the first row of bricks and the number of rows. Later we make the brick dimensions variables.
I have done this project for years. It is my test project for a language with drawing capabilities. It is not a complex project but it tests multiple programming ideas: user input, modularity, parameters, loops, program organization and, most important of all, thinking before typing code. It is also expandable. Color the bricks, use a shape other than a rectangle for the bricks (this can be really tricky with some interesting math depending on the shape), draw the bricks in a spiral, and so on. I typically have the kids complete the project in the language we are working in then tell them to do it in two different languages. I give them a list of languages I know will work. They have to find the resources to learn the language and learn the language well enough to do the project. Since this is not a project I have seen a solution for yet on the internet they usually have some good hair pulling time involved. Good stuff.
The challenge for this class, at least as I see it at the moment, is seeing how far and long I can drag out this project. June is a long ways away and at the speed these kids are moving I have to have enough challenges laid out for them to last until the end of the school year.
Ah, the burdens we teachers bare (or is it bear?). Thank goodness for beer.