Computer Science on the Cheap does not always work

January 12, 2020

I teach at a Catholic school.  We are small (158 in the high school) and for a private high school we are fairly cheap ($10200 is the highest tuition but it is prorated on income) so our budget is a bit challenged.  As a result the budget for my CS program is $0. All my computers are donations or come from the Montana State recycle warehouse. All the software I teach with is free or has a free version, i.e.  Python, Visual Studio, Unity and whatever else I use. This has worked for years with very few limitations on what I teach.  

This year I have hit the hardware limit wall twice, hard. The first time was with Android Studio.  It runs on the old i3 and i5 towers and laptops I have but the emulator is dead slow. Since most of the kids have iPhones I have to use the emulator to test an app.  So the app building class I was thinking of using Android Studio in is out. No great loss, I was not looking forward to having to learn AS as it seems to be a real steep learning curve.  Still, it would have been interesting.

Yesterday I hit the second wall.  The local university’s Graphic Design department loaned me an Oculus Rift S for my Unity game class.  One of the instructors is a friend and arranged it for me. The video card requirements far surpass anything the school owns.  Bummer. I was hoping I could get a little luck and it would run on some of the older cards I have but it is not looking good. The Oculus uses Displayport.  The few cards that have Displayport are really cheap and old. But I have a solution. I thought of having a bake sale but I am a terrible baker and do not want to poison staff or students so I have to get more clever than that.  So I am going to ask for money. I suck at asking for money because I have gotten really good at patching things together with old hardware. It had become sort of a weird personal goal, how cheap can I do a quality CS program. (I actually do a presentation at education conferences titled “CS on the Cheap” where I talk about how cheap it is to get a CS program going with free software and the Montana State recycle warehouse hardware.)  If the school does not have it I am going to hit the richer parents. I have a number of parents that work in the tech field and I consider rich. I hate hitting up parents for something like this, after all these parents are already paying the maximum tuition, but I really do not see a better solution at the moment. I will see what happens.

All of this does show the weakness of my present hardware acquisition system.  It is looking like a lot of the newer tech I want to work with takes newer tech to work.  Ten year old i5s work fine with a standard programming class, but as soon as I want to do something with modern hardware; cellphones, VR, AR, and whatever, I am hurting.  For next year’s budget I had requested six $1000 computers. All fine and good except I really need those computers tomorrow.

Is it all that critical that I teach a course involving the Oculus?  No, but I do think AR and VR are very important and besides it looks like a lot of fun.  And it is very important to find fun things for students to do in high school.

Fun with C#, Visual Basic, Thunkable and other stuff

December 19, 2019

I want to introduce my Intro to Programming students to Visual Studio and Visual Basic or C# to finish off the semester.  I just want to make a simple form and a simple bit of code for the buttons on the form. We just did the quadratic formula in Python and built a Thunkable app doing this so I might as well carry it over.  Since I have not used VB or written in C# in a few years (Unity C# does not count. The usage is very different.) I figured I better refresh. I whipped up the VB app pretty quickly using a couple of references.  Yippee. I did the same quadratic program in C#. I learned some very useful things. First, to get a form built in VB over to C# is very easy. It is a copy and paste. I thought it cannot be that easy. Yes it is.  Coding in C# vs VB is a bit more work, semi-colons, curly brackets and a few other issues, but the references I had were good for the needed examples. After coding the same app in both I am convinced that I will have the kids tinker in VB instead of C#.  VB is just simpler.

I had the kids build the quadratic app in Thunkable.  They all agree block coding is a real pain in the posterior.  I am happy I am not alone.

I had the Math 2 Honors kids do the quadratic in Small Basic then code up the Law of Cosines.  At least one student is now working on a Law of Sines program on his own. It is interesting how some kids are really attracted to coding and others are extremely ambivalent to the whole concept.

For next year I requested money for six new computers for my “lab” (my office).   I want to see if they will give me $6000 for some new i7 – i10 computers with real video cards. Presently I use Montana State hand-me-downs that are 5 – 10 years old or the occasional donation.  Right now the best computer in the school (a 5 year old i7) was donated by a telephone company here in town. The i5s I am mostly using, both towers and laptops, are being maxed out by my Unity class kids.  I also want to try Android Studio next school year and the built in emulator is a real pig. If I get the money (slim chance comes to mind) I am going to have my students build them from online parts as part of the class.  I can get better computers cheaper this way and the kids get to participate in the process. I will build six identical computers, I am not crazy enough to try different builds. I have a couple of kids that are in to speccing dream computers.  I figure I can tone them down a bit to get an affordable computer in the budget. We have not had a new computer for students to use in the school in 13 years. The state hand-me-downs have been more than enough for the average use and they fit our $0 tech budget nicely.

Rebuilding Programming 1 and 2 Courses

December 16, 2019

The teacher that taught our Computer Apps, Programming 1 and 2 courses moved on at the end of last year.  He found a job in a public school for twice the pay and a retirement plan that actually lets you retire after 20 years.  Our retirement plan is “teach until death”. This year we are not offering the two intro programming courses he taught because my day is full and his replacements (two part-time teachers) do not do programming.  Since programming/CS teachers are a bit scarce in Montana, as everywhere else, I may have to pick up the courses next year. What he taught fit his programming knowledge and comfort level: Scratch primarily and a little Small Basic at the end of Programming 1, and then more Small Basic and some Visual Basic for Programming 2.  The Programming 1 course is intended for kids who had never programmed before. It gets filled with a lot of kids just filling a graduation requirement or that have no place else to go that period so it is not a bunch of enthusiasts. Some suffer greatly having to think in the organized manner programming requires. Scratch works pretty good for these kids but being an old fart used to line code Scratch is a real pain for me.  I find it extremely limiting and requires a bit of a brain shift. Like I said, I am an old fart. But if I do not use Scratch where should I go?  

I am tempted by Thunkable for the Programming 1.  It does have some glitches but it is drag and drop and it has more longevity as a useful tool than Scratch.  It is also a bit more entertaining for the kids to build phone apps that they can show others. To paraphrase Field of Dreams “Make it interesting and they will come”.  For an intro course for “first and only” programmers this might be the way to go.

As for the Programming 2 I may just not worry about it until I see what I decide to do for the Programming 1.  Depending on who I get for Programming 1 can determine what I can do for 2.

I only have 4 months to figure this out.  I think I have the time.

Want to teach Unity but do not have the time to build a curriculum?

November 21, 2019

I stumbled on this the other day.   It is a complete package on teaching Unity by Unity.  Teacher setup, resources, lesson plans and detailed videos are all there.  I think a non-Unity experienced teacher could actually run with this. It might take a little extra work on the teacher’s part to fill in some gaps but it would be doable.  I already teach a Unity course this semester but I think next semester I will use part of this curriculum. It is more detailed than the YouTube videos I typically use and the sequence is just slightly more organized than my random wanderings.  It also goes a bit slower than my present sequence. Probably a good thing considering half my students get behind because they refuse to listen closely to the YouTube videos. These course videos are very slow which drives me buggy but they are probably the right speed for the kids.  They are also much more detailed than the YouTube videos I have been using.

My present assemblage of YouTube videos and text tutorials leads to a lot of code cutting and pasting or blind typing of code that is not understood, not really a good way to learn C#, coding or develop an understanding of anything.  I need to watch more of this course to see what type of detail they go into when they hit the coding section. I am just now getting there. I wanted to be sure to watch through all the previous beginning videos to see if it makes sense for a beginner.  There are some holes but nothing that cannot be fixed with a little show and tell. The lesson plans that come with the course are outlines of the videos and are no way as detailed. Using the lesson plans it is possible to zip through the course and yet not have a clue how the code in the various scripts work.  I really wish these lesson plans were available on an editable format. I have enough experience with Unity that I would really like to be able to fill in the places I know the students will have questions.

The Unity course I teach has become one of the more difficult courses I teach for several reasons.  One is my rather limited experience with Unity. I have reached the point where I can troubleshoot most problems the kids encounter but it can be time consuming, there are glitches that just happen as any programming/software teacher is well aware of.  Another issue is a limitation of hardware. Unity takes a halfway decent computer, something many of the kids do not have. I have loaner laptops that do the trick but the kids are reluctant to haul the things home, they are old and pretty good sized. My old laptops also have battery issues, that is how I got them, recycled Montana State laptops with many miles on them.  One kid lost about an hours work when someone pulled his cord. (He is now intimately familiar with what it means to save regularly.) I have some kids working on some good towers in my office so they are limited to those computers. (A Unity project is not something you quickly stick on a thumb drive. The things are BIG.) The course is also very time intensive for the kids.  It takes time to watch the YouTube videos and build the scenes and characters. Since the kids are pretty much limited to in-class time this means an hour and a half every other day. Working on a computer that long at a stretch is simply not realistic for most kids. I have trouble sitting in front of a screen that long and I enjoy programming! I expect them to take sanity breaks.  For most of the students taking Unity home is not a feasible option. There is also the issue of skill and interest. I have a couple of kids that are good at this stuff. They are detail oriented, can read instructions and watch videos and get everything out of them. They actually remember what they did. They also enjoy the building of scenes.  They whip though an assignment in a very short time. Others in the class can not read the IKEA instructions to build a three shelf bookshelf.  In a class that requires following directions closely they suffer greatly. This canned Unity curriculum goes slow enough and has enough redundancy that those without the ability to follow directions closely might do better.

I am not one to typically use canned curriculum but sometimes limits in knowledge and time require their incorporation into an overall scheme.  This curriculum seems to be worth the time to modify and use for an intro Unity course.  I will give this a try Spring semester.

Programming Class Field Trip

November 3, 2019

This Monday I am taking my Intro to Programming and App Building students on a field trip.  This is not your normal CS field trip to a tech company or something like that. We are going to the Big Hole Battlefield near Wisdom MT, about 140 miles from Missoula.  The Battle of the Big Hole was a battle between the US Army and the Nez Perce on August 7, 1877. Nobody won. Years ago I used to give military groups tours of this battlefield.  I want the kids to think about building a battlefield tour app some what similar to this  We just completed a text based app on the Montana Indian reservations and I wanted to try something a bit more interactive.  The battlefield tour app is still a bit fuzzy concept-wise but I figure an actual tour around the battlefield might stimulate the kids and my thinking juices.  The tour apps are nice but they are a bit to text base to my liking. Boring is another way of saying it. I am not sure we can come up with anything better but my goal is the road getting there, not the destination.  Something a bit more interesting is this Gettysburg AR tour.  I think this app is a bit poorly done but it is a great concept.  It is a bridge too far for my kids for now but something to think about.

When I originally started these projects I was just trying to find something interesting for the kids to build with Thunkable X.  The reservation apps the kids built turned out pretty good but the big prize was their expanded knowledge of Indian reservations in Montana.  That is when my goal shifted. I am now thinking the apps are a good idea but the better idea is how Indian Education For All can become the biggest goal of these projects.  It is not always easy to get cross curricular material into CS/programming but I think this is a home run.  

Montana has several large Indian reservations and they contribute a lot to Montana culture and economy.  We have several Native American students in the high school and I think it is important for my students to realize this is not just a label, but a whole state of being.  I want my students to see this culture more than they typically would. We offer a Native American Studies course this year but it is a senior course. (Personally I think it should be a sixth grade course because of its importance to understanding Montana.)

I hope this field trip will bring the kids more depth to their understanding of the connections and issues with whites and the Native Americans of early Montana.  I also hope we can come up with some interesting ideas for a tour app.

One minor drawback with this field trip.  It is supposed to be like 39 degrees in Wisdom Monday.  We are going to have to walk a lot to keep warm. I wish I had this idea in September.

Learning Thunkable: Not all Roses and Puppies

October 3, 2019

This semester I am teaching an app building course with Thunkable.  Why Thunkable? Because Android Studio is a pig to learn and a pig on my old computers.  I do not even want to talk about Swift. There is only so much time in the day. Thunkable is dual platform and since most of my students are iOS I figured Thunkable would be the ticket.  Now that I have been with Thunkable a month or so I am getting a handle on it. I am finding some issues. Coding with it is a piece of cake. It is App Inventor on steroids. Drag-and-drop and an easy to figure out interface.  But there were some surprises. If you go to and click the Get Started button it sends you to their latest version of Thunkable, Thunkable X. One of my students found a second version of Thunkable I was not aware of so I started digging.  The old version ( is the original build using App Inventor as the engine. It works only with Android but is very complete with many functions and it works smoothly. It is what you would expect of a mature product. Very nice. Thunkable X, the default version and their latest version, is not so mature.  Thunkable X does not use App Inventor as its engine, it is a complete rewrite of the app. It looks the same but that is the only similarity. The people at Thunkable dove in and rewrote the thing from scratch. And it is not completed yet. I wrote a little app and played with Thunkable X a bit. It has a Live Test mode which is really slick.  You test your app in a live testing environment on your device. I have an Android and it worked pretty nice. I downloaded the completed app to my phone (this is the permanent install, not the live test mode) and things were not so good. The app is locked in portrait mode. A little research and some discussion with the Thunkable people and I learn there is no orientation sensor for the X version.  That is a pretty big issue but I figure I can do some kind of work around. The weird thing that had me going crazy is the orientation worked fine in Live Test mode. Download the app and it is locked in portrait. That is issue number one. Issue number two is it does not play well with iOS. (No surprise there, little plays well with iOS. That is why I am Android.) Most of my students are iPhones.  In Live Test mode the phone sees the app, it is in the app list, but sometimes they work, and sometimes they do not. Since I do not have an iPhone to play with I have not been able to test the issue extensively. One of my uber-geeks has been looking at the problem and cannot see a pattern. A Live Test app will not work one day and will work the next. Oh joy. Intermittent bugs are so much fun.

If I had Android students I would be more than satisfied with Thunkable.  Professional looking apps can be built. The iOS thing and the orientation issue with version X has me bummed.  I will hang in there with Thunkable because the options are limited. It is kind of interesting to work on software that is maturing as you use it.  As a teacher you just have to shift focus from app building to software testing and issue management. Real life in the computer science world. Sort of fun.

Finding cool projects for programming classes

September 26, 2019

This week both Alfred Thompson and Mike Zamansky made posts about programming projects they like to use in their programming classes.  I looked at Mike’s Pig Latin and immediately thought I need to use that one. Then I Googled “Python pig latin”.  Multiple tutorials and solutions are there ready to copy. Nuts. One of the big difficulties I have in my programming classes is finding fun projects that are not given on the internet in fine detail.  My students are smart enough to use Google and it takes them about two class periods to try to see if there is a solution on the internet. I actually show them stackoverflow. Heck, the pros use it. But it sure does screw up trying to get the kids to do a little original work.  I have a couple projects that are either not out there or are difficult to find. One is the simple program of having a small red square travel around the edge of the screen. Sort of a primitive animation. It is not complicated code but it does take some thinking to have the square travel the dimensions of the screen and not disappear off an edge.  It also takes some tinkering to make it look smooth as it travels. The project is not too original but it is not a 30 second Google for a code solution. At one time I thought my assignment of taking a file of Shakespeare’s insults and making sentences of them was pretty original. Nope, it is there.

Finding or thinking up projects not on the internet is not easy.  The textbook I use “How to Think Like a Computer Scientist: Learning Python 3 Documentation 3rd edition” by Wentworth, et. al. has a lot of good projects in it at the end of each chapter.  Cool. They are all searchable on Google. Not cool. Admittedly the kids really do not hit Google first. Usually they try to code it without help but they learn fast. They also find solutions using coding I did not teach them or they did not get from our textbook.  Good and bad. Good that they are going beyond the textbook solutions, bad that sometimes they have no idea how what they found works. Cut-and-paste coding. I usually have the kids explain their code if it is something I do not recognize and, believe it or not, 90% of the time they can, but sometimes I just have time to grade “it works” so I miss the cut-and-paste.

Good coding assignments are difficult to find or dream up.  Decent length, target the learning objective of what you are teaching, not so boring as to make kids think programming is a bore, not so difficult that the kids cannot find a decent solution, fun (pig latin, insults) and so on.  The internet is killing me.

Thinking on Thunkable: Coming up with App Projects

September 25, 2019

I have three students doing an app building course with Thunkable.  It is independent study because I am teaching something else in another room at the same time.  This sort of limits my teaching mode to YouTube and projects the kids can figure out by themselves.  YouTube is pretty good for Thunkable. I found nine short videos, “Thunkable X Beginner Tutorials”, that get the kids doing some of the major features of Thunkable.  To get them thinking more about apps and away from just coding/programming I had them research what makes a “good” app and write a short paper to turn in. Now I have to get clever (never my strong point),  I have to come up with some apps that might be interesting to build with their initial limited knowledge of Thunkable. I have an epiphany. In Montana schools we are supposed to incorporate Indian Education For All assignments.  Some courses lend themselves to IEA, history and social studies for instance, others, like Math, not so much. Back to my epiphany. I will have the kids build an app that gives information about the seven reservations and the tribes of Montana.  The home page of the app will list the seven reservations. Touch to reservation name/icon and go to a series of pages and links about the reservation and the tribes on that reservation. Here is what I am thinking of at the moment.

Thunkable Montana Reservation App.

Build an app that is a dictionary about each of the Indian reservations of Montana.  The first screen will have an icon representing each of the seven Montana reservations. If the reservation/tribe has a standard icon or flag, that should be the icon represented on the page.  Each icon will have the name of that reservation.  

Touching that icon will lead to a page or pages giving information about that reservation/tribe.

  1. Demographics – population on and off reservation, size of reservation, etc.  
  2. Brief history of tribe or tribes on that reservation.
  3. Brief history of reservation.
  4. Map of Montana with reservation.
  5. Map of reservation.
  6. Link to on-line tribal language dictionary if one exists.
  7. Link to tribal cultural events videos.  Dancing, powwows, whatever.

I actually like the idea which is not always true of some of the programming assignments I dream up.  I am a touch Blackfeet so I am interested in the culture and heritage of the Montana Native Americans so the assignment is relevant to me, and hopefully the kids, but it also accomplishes the IEA goal.  I am interested in what the kids think and what they design.

I am thinking I can actually develop another app project about the important battles of Native Americans against the US Army in the 1800s in Montana.  History, maps, maybe a battlefield guide with pictures as the app user tours the battlefield. The two biggies that get all the press are the Battle of the Little Bighorn and the Battle of the Big Hole.  I think they should be able to find enough on those two to make a decent app with a guide. I used to guide military groups at the Big Hole battlefield and I think an app would be cool.

I am on a roll.  Time to go take a nap.

And it begins.

September 1, 2019

Two days down, one hundred and seventy-eight or so to go.  Piece of cake. My phone apps class may be more of a challenge than expected.  I am using Thunkable which is an expanded and pretty bug free version of App Inventor.  I had a schedule sort of worked out for the next few weeks just to see how the kids were going to handle it.  This course is an independent study to some extent since I am teaching math at the same time. The schedule is toast already.  One of the kids did in one hour what I thought would take 4 – 5 class periods, which is 2 weeks in our block schedule. Smart little bugger. Now I have to dream up some new assignments.   I can always slow him down by throwing Corona SDK at him. Keeps me from getting bored. The game making course with Unity has gotten a bit more interesting too. Unity has changed the licensing procedure just to complicate things a little.  Not a major issue like GameMaker, which I had to stop using because of the licensing change, but an added complication to a packed schedule. One thing I need to target for the games course is less programming and more design. How to build a game should have a whole bunch of work before sitting down in front of a screen and diving into a game engine.  There a couple of indie game companies here in town. I need to chase them down and see if they would be willing to come into my class and talk. All in a day’s work.

Montana CS Standards now exist

August 11, 2019

Two weeks ago for three days I participated in the committee to write Montana State K-12 Computer Science Standards. This was purely volunteer with no compensation.  The word for volunteers was just an email to principals to be forwarded to possibly interested people. I was interested so I was game. Interesting experience. Four high school teachers and three Office of Public Instruction (OPI) folks with some past teaching experience, again all high school although one had research experience with kindergarten.  I was the only one who taught CS as one of my primary subjects, the others had taught a little programming.  

Notice something?  K-12 standards, high school teachers only.  Opps. This is less than optimal. Personally I think Standards should be written by people familiar with the grade level and computer science.  What did we do? Looked on the internet at other state CS standards, CSTA standards and massaged them a little and POOF, Montana State Standards.  Given only three days and the available personel I think what we generated is not all that bad. The K-8 is a bit fuzzy and K-8 teachers may think they are impractical (or “Are you nuts!”) but it is what it is.  To do this correctly OPI needed to find teachers actually doing CS in their classrooms and pay them to take some time out of their summer to work. Three days also seemed a bit hasty. Something that may be used to build a school’s CS curriculum needs a bit more research, input and time.

Montana State now has a draft of CS Standards.  Something we did not have three weeks ago. It is a start.  Now if we can just get some teachers that can read the standards and know what they mean.  Oh well, can’t have everything.