Teaching Game Design
I'm not sure I did this last summer, but now that I've had about a week away from the job, it's time to do a wrap up of what I've been doing for the past six weeks. After graduating, many people have the time to reminisce about their past four years, go to a bunch of parties, and spend a few weeks figuring out what's next. Then there's me, running around like a madman because I'm trying to move all my stuff out of my apartment in about four days time. This came about because roughly a week after graduating, I flew out to Mackinac Island, in northern Michigan, to start my second summer of teaching for Digital Media Academy. I spent about a week there, teaching Game Design with Minecraft in a very cool setting (the island was amazing), and then five weeks back home at the University of Chicago, teaching Game Design with Minecraft, Game Programming with Python, and C# with Unity for Mobile Games. Each week saw me with a different class of students, each with their own personalities and class environment, meaning that life was never boring.
Game Design with Minecraft (Ages: 6 -16)
I'll start off by saying this. The week I spent teaching at Mackinac Island was like nothing I've ever experienced before. Just the location alone made it worth the trip, as the island itself is gorgeous and super small. In fact, the only modes of transportation are by horse, by bike, or by foot, as no cars are allowed on the island. As I told quite a few of my friends, this felt almost like stepping into the game Animal Crossing, where everybody knows each other and everyone helps each other out. I taught in a schoolhouse, to a class of kids that lived on the island year round, so this was a big thing for them. Normally the age range in the class isn't this large, which meant I had to adapt some of the lessons, but the idea of the class stayed the same, teach the fundamentals of designing a "game" through the use of Minecraft. For those that are unaware, Minecraft offers the ability for its Players to create adventures that other people can play, called Adventure Maps. The idea of this class was to break down the key game development jobs into roles that could be used to build these maps. What we covered, for the class, was a little bit about how these roles work (let's be honest, most kids know more about Minecraft then most of us) and a lot about how to work as a team. I'll say this, the most important lesson that I kept covering in the class was not about how to do something in Minecraft, but how to work as a team and solve problems together. I had a few lessons that covered the how to dos in Minecraft, but a lot of my lessons covered best game design practices such as pre-production, getting a plan, keeping a project in scope, and working as a team to get something done on time (including leaving time for testing). It's probably my favorite class to teach because half of the week is spent interacting with small teams, seeing their creations, offering guidance and suggestions, and just answering general game design questions. I'm a fan of the "learn through projects" method, instead of assignments and grading them. I could have easily told the kids they had to have a project which included x, y, and z, but then they build only those items and imagination is ruined. Moral of the story, DON'T RUIN THE IMAGINATION OF THE KIDS. There were a lot of inspiring things around the island for the kids to talk about and for me to visit while on the off hours, so each day I could come in with new ideas for the kids to try. I'll say, this was probably the most interesting and relaxing week of teaching DMA and I'd do it again in a heartbeat. Oh, and the fudge on the island? It's about the best fudge I've ever had.
University of Chicago
These are my "stomping grounds" as they would say. Here is where it's more than just me teaching, it's a full camp with an awesome staff and directors, teaching 100+ kids a week with roughly seven classes a week. What I like about this location is that my fellow teachers, and teachers assistants, are pretty awesome and have a bunch of knowledge to share with each other. It's also great to see the kids moving around and sharing their knowledge. The campus itself is gorgeous and a treat to walk around, looking at the architecture and enjoying everything about it. I taught the same Game Design with Minecraft class three times, so I'll speak on it last (it ran about the same as Mackinac).
Intro to Game Programming with Python (Ages: 12-17)
Last year, I was one of the TA's for this class and so my goal for this year was to avoid all of the mistakes that the class had last year. Guess what, I ran into pretty much all the same mistakes, problems, and issues again. Once was bad, two times felt even worse. We used Python with a game engine called Pygame, and really, Pygame is just not that good (at least for what we were using it for). The idea of the class is to teach kids about the basics of game programming with Python, which is a great language to pick up and teach, and is quickly becoming the popular game programming language. What's interesting about this class is it's very project based, but with more individual lessons and projects to build, and then a final project being based off of what we've taught. How I went about teaching it was that we picked a couple of the projects, went through them, and then did specific examples based on things that the students would want to do. The class dynamic here held a bunch of students that were really smart and didn't need much guidance from me, beyond what we taught, and other students that really needed me or my TA sitting right next to them the entire time. Unfortunately, most of the kids that were super smart also found that they had to really scope back their ideas, which is tough to watch as a teacher. These kids are still at the point where if they are told they can't do something because it's not going to be possible, they get upset and then I feel bad and ultimately try and find a solution that they can live with. However, the end result were projects that actually looked good and I'm pretty sure there are going to be more than a few of them that I think are going to become great games programmers.
C# with Unity for Mobile Games (Ages:12-17)
This was a pretty awesome class to teach, it also happened to be the smallest class I taught. There were only seven students in the class, which meant that I didn't have to keep my voice at a loud volume and I felt more like I was talking to them as a mentor, and less as the "dude in charge of teaching". This class covered how to build mobile games using both the Unity Game Engine and C# coding, neither of which are strangers to me. I was able to approach this class a lot more personally, using a lot of previous Unity experiences to teach students tricks about how to work the engine. Through the course of the class, we created two guided projects and then a final project of their choosing. The first project was really cool, because we built flappy bird in almost a day (THAT GAME WILL NEVER DIE), and it was really good to see the kids playing it from their phones. Probably the biggest issue here was having to deploy iPhone games through the DMA Developer Account, because we had to build the Unity project from my TA's laptop (a mac), and then deploy the project in XCode. A bit tricky, but not terribly hard to understand and it worked, which was the cool thing. For the most part, everybody in the class wanted to follow along with me, but there were a couple of superstars that picked up everything I was talking about, and made final projects that were really fun to play. All of them learned about instantiating objects, placing things in such a way that made sense, inheritance (oof), and object oriented programming (singletons were our friends). I guess my biggest takeaway here is that in situations with superstar students, the best thing is to offer them guidance and then let them work on their own. If you get sucked into what they are doing and just helping them, the kids who are really struggling never get the attention they truly need. Thankfully, we didn't have this issue but it was hard, a couple of times, to not just sit by the superstars and watch them work.
Game Design with Minecraft (Ages: 8-11)
I taught this class three teams at U. Chicago and each time was super different. Well, okay, I covered the same stuff and ran the class almost the same was as Mackinac Island, but added in a couple more things. The first two days of the class, we cover the technical stuff in Minecraft, such as how to build quickly, how to use Redstone (think of engineering stuff), and how to create art of the game. On the second day (Tuesday), we also had the kids fill out resumes and apply for the positions we want. This was all the same is Mackinac, but I got the idea in my head that we should do interviews, and this was probably the best thing yet. It does take a bit of time, but while we interviewed the kids, everyone else was practicing the skills they'd probably be using for the rest of the week. The kids, they loved this because it gave them the chance to tell us why they really wanted their job. For me, it was great because I could safely make decisions on teams and who goes into what role, knowing that every time would turn out a good project. Other than that, the class was run the same way, with kids doing a couple of minor team assignments like coming up with a name and designing a flag, and then we dove into pre-production. This is the hardest thing for 8 year olds because they want to just start building and creating, without a plan. So I had each team answer specific questions and make concrete plans, which was hard for them, but we all survived and soon enough, everyone is in Minecraft and learning. Every time we'd show off final projects, I would get even more impressed with the imagination of kids and that these guys could really be some great designers some day.
Okay, this was a super long blog post. I'm really sorry about that but I wanted to use it as a complete digest of how I taught my classes (in case I'm teaching again next year). Feel free to comment below and add in your thoughts, either to my strategies or if you've been in similar positions and how you went about teaching your classes. Let's learn from each other!