There are about six weeks of school left. Four weeks for the seniors. It is time to look back on the year and consider how things worked out. This year I only taught one CS course, two sections of “Introduction to Game Programming”. The course looked at Gamemaker and Unity.
I had three advanced students also look at Blender and Amazon Lumberyard. The Lumberyard was just for them to make a quick comparison with Unity. The three advanced students knew nothing more than the rest of the students in the classes about the various software, they were just into it a lot more so I separated them from the crowd and turned them loose. This was a great decision. Two (senior boys) of the three worked in tandem. Incredible team. The third was a quiet sophomore girl who is an uber-geek. She worked by herself in the same small room (my office) as the two boys. Although she did not work with the seniors she was not treated separately by them and did contribute to conversations. Not a bad dynamic at all. If I am able I will try to separate the dedicated from the not so dedicated in future classes. I do realize it has to be done in such a way that it does not cause any tension. In this case it worked out perfectly.
Prior to deciding to offer this course I knew nothing about Unity, Blender or Lumberyard. I had dabbled in Gamemaker enough to understand the scheme but not enough to really be proficient. Since my expertise was nonexistent, I knew this was going to be a course taught by on-line tutorials, YouTube and anything else I could round up. It was not going to be a lecture course. My programming course involve very little lecture anyway so no great change there. The biggest issue for me was finding and previewing the tutorials and YouTube videos. I have learned from previous errors to always work through the videos before presenting them to the class to use. There is some bad stuff out there.
Initially I thought of this as being a programming course. The more I and the kids got into it the more I realized it is less programming and more like a building course. Using tutorials you do more typing code than learning code. It is a lot of “type this and see what happens”. It is possible to learn some coding this way but it is not to efficient. It is easy to just cut and paste, with no attention paid to what you just cut and pasted. I had to shift my “teach coding” mind set to “teach problem solving” mind set. Of the seventeen kids in the course I would say about half got to the point where they could build what they wanted for a game from just looking on-line for solutions. They could recognize coding errors and understand what the code was doing. The other half can cut and paste. Four cannot read directions or follow a simple video tutorial. Experience with other classes tells me that overall that is really not bad. The scary thing for me is that the seven freshmen in the course were only surpassed by my three advanced students. I have to dream up cool and exciting programming and CS stuff for them for another three years. eeek.
I do plan to continue offering this “Introduction to Game Programming” course. It is a great way to get kids started with some fun building using cookbook coding. It is my idea of a great introductory drug. It is possible for those that want to work in the game writing field to take something like Unity and run with it.
I do not think the course can really be turned into a true programming course at this level. The background required in C#, in particular the Unity specific code required from C#, is just more than we have time for. There are also aspects of coding that just do not come into play with the Unity environment. The idea of code for loops and iteration come to mind. For a true coding class I will stick with Small Basic and Python. I am not says a good coding class could not be made using Unity and C# but the time involved would likely be more than a high school student could commit. Or a high school teacher. To really teach programming with Unity the focus would have to change. Right now everything is “Unity using C#”. It would have to switch to “C# using Unity”. Not quite as tempting or as catchy.
There is one huge drawback to teaching Unity. It sucks time like a black hole. You get this cool idea for a game and four hours later you come up for air. I am really glad I did not set up a comfortable place to work on my computer at home. I would never get out of the house.