Sunday, July 29, 2018

Game Design and Development with Unity

Well, I finished building another game with the Unity game engine.  I have to admit that it is a lot of fun, but I also see the amount of change that is happening in the gaming space and with the Unity game engine.  This Space Shooter game was not an original game of my own creation, but rather I followed a detailed, step-by-step tutorial put out by Unity.  The tutorial was created with a version of Unity that is a few years old.  Because of the changes in gaming industry and with the Unity game engine, many of the steps in the tutorial didn't quite work.  This gave me the opportunity to dive into the Unity documentation and do some debugging on my own.  In short it was a good learning experience for me and the kind that I would like my students to have.  Admittedly, it is a fairly simple game but it let me work with game design, coding, audio, and deploying an application to the web.  For me it is only deployed locally on my machine, but everything is there so that it could be moved to a web server.

What I have learned

The plan for the year is a new course in Game Design and Development using the Unity game engine.  Initially, I was rather concerned about teaching this class.  There was so much to learn -- the game engine, C#, in addition to building out 14 units following the Unity curriculum framework.  However, when I stepped back and thought about it, I realized that over the years, I have learned many new programming languages, IDEs, and development tools.  This was going to be just one more language, one more IDE, and one more new way of thinking of application development.

So far I have built out three of the 14 units and plan to complete two more units before school starts in two short weeks.  I have also completed three simple games, following tutorials.  But in doing so I have made many mistakes, noted what they were, how they were resolved and am quite sure that many of my students will run into similar problems that I now can recognize and guide through problem determination and resolution.

What to teach and how to teach it

Unity is kind enough to provide a curriculum framework for teachers who want to take game design and development to the classroom.  In addition, they provide no charge licences to for education if you apply for one of the "licenses for education grants".  The grant process was very easy and I will be having the licenses installed on my classroom machines next week.

The curriculum framework takes students through a straightforward process which starts with looking at games and reviewing them with their own thoughts and opinions, then learning about the game design process and reviewing games again with the design process in mind.  Following units go into project management, story boarding, rapid prototyping, etc.  Each unit has students learn a concept, use the concept in project or reflection paper, and then add a section to their Game Design Document which is the capstone of the first semester.  The second semester then builds on that with Game Development.

My hope is to pull in local indie game developers to evaluate student game designs early on and then at the end of the semester when they have their completed Game Design Document and summary presentation.  After digging into Career and Technical Education at last weeks conference, I want to provide students with that real-world input on their projects.  

When I started preparing for this course I was mostly concerned about everything that I didn't know about game design and development.  Now, I still have many gaps in my knowledge, but I am excited to learn along with my students something that could be a fun activity or lead to a career!

Sunday, July 22, 2018

Career and Technical Education (CTE)

This past week I had the privilege of attending the CACTE 2018 conference (#CACTE18) in beautiful Breckenridge, CO.  In addition to some nice hikes one where I cam across a small red fox on the same trail I was taking, I also managed to learn alot. 
Red fox on a hiking trail in Breckenridge

Throughout the week, I attended all of the sessions that I needed in order to become a credentialed CTE teacher in Colorado, as well as completing assignments that had me reflect on the program we would be implementing at Pinnacle Charter School.  I found that the sessions motivated me, helped me think about the classes I would teach, and provided great ideas on ways to help the students in my classes grow in the classroom as well as outside of it.

Motivation

Our keynote speaker Mark Perna (@MarkPerna) motivated the entire audience with his energy and enthusiasm about "unleashing passion, purpose, and performance in younger generations".  He created a very memorable and motivating moment for me with an analogy of tree climbing.  I loved to climb trees as a child.  He described that moment when you are up high and out on a branch and it begins to creak.  Immediately, you have a sense of urgency, plan quickly your next steps, move into action.  His point was that we are in such a branch creaking moment in life of our nation.  That we need to look at education and training with new eyes, and prepare for a future for our students that doesn't involve staying on a branch that breaks, but instead prepares them to learn.  Learn for new jobs and learn for the sake of learning so that these students can prepare for the next and the next job of their futures.

This was only one of many memorable word images that Perna created for me.  Fortunately, I and everyone in the audience received a copy of his book, Answering Why which I am looking forward to reading.  In general I found that so many of our speakers, exhibitors, and conference organizers were highly motivated and had a contagious energy that rubbed off on the participants.

Class Reflection

The conference and the credentialing assignments gave me time and opportunity to reflect on the courses I am teaching as well as providing me with information and ideas for future classes.  I was reminded that the Exploring Computer Science class does an good job of having students get a taste of computer hardware, internet safety, programming, web design and robotics.  However during the session on lesson design, I focused on adding the component of learning about careers associated with each of these and how that will give students the connection of computer topics to a career.  I am looking forward to teaching the Game Design/Development class which will provide hands-on opportunities to learn by doing in the creation of computer games.  However, during the Work Based Learning session I looked at expanding this to give students feedback on their projects from people working in the field, how much more valuable is the content as well as the connection to a real person working in the field.  This is still a work in progress -- I have joined a group of professional game designers in the area and hope that will lead to classroom connections.  The AP Computer Science class has opportunities to visit with industry professionals and provide valuable Work Based Learning, but extending that opportunity students planning to go into the field, to have the potential for internships or job shadowing adds depth and insight that classwork and discussions don't offer.

Each of these thoughts came from a different session that I attended and I found it interesting that in each session I found myself reflecting on a different class that I will be teaching next year.  Visiting with the exhibitors opened my eyes to some future classes.  One of the challenges I faced this summer was getting up to speed on using the Unity Game Engine and creating a curriculum to teach it.  I was feeling the need to be "the expert" on everything I taught.  In turn this makes it difficult to add any other new classes, as I would need to become an expert on hardware, networking, and security before I could offer classes on these topics.  Now there are powerful tools where students can learn independently in areas that I am exploring but not an expert in.  TestOut looks like a great tool for me to offer some new classes sooner rather than later.

Student Growth Outside of the Classroom

The last area I focused on during the week was setting up and facilitating  a Student Organization.  The Technology Student Association (TSA) is the student led club that I will be working with next year.  I received some good information on setting it up and then backing away and letting the students run the organization.

I focused on five areas that I want to see accomplished by TSA during the upcoming school year:

  1. Establish a student leadership team for the club.
  2. Identify and complete a Financial Leadership Project so that the club will have the finances to accomplish its other goals for the year.
  3. Identify, prepare and compete in at least one state competition.
  4. Identify and complete a community service activity that will reach out into our community, make our club known, and doing something good outside of the school.
  5. Identify and complete an outreach activity to make the club known to other students in the school.
Actually all I want to accomplish is the first item.  At that point, I have thoughts and ideas about the remaining four things, but I really want to step back and let the students take the lead.

Lots of takeaways from this past week and it really has me excited about the upcoming year!

Sunday, July 15, 2018

AP Summer Institute

Last week I attended the AP Summer Institute hosted by the Colorado Education Initiative (CEI) at Metropolitan State University (MSU).  In short it was a valuable four days of education, practice, and discussion on preparing to teach AP Computer Science A in the fall.  The week started with a kickoff speakers from CEI, MSU, and a student who had participated in a number of AP classes.  The initial speakers were inspirational and did an excellent job of reminding me why I am an educator and the impact that teaching has.  After pumping us all up, we split into our AP courses and dove into the details of preparing for teaching an AP class.  The AP Computer Science A class included both new and experienced teachers.

Education
One of my concerns going in was that since I had been teaching Java for the past three years, the training would focus on the basics of Java and not be valuable.  I was pleasantly surprised.  Although we did cover content, it was focused on the sections that were either heavily focused on in the AP test or were the more challenging aspects of the course.  The two areas that I really wanted to focus on!  Significant portions of days 2 and 3 covered arrays versus ArrayLists and recursion.  Concerning arrays and ArrayLists we looked at what they are, when to use each, and coding examples where you needed to pick one or the other.  For recursion we looked at when it is appropriate to use recursion and the places on the AP test that would focus on it.  Recursion was particularly good since I am a bit embarrassed to admit, but in 26 years in IT I never found a need to use recursion and therefore I avoided the topic in my Java class.  It is interesting how our personal biases in a field lead to the direction that we give our classes -- I can see that it is something that I will need to keep a focus on as I teach AP CSA.

Practice
The training was a good mix which started with education and looking at the topics but very quickly went into hands on training.  We were given the opportunity to code several of the Free Response Questions.  To add some urgency our time was cut in half of what would be expected for the students taking the AP Test.  Then after coding each we stepped back and discussed our solutions.  Following that we looked at various students solutions and the grading rubric and looked at how they would be scored.  This was invaluable as it will help me build test questions that are similar to what students will see on the test and also allow me to grade the questions in a manner similar to the test. 

The second area of practice that we did was to look at a couple of the labs that come with the AP CSA course.  We dove into the Pictures Lab and the Elevens Lab.  The Pictures lab was a bit of a challenge for me to setup in Eclipse, but once there I gained a great appreciation for the amount of work that went into creating a lab that would be valuable for learning skills dealing with 2D arrays and other constructs and at the same time giving students something that would be real-world and engaging.  As we worked through examples manipulating individual pixels in picture, copying portions and reflecting portions, we could see first hand how various ways of traversing arrays could be tested for the students.  Seeing the results from the manipulated pictures gives you a feel for the type of programming involved with something like GIMP2 or PhotoShop.  I was impressed!

Discussion
The final area that we spent a considerable amount of time with was discussion with our peers.  This would be one of those rare times when 20+ high school computer science teachers would be in the same room at the same time.  The vast majority of us were the only CS teacher at our school, so we have no peer group to consult with on a regular basis.  We exchanged ideas on curriculum, pedagogy, and many details -- setting up grade books and how to weight grades, whether or not to assign homework, when to assign group work and when to have students working alone, ways to teach various topics, and the list goes on.  I found these times incredibly valuable to find out how others were planning to teach the course.  Another key to making this part successful was that we had a single session for new AP CSA teachers such as me as well as experienced AP CSA teachers.  The reason was that we were a fairly small group so it made sense to combine us, but in fact it was valuable for the new teachers to hear about the pitfalls and strategies and methods that experienced teachers had found that were helpful for their students.

This was a valuable week and I feel much more prepared to teach AP Computer Science A -- in a few short weeks!

Sunday, July 8, 2018

I am a Game Designer

I am having great fun this summer!  There was a nice vacation, relaxing hikes with the dogs, and enjoyable times watching the garden grow.  But during the times that I am in front of my computer, I have been learning about and building games with the Unity game engine.  So far my games are basic and simply following the tutorials that they have built.  But there is a great sense of satisfaction when the game objects and code I created culminate in a game that I can play!  As the ball rolls and comes in contact with one of the rotating cubes, the player scores a point.  When all twelve cubes are collected a message saying "You Win!" appears.
In addition Unity appears to want to have teachers and students learn, they have provided a nice curriculum framework with 14 units of study on Game Design and Game Development  (https://store.unity.com/education).  Of course it would be nicer if the framework was fleshed out a bit more but it certainly gives me plenty of lesson ideas and steps toward teaching concepts.  The final piece they provide is no charge licenses for educational purposes (https://store.unity.com/education/license-grant-program).  I applied for this as a teacher, filled out a short set of questions and now have access to education licenses for my students.

I have two units completely fleshed out with discussion starters, guided learning, and assignments.  Of course I was intending to have 4 or 5 finished at this point, but I have been having so much fun playing around with Unity that the lesson development has been slow.  The fact that I find it engaging as a person who is not a big gamer, I think my students will find this something that they enjoy as well.

The content of the curriculum framework seems to be solid with a set of learning objectives for each unit.  Students learn about the basics of game design and development.  Gradually building up to a final unique game created by each student.  I have supplemented these lesson ideas with sections on coding in C# so that the course will be a bit more code heavy.  But I want to use it as a means to get more students into AP Computer Science.

I have plans to have writing involved with each of the lessons as students will be writing in a Game Developers Journal. so students will be writing about what they have learned each day.  Each unit has a set of objectives.  Each lesson highlights the unit objectives that will be covered.  I have also built for each unit three graded portions:  a skills based assignment for a grade on game design, project management, the business of game development, etc; a component of a capstone project that is created; and finally a programming assignment in C# so that coding skills are emphasized as well.  As an elective class I am not looking for this class to have homework, so I want everything to be able to be completed in class.  

Now all I need to do is stop playing with the game engine and flesh out another four units of the curriculum so that I have one semester planned before we hit August!