Archive for January, 2019

Coding is not always the hard part

January 29, 2019

This semester we are going to dabble in VR with Unity.  Make some simple Google Cardboard games just to get a feel for the possibilities.  I have done VR before with Unity 5. Guess what, there are big differences between Unity 5 and Unity 2018 and VR.  Big enough that all the old YouTube tutorials I used to use do not work so well any more. Big enough where what I did in 5 minutes took me about an hour to figure out.  Once figured out it is not big deal, in fact it is easier than Unity 5.

In situations like this coding is always the easy part.  Doing a new setup, figuring out the latest support downloads (android SDK, correct version of Java, best IDE and so on) are what can make teaching a course like Unity that is software based so difficult.  The quadratic formula has not changed in a couple hundred years, Unity had an update late week. Things like do we go with Python 2 or Python 3? Java or Javascript? Old Unity or new Unity? These are the decisions and directions that can drive a CS teacher batty.

I had better get back to work.  There is a free AR with Unity application I want to look at.  I am never happy with teaching what I used to teach. There is always something new to look at.  Cool.

The Road to Unity

January 17, 2019

I teach a game programming class using Unity.  I do not know Unity very well but we have lots of fun exploring and trying to make simple games.  Unity uses C#. I do not know C# very well either, especially the special functions of Unity, but I am getting the hang of it.  So when I have a success I celebrate. There is a simple strategy game on the internet called Red Remover. The premise is very simple.  There is a construction made of some bricks, some red squares, some green squares and some blue squares. Click on the bricks to make the red squares fall off the screen and yet keep the green squares from falling off the screen.  The blue squares are neutral. Have the kids play it, it requires thinking. Mechanically it looks simple. I am thinking “I can build this.” Click on a brick to make it disappear, let gravity do the rest. “Click on a brick to make it disappear”.  That is all. In my ignorance I thought I should be able to find somewhere on the internet directions on how to click on an object and make it disappear. Nope.

Now I am a very patient and stubborn person.  The patience comes from the military. I can lie in a hide for days if needed. The stubbornness is genetic.  So about 4 days and at least 14 hours of searching and experimenting later it works. Click on an object and make it disappear would seem to be a trivial and common task for a Unity project.  Yes, I found descriptions on doing just that but they all had issues or simply did not work. I put a cry for help on the Unity forum. The replies were not helpful. I had to figure out how Unity “sees” objects before I found the solution on my own.  The C# script is trivial, IF you know how Unity sees objects. If you do not understand how Unity sees objects and implements scripts on those objects then you are toast.

It is the simple things in life that are often the most pleasing. A sunset, snow on the mountains, a good IPA and so on.  “Click on a brick to make it disappear” is a simple thing.  I am extremely pleased I got that “simple” thing working. Now I just have to catch up on all the not so simple things I did not do during those 14 frustrating hours.

Programming Curriculum: Never Satisfied

January 4, 2019

All that Android App Course research really got the brain cells fired up.  Particularly in the way of curriculum. The CS/Programming curriculum I offer presently is built around several factors.  The biggest factor is what I am capable of teaching. I have no professional programming experience and almost no college coursework in programming.  (OK, three courses. One in 1972 with punch cards, I do not even remember the language I used. Two courses in the 80s, one FORTRAN and the other a very bad experience with Java.)  Everything I know about programming was learned on the job; a good book and staying a couple of days ahead of the kids. This somewhat limits the level of programming I am capable of offering in my curriculum.  As a result any change in my curriculum requires a lot of work on my part. Not just designing a course but learning the language if the course is programming.

All the Android App Course research has resulted in my wanting to offer a course using Android Studio.  I learned there are several excellent ways to go for the app course but when all is said and done if the kids are going to write professional level apps with a professional tool Android Studio is the way to go.  I am also somewhat fascinated by Android Studio. Not sure why, it my just be a character flaw.  Android Studio uses Java. Hence I need to offer a Java course before I offer Android Studio. I also feel Java is one of those languages kids should have some familiarity with.  I have taught Java before, just not very well. So the project for Spring semester is to build a Java course on the fly while teaching Java and learning Java at the same time. No problem. The tricky part is going to be keeping the kids from going faster than me.  Smart buggers.

I dug around the internet looking for a Java text.  I am somewhat limited by my $0 budget, I have to find free textbooks.  I found two that seem pretty decent. “Think Java: How to think like a computer scientist” by Downey and Mayfield (2016) and “Introduction to Programming with Java” by Eck (2018).  I use Downey’s “How to Think Like a Computer Scientist: Learning with Python 3” as my Python textbook.  Excellent book for the price.  I did a quick preview of both and am going to go with the Eck book.  It seems a little bit more detailed in the chapters but since they are both free I can give both to the kids so they can have a second resource.  

A real nice thing about teaching at a small private school is I can decide to offer a course two weeks before the semester starts, get the councillor to put it in the schedule and find kids to take it, all without a major hassle with committees or administration.  The bad thing with this easy approach is that sometimes the Good Idea Fairy bites me and I get over my head, usually in available time.

So next semester I will be teaching Stats (26 seniors), Honors Algebra II (2 sophomores), Game Programming with Unity and VR (5 juniors and seniors) and two sections of Java (sophomores and juniors, numbers to be determined).  With the IT work added in I should not be too bored.

I almost forgot, I need to start working with Android Studio.  I need to find something free out there, either a book or video series, that is written for beginners.  I have found a number of things labeled “Android Studio for Beginners” but where a beginner is assumed to be someone with extensive Java programming experience.  I have to find that something this spring because if I cannot find anything truly for beginners I will have to find something I can simplify or build my own material this summer.  Always fun.