“Need a little help from my friends”

November 3, 2017

In a couple of weeks I am attending a professional development weekend for CS teachers.  This is the conclusion of the PD seminar I participated in this last summer.  There are 20 CS teachers ranging in ability from a former professional programmer, a couple of old time programming teachers (including me) and the rest pretty much novices.  By novices I mean teachers who are not and never were CS inclined.  Most are more than willing.  Only a couple are totally lost.  I was asked to lead a discussion group on CS teaching philosophy and on questions some of the others in the class had on issues they are encountering.  Being a generous and giving person, along with being a stone cold idiot, I said sure.  Being smarter than the average bear (a quote from Yogi Bear for you younger readers out there) I figured I better make some notes.  Then I figure I will throw these notes out there and maybe get some good suggestions/feedback.

Philosophical issues (sort of)

  1. Programming is not coding.
    1. Programming involves algorithm design, UI design, understanding how to use decisions, iteration, repetition, sequence, encapsulation, OOP, etc.
    2. Coding is knowing the syntax of a particular language to do the job the program requires.
  2. Companies want to hire problem solvers (programmers) not coders.
  3. Coding is a low wage job. Programmers make the bucks.
  4. Teach problem solving where the best solution is using a computer program.
  5. CS classes should not focus on typing good code; they should focus on building good programming skills (which may include typing good code).
  6. Do not try to be a professional programmer, try to be a professional teacher.
    1. Requires extensive time researching how to teach CS.
    2. Does not require extensive time learning how to be a great coder.

Questions from class participants

  1. “I would like to learn more about beginner training tools and resources.  It would be great to learn more as far as using ipads and chromebooks.  We still have not received our ‘free’ laptops from our tech dept.”
    1. Beginner training tools –
      1. Start with a simple language – Scratch, Small Basic, micro:bit, Kodu
        1. All these have excellent free materials on their websites
      2. Do not try to become a coding expert, learn how to learn code
      3. Large time commitment
      4. Find a good book
        1. Python – http://openbookproject.net/thinkcs/python/english3e/
        2. Python – JBC – https://www.cs.montana.edu/paxton/classes/joy-and-beauty/
        3. Python – micro:bit
        4. PodPi – Javascript
      5. iPad – Google “programming on an ipad”
        1. Codea – pro level
        2. Pythonista
      6. Chromebooks – any web based programming environment
        1. Scratch online
        2. App Inventor
        3. Touch Develop
        4. PodPi (Javascript)
  1. “some shorter lessons that will engage students quickly into programming. The drawing was fun (Refering to turtle graphics in Python.) and could easily be shared with families and administrators.”
    1. Set small objectives.
    2. Do not teach coding until the students (and the teacher) understand programming
    3. Micro:bit
      1. SparkFun – micro:bit Go Bumdle – $16.50
    4. PodPi modules
    5. Small Basic – excellent for small objectives – great for turtle graphics
  1. “One of the problems I’m having is students who want me to give them the answer.  They are having trouble coming up with algorithms and the logic on their own.  I try to explain that there is very rarely a ‘right’ answer in programming, but I feel they are expecting a solution that they can copy.”
    1. Do not assume programming is easy. IT IS NOT!!!!
    2. Teaching algorithms and logic will be the hardest thing any teacher will ever teach.
    3. Algorithms are difficult for many, not just kids
    4. Smaller simpler steps
    5. Get away from the computer
    6. Describe algorithms they already know – division, multiplication, PB&J
    7. Avoid teaching code – teach algorithm development
    8. Work in teams/pairs
    9. Suggest resources, not solutions
  1. “Another problem is people who go online to get solutions.  It’s obvious that it’s not their work.”
    1. Use the online stuff – tell the kids to find a project online and modify it.
    2. Require the kids to use online solutions/resources
    3. Dream up original projects
    4. Watch the kids code. If you are looking over their shoulder you will know where the code is coming from.
    5. Require extensive comments – should be requiring this anyway, online programs rarely do this

Parent/Teacher night and I wander

November 3, 2017

It is parent/teacher night.  Things are slow.  I teach a total of 24 kids (19 seniors in Stats, 2 sophomores in programming and 3 in Alg II).  So far I have talked to 3 sets of parents.  Things are slow.  So what do I have to play with?  My room is full of computer stuff.  Well, I have a couple of micro:bits sitting to my left.  I have not really tinkered with them much and things are slow.  After a couple of hours of tinkering (and digging around the micro:bit website just to see what there is) I can now program the thing in micro:bit Blocks, JavaScript and Python.  Nothing fancy but I have a feeling fancy is not really the purpose of a micro:bit.  The middle school tech teacher is going to start the eighth grade on these next week.  Lights to blink, buttons to press and a simple block language.  I think they are going to have some fun and learn some programming on the way.  I have to buy some alligator clips tomorrow so I can hook up a speaker and make music.  These things also have radios so they can communicate with each other.  I had better save something for tomorrow.   I have to be here from 8:30 to 11:00.

Something else I learned tonight, there is an Arduino shield that will connect to Lego NXT motors and sensors.  The NXT brick is kind of boring in its plastic case.  The Arduino on the other hand is just out there naked.  Much more interesting.  That is all I need, more computer stuff in my room.

Adventures in Programming: Python and VB

November 1, 2017

I am happily putzing along in Unity with my two programming students when I decide it is time for a break.  Let’s fiddle with Python for a few weeks.  Both have done a little Python before so no big deal.  We build a little program that computes the area of rectangles, squares and whatever other shape we want to build a function for.  Three class periods and it is done.  (My class periods are 90 minutes.)  Lots of discussion on local verses global variables, naming of variable and functions, parameter passing, designing before coding, you know, the usual things for a programming class.  Then I get clever.  (Bad, very bad.)  I think “I have not done VB in about four years, let’s do this same program in VB!”  Yup, bad, very bad.  I did it and we are going to do it.  It took me an hour or so to relearn the basics of Visual Studio while trying to remember my VB.  (Need multiple forms depending on the shape to computer the area of.  Eek.)  I do have a VB book published in 2003.  It works.  But I now remember why I teach in Python.  The VS overhead is just a pain.  When you are rusty VB is a pain, especially when you have not touched it in four years.  (I was never a wiz at it in the first place.)  I am going to finish the VB program with the kids.  They need to see what VS and VB look like.  It also emphasizes my philosophy of teach kids how to learn coding, not how to code.  The building of forms and the general structure of VB shows them a completely different scheme.

I think when we are done with this simple VB lesson I am going back to Unity.  I am thinking of having them build a house in SketchUp, import in into Unity, build a character so we can walk through the house, then export that to Android and walk through the house with Google Cardboard.  Lots of fun to be had here.

These two kids are sophomores.  I have two more years to throw more programming at them.  If I want to do a semester of VB with them I need to do a little brushing up, maybe even buy a book written in the last 10 years.

MEA days: The aftermath

October 24, 2017

I lived!  My “Teaching with Blender and Unity” presentation had 4 attendees.  About what I expected.  The number of people in Montana high schools that know want Unity is is a bit limited.  Those that know it do not need to go to a sectional about it.  The five of us had a great discussion about using tools like Unity as a method to teach with.  Good stuff.  The “Computer Programming : Free stuff is Everywhere” presentation had a full house, about 30 teachers.  Again a very interactive session.  I attended four sessions.  One of them made a major impression and is something I plan to examine in great detail.  It was on a series of CS teaching materials found at podpi.com.  The author of the program, Stephane Come, came up from Sacramento to do this presentation.  What he has written is a series of comic books (more like a magazine) on using the Arduino.  The attempt is to get away from the traditional step 1 through 10 tutorials to a more investigative approach.  I looked through a couple of the books and they look like they have major possibilities.  A kit includes a magazine and all the Arduino hardware to do the task in the particular magazine.  You start with Module “0” which includes the Arduino with components.  Each subsequent module includes the Arduino components required for the module.  At $39 per module I thought it would be worth looking at one closely.  I ordered Module “0”.  About 60 seconds after I placed the order I got an email from Stephane asking if I was in the Friday morning session.  He remembered me and said he would send Module “1” also just for me to look at.  Cool.  I want to look at these for an afterschool coding club for the 4-8 grades.  Hands on stuff and a comic book format.  What more could I want?  Less typing at the computer, more tinkering with actual hardware.

I also attended a “VR in the Classroom” session.  The presenter was a tech teacher in Missoula who has gotten into the HTC Vive VR device.  He also teaches architectural drawing and has incorporated the Vive in to his class.  The students convert their 2-D drawing into SketchUp 3-D and then import the SketchUp into a game engine so it is possible to actually walk through the house they are designing.  $600 for the Vive and another $350 for a decent video card for the computer is too rich for my blood but it does get me thinking about what is becoming possible.  I am going to have to try the SketchUp to Unity import.

One of the best and worst things about teaching CS is there is always something new and cool that is worth teaching.  Yes, teaching programming can be pretty traditional and, although languages may change, the theme is pretty much the same.  Broadfield CS on the other hand with hardware, programming, integration of software and getting things to work together that may not have originally been meant to work together is always new and exciting.  If a teacher is bored teaching CS then they are either a terrible teacher or they need to retire.  Teaching CS is more fun than a box full of puppies.

MEA this week: Once more unto the breach, dear friends, once more

October 17, 2017

Thursday and Friday is the Montana Educators Association (MEA) convention.  For the first time in a long time it is here in Missoula.  I rarely do out of town wingdings like this, simply not worth the travel and motel expense.    My school does not pay for any event like this.  I am presenting two sectionals.  One is “Computer Programming: Free Stuff is Everywhere”, the other is “Game Programming with Blender and Unity”.  I have given the Free Stuff presentation twice before and have it wired.  If I do not hesitate or wander too much I get it done in 55 minutes.  I get some good responses from this presentation.  It is amazing how much schools think you have to spend to teach a course in programming.  They seem to like to spend money for a mediocre programs for teaching programming when there is good free stuff out there.

This will be a first time for the “Game Programming” presentation.  It is just a summary of my observations and experiences from the last year of giving it a try.  I hope that a few more teachers will “give it a try”.  Teaching anything new in CS is always “giving it a try”.  For the Unity and Blender it is not like some kind soul has written a high school level textbook that is more than a “follow the bouncing ball and type the following” textbook.  There are a lot of tutorials like that out there and some are excellent tutorials but tutorials rarely explain in any detail why you just typed what you just typed.  And tutorials never explain any of the design behind the plan.  I just plan to discuss “here is what seemed to work and here is what did not”.  Of course I have a lot more “did nots” than “dids”.    Perhaps the biggest thing I want to point out is that a gaming course with Unity is not a good way to go if a teacher wants to teach programming.  It is more in the direction of problem solving and research (finding the right tutorial to explain what you want to do in a manner you can understand) type objective.  I sort of throw projects out there and we sort of dig up solutions.  My last project was for the kids to write a simple Google Cardboard “game” and then control the motion with a Bluetooth controller.  That is all I said.  We then look for solutions together and show each other what we found.  Like I said, not a lot of formal programming but a lot of hair pulling with trial and error.

Doing these presentations is somewhat interesting.  The first time I did the Free Stuff I was expecting like 5 attendees.  I got more like 45.  The second time I did it I figured the first time was a fluke.  Nope, I got about 30, mostly administrators.  This time I am thinking the 75 people in the state that were interested have come and gone.  I will get 5 attendees.  I will bring 45 handouts just in case.  The Free Stuff is also an 8:00 session.  That should thin out the crowd.  The 45 was a bit much.  Small room, many people, PTSD, not a good mixture.  I survived.  I like it best when teachers come and ask questions.  It keeps my mind off many people in a small room.

Montana is pretty much a CS desert.  The number of schools that offer anything other than an apps course can be counted on fingers and toes.  I hope that I can help the small schools and the teachers inexperienced in CS to “give it a try”.

CS, woodshop for intellectuals

October 12, 2017

I attended the Montana Tech Summit Monday.  Very interesting.  I have never seen so many millionaires in one room.  A Montana US Senator was running the show and the Montana US Congressman (we can only afford one) was one of the panelists.  It was not an event for teachers, it was for entrepreneurs and tech companies but there was enough there to get me thinking about my CS curriculum.  There was a number of interesting panel discussions with some threads that would apply to a high school CS teacher.  I got two big threads.  The first was the extreme shortage of tech proficient job applicants.  They cannot find enough employees anywhere that are willing to learn the skills they were offering.  These companies were not after people already trained, but after people who were trainable.  They were not after high tech skills, they were after people with the basics they could train up.  They were all offering excellent starting salaries but the people were just not there.  The second thread was they wanted people with writing skills.  That is sort of a no brainer but to have these tech companies actually say it surprised me.  They understand the importance of good communication.

This is not going to make me run out and start trying to produce professional coders out of high school but it does make me think about maybe trying to make my school’s technology requirements a bit more directed towards programming and networking.  We require two semesters of technology but if a kid takes the apps course and then the library research class they will never see coding, programming or basic hardware.  Would this be like requiring woodshop?  Sure, but why not if a basic woodshop class would open up a really large job market for the kids?  “CS, woodshop for intellectuals.”  I kind of like it.

Yes, this would be catering to the pressures of industry but maybe a little of that would not hurt.  After hearing from these high tech companies and the long-term futures they have to offer employees I need to consider the possibilities.  Somehow get more kids looking at tech majors in college.

One solution I am thinking of involves internships.  Last summer six students from my school, sophomores and juniors, did an internship with a local tech company partially owned by an alum.  Only one of the six was a techie geek.  They came back with major attitude changes in regards to what a “tech” company needs in the way of employees.  I am hoping the word may spread.  After the summit was over a number of the tech companies at the event set up tables.  I hit the lines.  I talked to four companies about high school interns.  In all four cases it was “Hum, never thought about it.  Here is my number.  Call me and let’s see what we can get set up”.  I think once kids see that a tech job does not mean becoming a code gnome in a dark room eating Cheetos in from of a computer monitor for life, interest might pick up.

Arggg, no rest for the wicked.


Programming:The Good, The Bad and The Ugly

September 26, 2017

Jeff Yearout posted this bit of Python code in his blog.

def main():
print(‘Enter object types as t for triangle, r for rectangle, and s for sqaure.’)
print(‘Enter numbers only for dimension values.’)
firstObjectType = input(‘Enter type of first object: ‘)
if firstObjectType == ‘t’:
h = int(input(‘Enter height of triangle: ‘))
b = int(input(‘Enter base of triangle: ‘))
object1 = triangleCalc(b, h)

def triangleCalc(base, height):
tArea = 0.5 * base * height
return tArea

def squareCalc(sideLength):
sArea = sideLength * sideLength
return sArea

def rectangleCalc(length, width):
rArea = length * width
return rArea

As soon as someone posts a bit of code on their blog the code geeks start making comments.  Both Mike Zamansky and I made our comments on the original code. I love it.  This is how I learn to code (or not to code, usually when someone comments on my code).  These little snippets and discussions are usually something at the high school level and usually target something simple.  Having teachers presenting alternative solutions for simple programs like this is great for the kids to see.

When learning or teaching from a book the book gives a solution and kids/teacher will assume that is the only and the correct or best solution.  The book does not explain why this is the solution offered or why out of several possible solutions this is the best.  With these little snippets and blog conversations the alternatives come up and usually the teachers commenting will talk about why this is a good or maybe even a better solution.  Most programming teachers have learned their programming skills on the job so their technique is either from the book they found to teach from or it is a bit primitive from learning the language by trial and error (me).  For most of us, this is the only way to improve our programing skills and understand the good from the bad from the ugly.

There is no such thing as professional development for programming teachers.  Taking a programming class at the local institute of higher learning is not professional development for teachers.  A teacher needs to see alternatives, bad code, good code and weird code kids are going to come up with that works.  A programming course does not do all that.  Brave teachers putting their code up for discussion does.

“I have a dream”

September 11, 2017

I tried to watch the XQ school thing on TV.  “Tried” is the word.  I did not realize what it was at first.  Some sort of weird musical?  After a few minutes I realized it was a really weird comment on the US high school system.  A few more minutes and I realized it was a lot of very un-knowledgeable people making very un-educated observations of what high schools should be.  Yes, there was sort of a grain of truth buried in with the dancing and singing but it mostly seemed to lack realism.  Did I miss something or was this really bad?

Here is my list for improving American high schools.

  1. Train administrators to be leaders, not bookkeepers.  Many years ago I worked on an EdD in Education Leadership.  The “Leadership” courses were budget management and teacher evaluation.  No conflict management, no personnel management, no how to get people to work for you in a positive manner, nothing how to actually lead.
  2. Eliminate tenure. If someone cannot teach, they should be asked to find a different job.
  3. Raise teacher pay and make it a difficult profession to get into.
  4. Require a Master’s degree and at least a year of student teaching with a master teacher.
  5. Disconnect school funding from local taxes.
  6. Do not expect all students to graduate from high school. Some are just too lazy or unwilling to put in the work.
  7. Do not attach funding to graduation rates.
  8. Reward students for academic improvement and/or good grades. Do not just give a grade and think that is reward enough.
  9. Make parents responsible for their student’s grades.  (This would probably affect 1-8 above.)

I probably can come up with a couple more but most of these are unrealistic enough.  There is no way most of these could be implemented but it is fun to dream.


The Crazy Season is on us.

September 3, 2017

The crazy season is here, also known as the school year.  I have it pretty easy as far as classes go this year.  My usual senior Stats with 17 students, a Math II with 3 students, a CS class with 2 sophomores and a girl doing a computer animation independent study.  I had these CS kids last year so this is just a continuation.  This year all my classes are on my B day.  My A day is pure techie.  This early in the school year that techie day is busy from 8 to 3.  All sorts of weird issues come up early in the crazy season.  How does a Smartboard that worked fine at the end of last year, then took the summer off, decide it no longer wants to work along the edges?  All sorts of weird things go screwy during the summer when no one is in the building.  Ghosts, that is what it is.  They come in at night during summer.  I am going to get a priest in to fix the problem. It is a Catholic school.  I can do that.

I have the CS kids back in Unity.  I am having them build a simple game for Google Cardboard.  Cardboards fit my class budget.  My class budget is whatever I am willing to spend out of my own wallet.  I really cannot count these Unity classes as programming in the strict sense.  Yes, we do use C# but it is mostly following what a tutorial says to type.  We do spend a lot of time diagnosing what the C# code is all about but that is not the same as understanding the Unity/C# coding to build from scratch.  I consider this more of a research and troubleshooting class than anything else.  Tutorials always have issues so they have to figure out what is going wrong.  Following directions closely may sound like a trivial thing to learn but it is a skill the kids have to get, especially if they actually go into the CS/programming field.  Once we have the Google Cardboard VR working I want them to introduce a Bluetooth controller to the VR project.  Then last I have this Kinect.  What can we do with a Kinect and Unity and VR?  VR and a Kinect?  No idea.  That is why I think of this more as a research class.  I will get them next year with a traditional Python programming class.  I can offer dual-credit to Juniors and Seniors.

The sophomore girl doing the animation independent study wants to make a movie.  She came to me this summer with the idea and I told her if she wrote up a course plan I would take a look and see if it was something she could do.  What she brought me was something a professional skilled at writing course proposals might write.  It definitely looks practical and fascinating.  It helps that her IQ is a whole bunch higher than mine.  I will provide her resources, motivation and then just get out of the way.  I do not want to get run over too bad.  This girl was my tech aide last year.  She was the best aide I have ever had.  She could figure out a solution to almost any computer problem.

One of the great things about teaching at a small school is I can offer kids courses on the fly like that and have classes with only two kids.  The course on the fly thing only works with the right students.  The self-motivation factor has to be high.  For the animation class she is on her own, I am teaching the stats class at the same time and I also know zip about animation software.  It only works with the right student.

It should be a busy but fun year.  Good kids and although the tech work load has gone way up it is fun and interesting work.

A day in the life of a small school techie

August 15, 2017

OK, so it actually was several days.  Thursday last week I went to my office to do a little work.  Yes, it is summer break but I usually go to school at least three days a week to see what went wonkers (“wonkers” – a highly technical term to replace the less technical term “weird shit happened”) over night.  I have a blue screen of death.  A brief message tells me something is corrupt.  After a few minutes of Googling on a second computer I find that I can restore the corrupt files through the BIOS.  I restore the corrupt files.  I reboot.  It reboots.  No blue screen of death.  No, wait.  I cannot log in.  “Domain controller not found.”  Golly, gee, shucks or at least words to that effect.  I log in to the local computer account with success.  That works.  I try to join the domain.  All sorts of interesting DNS errors.  I am back to golly, gee, shucks.  Time to go home and have a beer.

I wander in Friday to do some work.  The computer fairies did not fix my computer overnight.  Nuts, lazy little buggers.  I tinker.  I ping.  Everything is pingable.  I am confused.  Of course the browsers are dead but I have internet because I can ping Google.  It is Friday.  I go home.  There is beer.

I come in Monday.  Still no computer fairies.  (I am starting to suspect they do not exist.)  I am going to figure this out.  I discover one of my domain controller servers is off.  Actually unplugged.  What the heck?!  I fire it back up hoping that, for some odd reason (usually having to do with computer fairies), that that was the problem.  Nope, still DNS errors when trying to join the domain.  I have an epiphany.  I call my computer guru.  He comes in.  He is puzzled.  We tinker.  I have not tried a browser in a while.  Chrome comes up telling me it cannot connect to the internet due to either the firewall or antivirus product.  This is a new error.  The firewall is off.  We turned that off first thing.  This computer has run just fine with this AV product for years.  It cannot be the AV.  I uninstall the AV.  I try and join the domain.  The computer joins.  I log into the domain profile.  It works.  My guru and I stare at each other.

So here are the lessons learned.

  1. Computer fixing fairies may not exist.
  2. Never trust the fact something that has worked for years on the computer just fine will not go bonkers. (Evil computer fairies?)
  3. Have a guru. He may not be able to fix it but confusion deserves company.
  4. Always have beer in the fridge.