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.

Garth goes racing (again).

July 29, 2019

Last Saturday I participated in a 25-mile mountain bike race, the Sorini 25, which is part of the Butte 50 and Butte 100 races.  I really did not race, I just consider it a large expensive group ride that happens to have a timer. I finished in 5 hours, 7 minutes.  I had only one goal, to beat anyone older than me. I succeeded. There was only one rider older and I beat him by 10 minutes. My time could have been better but I stopped to help a gal with a flat tire for about 15 minutes.  Like I said I do not see this so much as a race but more of a chance to have fun with a lot of riders I do not know. Two years ago when I last did the 25 my time was something like 4:45.  

I have done the Butte 50 twice.  The 50 is noted to be one of the most brutal races in the US.  8000+ feet of climbing and tops out at 7200 feet altitude. The first time I finished (and was not last) in something like 10 hours.  The second time I got cramps at 30 miles and had to quit. 105 degrees and the race has some brutal climbs. Over 50% of the racers did not finish that year so I do not feel bad.  

The Sorini 25 is supposed to be the “easy” ride for those that do not want to spend their life training.  It is not “easy”. 4000+ feet of climbing at 6200+ feet altitude. (I live at 3200 feet and that 3000 feet is very noticeable.)  The last mile is a push up a steep sandy 4-wheeler road. Ugh. I have to say it was worth the $75 entry fee except for that last mile.  Next year there is going to be a new course that will not have that sandy push. Hooray! I am in. For next year I do need to train a bit more.  I ride about 3-4 times a week but the rides were too short this year. I was getting pretty gassed near the end of the race and had to push things I should be able to ride.  I can pretty much smoke anyone on a single track downhill (low IQ and poor survival instinct) but the climbs kill me even when I think I am in shape. I need to get some 20 – 30 mile rides in with ugly climbs.

Now I have to spend the week recovering.  The 4th of August I am heading to Bend and Oakridge Oregon for three days of riding.  Just some place new and different in an area that is supposed to have wonderful trails.

The IT job and weird magic.

July 11, 2019

Doing the IT job for the school can be interesting and challenging.  Sometimes it is just weird magic. Last week I bought some new Ubiquity wireless access points for the elementary school.  It is necessary to adopt, update and configure the APs. To do this I usually just line them up on my workbench, plug a bunch in and set them up through the interface software.  Done it before with no problem. This time I plugged two in and the school’s network went down. No internet, zip. What the heck (or words to that effect). I unplugged one and the network came back up.  I plugged the second one back in and down it went. More what the heck (or words to that effect). Bad AP? Tried another. Nope, still died. Weird switch issue? Plugged the second one in to the main school switch.  Down she went. Time to go home and have a beer and think. The next morning I try to replicate the issue. It is still wacky. It did not vanish overnight. Nuts. I replace every part involved in the AP setup. No luck.  Network still dies when I plug in two APs. I sits and thinks. I have been troubleshooting for about two hours.  I have eliminated all the hardware variables so whatever is causing the problem must be non-hardware related. The APs are 12 inches apart on my bench. Could proximity be the issue?  Never has before but what the heck, I have pretty much eliminated everything else. These are new model APs I have not setup before. I move the second AP to another room. Everything works. I plug in a third AP in a third room. Everything is good.  Proximity. What the heck (or words to that effect). For some reason the two AP signals were interfering with each other enough to kill the school network. I will have to do some research. Arthur C. Clarke’s third law states “Any sufficiently advanced technology is indistinguishable from magic”.  At the moment this issue is magic. Weird magic at the moment but I will discover the why.  Later.

Like I said this job can be interesting and challenging.  I love it.


Thunkable, here we come.

July 3, 2019

I want to teach a phone app design and programming course.  Earlier this last school year I started the research on possible programming languages/platforms and talked about it in a couple of posts.  If I was going to do it Android Studio seemed to be the way to go.  So a few weeks ago I started testing the course I wanted to build. I found a decent and recent free textbook (“Android Programming for Beginners 2nd Ed” by Horton) to start with and handed it to my summer tech aide to try out.  I have some used second generation i7 laptops with 8 gigs of RAM I had planned to hand out to those kids that did not have a better laptop of their own. (I do not have a teaching computer lab, everything is BYOD or I give them a used laptop to keep.)  I had just acquired these from the free State recycle warehouse and they were better than anything I had and seemed like they would do the trick. I gave my aide one of these to test just to be sure. He immediately hit problems. The book was just fine, the computer was not so fine.  I looked up the requirements for Android Studio. 8 gigs is a minimum and more is suggested if using the emulator. Most of the kids have iPhones therefore I need the emulator. There are only 2 ram slots in the laptops and I only have 4 gig cards to rob from the extra laptops so 8 is it. Opps. Time to punt.

I am not crazy about App Inventor so it was low on my list of options but it hits the free requirement.  I had looked briefly at Thunkable, again hits the free requirement, but took only a glance because it looked like App Inventor (and it does).  Oh well, I am punting so I pointed my aide at it. (My summer aides typically help me fix computers and rebuild the computer labs. Sometimes I am lucky and get one that actually knows computer stuff.  This summer I got really lucky. My aide knows computers AND can think for himself.) Thunkable is not App Inventor. It has a lot more depth to it. It can test on iPhone and Android. Good punt. Now I just have to build a course and test a lot of material and learn the software.  The usual teacher summer.

When I picked up those laptops I also picked up some i5 towers.  I am going to take the RAM out of three and cram it all into one and see what happens just out of curiosity.  

Programming and Math: “Danger Will Robinson”

June 25, 2019

Two of our teachers are taking a week long programming in Python professional development for teachers at the local university.  I did this PD course last summer and enjoyed it but then I am a math and computer geek. I asked them how it went on the first day.  One immediately said “Why do all college CS profs think everyone loves math? Want to turn kids off to programming? Throw math at them.”  The first programming problem they did was the famous (or infamous depending on your point of view) quadratic formula program. The other teacher was of the same opinion.  As a programming teacher and a math teacher I have to agree. Novice programmers do not want to deal with math. Many novice programmers are not happy with math. Novice programmers want to see the fun stuff about programming.  There are options that are more fun. The ever popular turtle graphics. Admittedly not all languages lend themselves to turtles but most have something. Turtle graphics is one of the reasons I like Small Basic as a starter language.  Lots of fun turtle projects. Another nice option is silly sentences. One of my favorites is using a file of Shakespeare’s insults in a sentence. Sort of fun and not math. Eventually programming is going to get to math problems. After all, the quadratic formula is a great programming problem but keep it for when the kids have seen that programming is not just math stuff.

A good intro to programming teacher has to have a pretty expansive list of “fun” programming assignments.  Things that will not turn off the novices that are in the class just to see what programming is all about. Do some fun stuff and they night hang around for the second semester and then the hook might be set.

One of the issues with this PD is it is put on by university professors who have no idea what is happening in the K-12 classroom.  They do not understand the dynamics, mentality, needed inspiration, and a thousand other things that seperate K-12 students from university students.  They are purely content driven. The PD turns into teaching Python, not how to teach Python. And the methods used in the PD to teach Python are not transferable to the 9-12 classroom.  Oh well, the PD is free and you take what you can get or, as my father used to say, “Do not look a gift horse in the mouth.”

20% of the high school is taking CS: Oh S#%@

June 11, 2019

I just counted heads for my next year’s classes.  Oik! Thirty-one kids signed up for my programming classes.  Intro to CS – 11, Python – 6, Game Making (Unity) – 7, App Dev with Android Studio – 7.  Only one kid is taking two classes. So 30 kids in CS out of a school of 160 kids. Not bad.  

I am going to have to work next year.  Hard. The Python and Game class are OK.  Been there, done that. Need to improve them of course but I can do that.  The Intro to CS is a survey of several kid level languages, Alice, micro:bit, Small Basic and so on, and is an independent study course.  I have done the course previously and need to do a major rewrite. Mostly a better description of the assignments with a rubric. I may not lay eyes on these kids several periods at a time so things have to be laid out nicely.  The Android Studio is going to be the challenge. I originally was not going to offer the course due to a lack of good computers. (The fact I know almost nothing about Android Studio is a minor inconvenience.) The emulator is dead slow if you do not have a decent processor and a good chunk of RAM.  I am getting some older i7 towers donated tomorrow so hopefully we will be OK. If they are too old then I will figure something else out. On top of these 4 courses I also have an Honors Math 2 (8 kids) and two sections of senior Stats (7 and 19). Let’s see, that gives me six preps and seven classes.  I am an idiot.

Years ago I thought I should stop volunteering.  I volunteered for the Marine Corps and got shot. I volunteered for the Army Guard and got blown up by IED.  I volunteered to teach what I thought would be useful for my students and I am probably going to have a heart attack.  Just dumb as a box of rocks.

CS Professional Development in Montana: Where should it go?

June 10, 2019

The last two summers I participated in professional development sponsored by University of Montana (UM) and Montana State University (MSU).  The first summer was an AP Principals course using App Inventor. The second was on the Python curriculum “Joy and Beauty of Computing” (JBC) ( developed at MSU.  Both were designed for beginning programming teachers to build a curriculum with in their school without having a degree in CS.  Both were worthwhile for me just for the networking with other computer teachers.

Next summer the organizer from UM wants to start a course thread for the next level.  She is a CS teacher at UM. Her idea of the “next level” and my idea of the “next level” became extremely clear at a meeting I had with her last week.  They were very divergent. Her idea was more advanced Python concepts. JBC was very basic and even then it was difficult for most of the attendees. Only two of the twenty had much Python experience (me and a teacher who used to be a professional programmer.  She was way beyond me.) The others were business teacher types that had “volunteered” to teach programming at their school. I can imagine what response a higher level of programming course would get. On the other hand my “next level” is pedagogical. I want to offer a “how to teach programming/CS” type course.  Something in the way of directions and resources for teachers without a CS degree. Issues kids encounter, issues teachers encounter (especially when not familiar with teaching programming), interesting exercises suitable for beginning and intermediate teachers and students, where to find teaching help, CS Unplugged, programming language selection, fundamentals of programming, grading and all the other things I had to learn the hard way.  Montana has a very small core of experienced and trained CS teachers. Small in the sense of maybe 10. The rest are business, Math, and whoever-is-willing teachers that are trying to just keep their head above water. This group does not need or want high level programming. They want “how to”.

The university CS professors organizing these summer professional development opportunities are great for finding grants for high school level professional development and getting the resources necessary.  Beyond that most of them are out of their element. They have not taught in the high school, they really do not understand the knowledge level of most high school programming teachers and they usually do not understand high school kids.  If they have been in the high school to observe it was in an APCS class. Not a good measure of the typical high school kid. A CS/programming course needs to attract the typical high school kids if we are going to get the classroom numbers needed to justify a course offering.  When a high school has 100 – 200 kids (typical for Montana) the number of kids interested in APCS is pretty much zilch. The number of CS experienced teachers teaching in a school this size is likewise zilch. I am hoping I can convince the organizer to offer something that will attract the average Montana CS teacher.

Some of the old stuff was good stuff

June 10, 2019

How many of you gray hairs out there remember the early computer game Rocky’s Boots?  (  Rocky’s Boots was published in 1982 by The Learning Company.  I started using it in my classes in 1983. I still think it is the coolest format for teaching logic gates.  Even if there is no need to teach logic gates it is a cool game which incidentally will teach logic gates. (The kids will never know what hit them.)  For many years I have been wanting to modernize this game. Make a 21st century Rocky’s Boots. There are only a dozen or so things I have no idea how to do.  Things like being able to drag an object close to another and having the them blink that they are close enough to connect and then having them connect automatically and recognize that this is a connection so something like a current will flow through the circuit created.  A minor glitch in my plans but I shall over come.

I am pretty sure this is one of those projects where I do not have the big kid programming expertise to accomplish.  After all, I am an untrained high school level programming teacher. But I really do not care. This is one of those cases where the destination is not really that important (although I would really love to build this), it is the journey that is the big thing.  I doubt that I can build this by myself. I am thinking I will have to find a brainiac over at the university. Some college kid needing a project. I will end up just going along for the ride. I am OK with this.

This does bring up the conversation about teaching logic gates in high school in the first place.  I am still thinking about that.

Last Day of School And Done with Java

June 7, 2019

Today is the last day of school.  My Java students are scrambling to turn in their final.  I gave each of them a unique project to solve and code.

  1. Solve a quadratic.  Input a, b,c. Output solutions either real or imaginary.  Plot the parabola on an xy axis.
  2. Given two sides and the included angle of a triangle find the other angles and sides. Draw the triangle.  Color the triangle.
  3. Input the lengths of the sides of a rectangle.  Draw the rectangle and diagonals. Color each of the 4 sectors formed with a different color.
  4. Input the number of sides and length of the side of a regular polygon.  Output the circumference and the area. Draw the polygon. Color the polygon.
  5. Input three vectors (length and angle  for each so six total inputs). Draw the vectors connected.  Draw the fourth vector to make an enclosed figure.
  6. Input the radii of two circles.  Draw the circles tangent to each other.  Color the circles two different colors.

Initially these look fairly simple.  But we did almost no graphical exercises in class so the students had to do a lot of Googling and trial and error.  They also have to figure out the math before they code. Sort of like how it happens in the real world. I gave the students their assignment 2 weeks before today.  I informed them that if they try to do the program only during class time or procrastinate until the final day they would not be done. I required they show me their progress at the end of each class period.  My idea of progress and their idea of progress did not match but I am a bit of a “sink or swim” teacher. So today is the last day. Small progress steps and procrastination have won the battle. They are presently in the other room trying to do six hours of work in two.  So far two of the six students have turned something that rates a decent grade. Is it too much for juniors to understand procrastination kills? I figure they have to learn some time. It is amazing how much they are getting done in panic mode. Some of their best work of the semester.

Some lessons learned on my part.  

  1. Require a more detailed progress report on the math they need to do for each assignment.  The students working on #2 and #5 did not know how to convert distance and angle to Cartesian coordinates and they did not demonstrate this inability until today.  They had the math, they just could not apply it.
  2. Build a grading rubric for each individual assignment.  I had a rubric that I gave to the students but it was general.  The assignments were different enough I needed to break it down a bit more.  My expectations were different from their understanding. Not unexpected but I can clarify this next time.
  3. The students found at least four ways to draw a line on a graphics frame.  Pick one I like and do a lecture on that method. I was very impressed how one of the students (#4) got his lines to draw the polygon.  It was the hard way but it worked.
  4. Do not do graphics and GUI stuff in Java.  These types of assignments are so much easier in other languages.  Ones that like graphic screens and GUIs. Visual Basic likes doing things like this.  
  5. Some kids can work in panic mode.  Others collapse and give up. I was amazed none collapsed and gave up.  Even my worst student came up with something worth grading.
  6. I did only two of the six assignments myself.  With the others I saw the solution so did not code them up.  I should have coded them up just so I could answer questions better for the students.  Maybe I could have eliminated the multiple paths for graphing that they came up with. Of course I now know those paths exist for Java where I did not before.
  7. I would call this final a success even with the difficulties.  The amount of digging the students did while in a full panic was amazing.
  8. Do not lose this assignment sheet.  These will work for the Python class in the Fall.  I might also try them in Visual Basic in the Python class just so they see a different IDE/language.

I just noticed I have six students registered for Python next Fall.  I can roll these over to that class. This all gives me something to work on in the summer.  Oh goodie.