A week of PD again: not what I want but the only show to be had

July 4, 2018

I spent last week in Butte MT at a Mobile CSP teacher training/PD.  MCSP uses App Inventor as the language.  I like and dislike App Inventor.  I really like the fact kids can easily get an Android app on their phone that actually works.  Super cool.  I am not so crazy about the drag-and-drop format of the language.  It is great initially for small programs but it hits a wall pretty quickly.  I really wish there was a line code mode like MakeCode.  I cannot squawk to much, the price is in my budget range.

My biggest gripe about the week long PD was that it was a how to program and how to use the MCSP curriculum, not a how to teach problem solving, nothing on program troubleshooting, no pedogical ideas, none of the real classroom teacher needs.  There were two groups in attendance, beginning CS teachers, mostly business teachers which are the largest group in the state of Montana that are certified to teach CS courses, and one out of the twenty who were experience CS teachers (me).  (For further reading on this gripe see http://blog.acthompson.net/2018/06/teach-me-how-to-teach-not-what-to-teach.html and http://cestlaz.github.io/posts/pd-for-cs/#.Wz1DitJKhP.)  I knew what I was attending, this is the same group I was with last summer for a week long Python PD.  I attended knowing ahead of time what the theme was going to be.  But I always hope.  The best thing I get out of these is the networking with other teachers.  Admittedly I am by far the most experienced in the classroom but that does not mean there are not some excellent teachers in the group and some excellent ideas in the room.

It would seem about time a PD designed around problem solving, program troubleshooting, pedagogy, project based programming, what languages are good for teaching what, tech issues and so on was offered.  Admittedly I do not know where the instructors or the money for this would come from but it is time to start working this out.  The course for the last two summers were funded by an NSF grant.  A pretty big grant because it paid the attendees $1000 for the week and paid for rooms and per diem.  I need to figure out this NSF grant thing.  I also need to research and write up a course (maybe just plagiarize the heck out of Doug Bergman’s “Computer Science K-12”.  It is way up in Montana, who would know?).  Since next school year I am teaching 6 preps and doing the IT thing this may take a while.

It was very interesting talking to the teachers and their relationship with their IT departments.  Two of us were from private schools.  No problems there, I am my school’s IT department and the other was a school even smaller than mine so the IT was very informal.  The public school CS teachers all seemed to be in a state of war with their IT departments.  Any requests are automatic “No”.  One teacher was not allowed to use Raspberry Pi (What is the plural of Pi?  Pis?  Pies?  Something new to ponder.) because the IT director did not know what they were.  Using YouTube is a major hassle.  I know of at least three ways to make select YouTube videos available to teachers.  It seems their IT departments could not be bothered to find a solution.  I do not understand this.  Public schools seem to be terrorized by the possibility little Johnny might use a school computer to do something bad that they have reached the point where little Johnny has trouble doing anything on a school computer.  I mentioned to one teacher how I get laptops donated from businesses and just give them to the kids to keep.  The idea seemed totally out there to them.  Public school is just getting weird.


Garth goes back to College: Opps

June 14, 2018

I have been sitting in on an intro Python course at the local university.  This is a CSCI 135 course, the CS department’s first course for majors.  This course is three weeks long, three hours a day.  I can only sit in for a few days due to work at school and a week-long professional development I have scheduled.  I figured I would sit in for a few days just to see someone else teach programming.  I have not been in a programming classroom other than my own or a professional development for 20 years.  I need to be polite here but it is difficult.  The class is, ah, what words come to mind?  Confusing, boring, tedious, crappy, oh so traditional with the sage-on-the-stage, PowerPoint hell, trite, trivial, pure syntax and generally not good.  Is that polite enough?

The range of experience in the class is pretty broad.  There are students with nothing for a programming background and there are graduate students learning Python so they can use it for research.  One of my high school juniors is in the class with a month or two of Python.  So it is a difficult class to teach to but not impossible.  I can see the beginners are already lost and the experienced students are just suffering through the tedium.  The instructor is using an online textbook called zyBooks.  I understand why she would use it, it does the code grading automatically.  It is a huge time saver for the instructor.  But it is tedious and trite.

This course is a perfect example of the mindset that learning programming is nothing more than learning syntax.  Memorize the language syntax and you are learning programming.  No problem solving.  No teaching top down, bottom up or other problem solving strategies.  No debugging techniques.  Nothing that makes a programming course an actual, useful programming course.

Now my opinion could be influenced by the fact I can program in Python.  I have taken that in consideration and tried to step out of that knowledge personality.  I am trying to look at this course as a teacher with the goal of imparting a fundamental understanding of what programming is all about through the medium of a particular language.  From that view the course is a zero on a scale of zero to ten.

I am actually learning something by just sitting in.  Nothing about Python of course but a lot about ways of not teaching Python.  Not something I was planning on but it is worthwhile.  Watching this course is going to make me very conscious of how I teach my own courses.

Summer is here and it will not be a break

June 1, 2018

Today is the last day of kids in school.  The kids are happy of course.  Me, not so much.  I like kids and teaching.  Oh well, there is next year.  I will still be at school through the summer.  As the IT guy I have an eleven month contract.  Time to fix all the problems I did not have time to deal with during the school year.  This would not be a big deal if the building was air-conditioned.  It is not, it gets hot, especially on the second and third floors.  As in 100+ degrees hot.  Windows closed, no fans blowing, oikes.  That is why I make the big bucks.

Summer is also when I revamp my courses.  Nothing original there, I imagine every teacher in the US does something like that in the summer.  I have got to do something with my Stats course.  It is putting me to sleep so you can imagine what it is doing to the kids.  I have got to get Excel or Google Sheets more involved and less TI-84.  Computer access is an issue but I will figure something out.  My game making course needs to be altered a bit.  I am doing too much software and not enough philosophy and psychology of games.  You know, what defines a good game.  Why Flappy Bird was such a hit, why Tetras is still popular and why the Fortnite craze.

I have quite a few kids signed up for my dual-credit Python course.  I have it pretty well lined out but I need to expand it a bit.  Most of the kids signed up have done Python already so that sort of kills the first month of the course.  Maybe it is time for me to learn how classes work in Python.  So you think “He does not know how classes work in Python?  What a moron!”.  Well when I started programming there were no classes.  And in the many years since that beginning I have had no classes on classes.  (Sorry, I had to do that, it was there.)  I can spell OOP and I know the idea, I just do not do OOP.  Reading books and watching videos on classes and OOP just does not do the trick.  I need a class on classes with a real teacher.  And I need the time to take said class.  The local university is offering a course on Python this summer.  I just have to figure a way of working and sitting in on the course.  This is one of the big problems with learning programming on-the-job and on-the-fly, there are just so many knowledge gaps.  Kind of like 90% of the CS/programming teachers in the US right now.

I am signed up for a weeklong Mobile APCSP course in Butte.  I am really not taking the course for the material, it is the interaction with other programming teachers that I look forward to.  The course uses App Inventor which I am not a big fan of but it should still prove interesting.  The fact the class is offered at Butte is a big plus.  Some of the best mountain bike trails in the US are right out of Butte.  The town also has three breweries.  Yup, I like Butte.

For summer recreation I am heading to Oregon August 5th until August something else to go mountain biking and maybe hit the coast.  I have to be back by the morning of the 13th.  I am giving a First Lego League programming minicamp.  This will be the first year we have done a FLL team.  “Interesting” is one word that come to mind.  I said I would NOT be the coach.  We found a parent who has done it before.  He is a CS teacher at the university and has a 7th grade son who will be on the team.  Everything worked out well.

As usual the summer will not be boring.  Lots to do and lots to try to figure out.  Oh, I almost forgot, I am signed up to do a 25 mile mountain bike race at the end of July.  Right now my conditioning is zilch.  Something else to work on.  Somewhere in here I am doing some overnight backpacking trips.  I want to fish some of the high lakes in the Bitterroots.  More training required.

Palindromes and Python: Let me count the ways

May 9, 2018

I was looking for some simple Python code examples for my four programming kids.  We are going to do a little graphics so they can see Pygame then do some string and number manipulation.  Just some tinkering, nothing super fancy.  Offhand I could not think of anything so as usual I started thinking of something else.

The other day I was subbing for the golf coach and the kids were done with the math assignment in about five minutes.  Most of the class started on other assignments or went to reading.  One boy had his head on his book bag ready to take a nap.  Jokingly I said instead of taking a nap why doesn’t he find out how many palindromes there are from 1 to 1000.  To my surprise he sits up and asked what a palindrome was.  (My surprise was not that he did not know what a palindrome was, but the fact that he sat up and asked.)  I explained what a palindrome was. He gets a piece of paper and starts figuring.  He was not writing them down one-by-one, but was looking for a pattern.  (I have no idea how many palindromes there are from 1 to 1000.  Suppose if I am going to pose these types of things I should know the answer.  Python project.)  Anyway, from there I mentioned Project Euler.  He made an account and started in.  That led me back to Project Euler.  Might be a good place to find some simple Python projects to fiddle with for the class.  Here is problem number 4.

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

That looks like a good Python type project.  I Google “Python palindrome”.  OMG.  Do you know how many ways there are to write a function to identify palindromes?  Many.  Iterative, recursive, built in function, all with their own subset of variations.  I have code snippets up the wazoo, all solving the same problem.  What more could a programming teacher ask for?!  Be still my heart.  Admittedly, this approach may not work with every programing class (Math?  Yuck.) but with some classes and some kids it is a strategy.

Most of the Python palindrome functions are using the Pythonese text manipulation functions involving slicing; colons and brackets.  I do not remember any of these.  It is going to be the “here a book, here is some code, figure this out, tell me what is going on” method of teaching code.  I like it.  I probably ought to figure out all that colon and bracket business again.

For the right students Project Euler is a gold mine for programming ideas.  For other students it would be the end of their interest in programming (Math?  Yuck.).  Finding the right balance and interests is the key.


A little excitement can be bad.

May 1, 2018

Sunday a teacher emailed me that the internet was down in the school.  I wander down to see what happened.  I have two circuits going into the server room.  One circuit was dead which was the one the firewall, router and air conditioner were on.  I moved the minimum needed equipment to the second circuit to get things working until we could find out the problem with the dead circuit.  Our maintenance guy, Josh, started chasing the problem down Monday morning.  He turned off the breaker and started pulling the receptacle apart and got shocked.  He checks with his mutli-meter and no voltage.  He goes back to work on it.  He gets shocked again.  We call an electrician.  The electrician comes in today.  He climbs up the ladder to look above the drop ceiling.  Josh and I hear “Oh shit”.  That is a bad thing to hear from an electrician.  We have melted wires touching the conduit.  It seems we are lucky the place did not catch on fire.  The electrician is pulling new wires as I type.  School techie work is always so interesting.  Especially in a building built in 1922 and all the electrical is an add on.

CS on the Cheap

April 30, 2018

I watched Doug Bergman’s video with fascination and jealousy.  I have his book on the way.  Looking at Doug’s classroom I can see a different end of the spectrum money-wise from my classes.  He has a lot of really cool hardware which really can attract kids into CS classes.  Most schools, especially small rural schools, do not have the budget or the sponsors to purchase high end hardware like this so we have to find a different approach.  Having some of these hardware devices is an incredible attractant for students and adds a lot to the breadth of a CS course.  It gets kids thinking that CS and programming are more than sitting in from of a keyboard.  So how does a poor school with a zero dollar budget get at least a little bit of this hardware into the classroom?  Well here are my paths to dirt cheap CS without digging too deep into my own pocket.

  1. Computers
    1. I stress BYOD. If kids cannot afford a laptop I have loaners.  I give them admin rights and reformat in the summer.
    2. I do not use the labs for my classes but all my labs are used computers from the Montana State recycle warehouse.   Four to six years old but for what a school needs perfect.
    3. Most of my laptops come from companies in town that are doing a replacement rotation. They come without an OS which is fine by me.
    4. I do not think Chromebooks are a satisfactory route for CS/programming. They are just too restrictive, especially after a school does a lock down on them.  There are a number of programming apps out there that will work on Chromebooks but I do not see them preparing students to work in the real world.
  2. Software
    1. All free. Python, Small Basic, Visual Studio, Alice, Scratch, App Inventor, Unity, Blender, and so on forever.  If a teacher cannot build a decent curriculum from the free software out there they need to just give up.
    2. I do buy a Microsoft license which is my biggest budget item.
  3. Textbooks
    1. Python – “How to Think Like A Computer Scientist, 3rd edition” by Wentworth, Elkner, Downey and Meyers. Great book to use as a course guide.  Is designed as a textbook with exercises at the end of each chapter.    There is an interactive version here or just Google “How to think like a computer scientist”.
    2. Java – “Think Java” by Downey.
    3. C# – “C# Programming Yellow Book” by Rob Miles. Designed for a college course but works fine for 2nd or 3rd year high school programmers.
    4. Almost everything else has tutorials or YouTube video. There is a time commitment involved finding good ones but the price is right.
    5. There is also some excellent low cost stuff out there. For Unity the series by Patrick Felicia is great and very cheap.  I bought them out of my pocket, that is how cheap they are.
    6. Lots of used textbooks on Ebay. I bought a bunch of the original “Learning to Program with Alice” by Dann, Copper and Pausch for nineteen cents.  $5 for shipping.  Cannot lose.
  4. Hardware things or “toys”. This one is tricky.  It is easy to spend money here getting the latest and greatest then the next year have it be old.  I try to buy things that are more than just “toys”.
    1. Arduino – dirt cheap and a class can go a long way with them.
    2. Arduino again – PodPi is a series of comic book like lessons that are built for ages 9 – 12. Very hands on.  Not free but not expensive.
    3. Micro:bit and MakeCode – Micro:bits are cheap. If you are really poor MakeCode has a built in simulator.  You do not need the hardware but it is more fun with it.
    4. Programmable drones. I bought a Codrone from Robolink for $180.  They make a Lite for $120.  These are designed for classroom use.  Take one heck of a lickin’ and still live.
    5. Lego Mindstorms NXT or EV3. I needed a donation to buy these but they can be worth the money.  Great for after school robotics clubs.
    6. Leap Motion device. Another out of my pocket expenditure.  This thing “sees” your hands, very similar to a Kinect but small.  I want to mount it to the front of a Cardboard and see what I and the kids can come up with.
    7. And my favorite by far – Google Cardboard. Make a VR “something” in Unity.  I think I spent $10 for a couple, found some YouTube videos and went to town.
  5. Curriculum.
    1. Need a whole canned curriculum? Try APCSP Mobile (mobilecsp.org). Uses App Inventor and Android devices.  iPhones to come this summer supposedly.  I am not a real fan of canned curriculum like this but for a school/teacher just starting out it can be a life saver.
    2. Microsoft is presently working on a curriculum using MakeCode and micro:bit. This is to replace the “Creative Coding through Games and Apps” which MS is discontinuing.  Email MakeCode at csmakecodeteachers@microsoft.com to sign-up for early access to MakeCode beta content.  You will be added to the distribution list.

This list is just what I could think of in an off-hand manner.  There is a lot more out there, enough to satisfy any CS/programming teacher’s low budget needs.

CS Ed: Not an Easy Cookie to Cut

April 25, 2018

It is interesting to read the conversations about CS Ed and teacher training for CS.  The different opinions of what a CS Ed program should contain in the way of coursework is interesting.  Briana Morrison’s comment in Mike Zamansky’s blog is an example of what many CS teachers think of as an excellent and ideal program.  I look at that UofO program and am envious.  But I also look at a program like that and know it is not something that would sell in Montana.  Montana is a state of small schools. Montana has 179 schools, 13 of which are over 1000 students.  93 are less than 100 students.  Of those over 1000 student schools I know for a fact that 2 of them offer no CS courses and the third has only a part-time CS teacher.  To the best of my knowledge there are no full-time CS teachers in the state.  Sad.  So the CS Ed needs for Montana are driven by reality.  We cannot use teachers with a CS Ed degree and nothing else.  Our schools are not going to jump on a CS curriculum anytime soon.  (Think glaciers, very slow glaciers.  That is how curriculum changes in the public schools in this state.)  Even those schools that are teaching CS only need a part-time teacher for an introductory programming course.  There are just are not enough kids in most of the schools.  Small school teachers are already hard pressed to meet required courses and traditional electives.

So what kind of CS Ed program does this limited need require?  A comprehensive program like UofO offers would only attract a few pre-service students and even those pre-service students interested that look seriously at the Montana market will think twice about the effort required.  A comprehensive program like that would not attract in-service teachers.  Too much time and money for a limited need.  For Montana’s needs, an in-service would be optimal.  If a school does decide to offer a CS program it is not going to hire for the position.  They are going to find a teacher that is willing (or not, I have met a couple of teachers that were told they are now the programming teacher and were not too excited by the opportunity) and just hope for the best.  Montana does offer some week long summer in-services in Python and APCS-P for teachers.  I have participated in the Python summer course and will be in the APCS-P Mobile this summer.  In both cases depth is not there and breadth is not there.  Better than nothing but just barely.  Most of the course time is spent teaching the programming language and little is spent on pedagogy.

What I think Montana needs is an in-service program with a week or two in the summer to teach the fundamentals of programming through a language, then an on-line component with a couple of weekend face-to-face meetings to get a pedagogy thread started.  Enough to get a program started and then hope it will grow with the teachers.  From there an online community needs to be started to share teaching strategies, lesson plans and provide help to the new CS teachers.  Our larger schools do need more experienced CS teachers with a lot more depth but that number of teachers and schools are still very small.  Those teachers will simply have to be self-taught or come from out of state sources.

At the moment there is not a lot to tempt teachers into an in-service CS program.  The present in-service attendees are teachers that are interested in CS.  The numbers are low because the attendees are self-motivated.  No one is there because their school asked them to attend.  There is simply nothing to attract those teachers without an interest in CS to attend.

As soon as more schools start offering CS I can see the demand for numbers and depth going up but I still see the primary method of schools and teachers getting both to be through in-service programs.

CS Ed – to water or not to water, that is the question

April 17, 2018

I started to write this as a comment to Mike Zamansky’s post but it got way to long.  As usual he brings up some excellent points.  Mike and I have the same goals but our knowledge, experience and backgrounds are vastly different.

I came into CS Ed with no background in CS other than an ancient course in FORTRAN (punch card era) and a horrible course in Java (Gandolf and plug the phone receiver into a weird phone receptacle era). Everything I presently teach I learned on-the-job from books and the internet. I teach no “canned” curriculum so everything I teach I had to learn from scratch.  (This is not exceptional.  Most CS teachers that are not teaching a “canned” curriculum learned what they presently teach from scratch.)  My present job (tech coordinator/IT dude and CS/Math teacher at a smallish K-12 Catholic school) requires I have knowledge of K-12 CS, not just high school or pre-college.  As a result I need a tremendous breadth and very little depth. (I wish I had time for depth.)  Mike and my skill sets have us looking at CS Ed in different ways, which for me is a huge asset.  So here is my comment to his post.

My “Math for Math Teachers” course was a real ass kicker. Number theory, math history (why the Egyptians did it that way and why it was cool), devolution of algorithms (how the long hand division algorithm actually works) and how to teach all that stuff. It was one of the hardest math courses I ever took. (Abstract Algebra with groups, rings and other mysterious, magical and imaginary things was the winner.) I also taught “Math for Elementary Teachers” at the Univ of Montana. Drop out rate was about 25%. These math courses were far from watered down math. They were “understanding how this stuff works” on steroids. When I started teaching I did not need that Abstract Algebra course work, I needed course on how kids see math and how to help them see math. That is what those “Math for Math Teachers” courses try to do. Prospective math teachers could use four semesters of that “math for math teachers”.

I see the same thing for CS. A CS Ed program should not focus on CS content, it should focus on how to teach that content. But the program has to give enough content to build more content on top of.  A CS teacher needs to be familiar with a large number of languages, from things like MakeCode, Scratch and Alice to Python, Java, Visual Studio and maybe a couple of game engines like Unity and Lumberyard. Throw in some Blender and Gimp in case the teacher wants to start a game programming curriculum because the APCS course has only two kids in it. They need to be able to discuss the basics of networking, computer hardware and all that “techie” stuff.  Oh, and do not forget that apps course that needs a teacher: MS Office, Photoshop, Audacity, etc.  The required breadth is intimidating. Remember I am looking at this from the direction of a small school CS teacher.  Getting the right depth is the issue that bothers me. Two semesters of Java (or whatever language is the flavor of the month) or a “Java for Teachers” that teaches some Java and but focuses on teaching how kids are going to struggle with Java and how to address that struggle?  Both would be the perfect solution but there are only so many hours in the day. Finding that middle ground should keep us CS teachers talking for many years.

Is a “Java for Teachers” a watered down Java course?  As far as Java (or whatever language) goes, yes.  As far as teaching Java, no.  Teaching programming is much harder than learning to program.  Ask any CS teacher.  The Java element as such is not watered down because it is unimportant, it is watered down because there is only so much time in a course and somehow the instructor has to squeeze in Java AND how to teach Java.  The “how to teach Java” is the hard part of the course.  Experience has taught me teaching math is a cupcake compared to teaching programming.  Will that “Java for Teachers” turn into an “APCS-A for Teachers”?  I wish it did not but it may.  The shortage of K-12 CS teachers and the shortage of college level K-12 CS teacher trainers may drive that trend.  If a school wants an APCS program their only option right now is an “APCS for Teachers” in-service.  (I am actually taking an “APCS-P Mobile” in-service this summer.  I do not teach APCS and have no desire to teach APCS but it will increase my breadth and will give me more material to cherry pick from for my courses.  Depth?  Not so much.)  Arguing the good or bad of this “take it then teach it” approach does not change the necessity.  It is better than nothing.

So where was I?  Oh, yes, breadth vs. depth.  A CS teachers has to have that breadth.  Non-negotiable.  You may find yourself teaching 6th graders Scratch or helping a 3rd grade teacher teach Kodu.  On the other hand you may end up teaching in a high school that prides itself on sending CS prepped students directly to an upper level university CS program.  Going to need some serious depth for that.

Are we watering down CS Ed by building and offering “CS for Teachers” type courses?  Yes and no.  We are watering down the CS part and (what is the opposite of “watering down”?) adding more body to the Ed part.  At least that is what I hope will happen.  Individual courses and programs will vary and for sure some are going to be pure schlock.

Can the need for K-12 CS teachers be filled by offering a comprehensive CS Ed degree with a near CS major depth and still fill the K-12 breadth requirement?  I do not see it happening.  Presently the number of jobs for CS Ed majors is limited.  All the CS teachers I know (admittedly not a lot) were hired to teach something else (usually business or math) and ended up teaching a CS course or two.  There is simply no market for CS Ed majors to interest prospective teachers.  This is somewhat location driven but on average I would claim the statement to be true.  So the CS Ed part needs to be some kind of minor or certification program.  Something fairly quick and “easy”.  Something with a lot of breadth that will make a job seeking teacher more marketable.  This is not necessarily a good approach but it is better than an alternative of no CS teachers.

So back to breadth vs. depth.  I am a breadth kind of guy.  My job requires it.  I try to develop depth as needed.  Not a great solution but it is all I got.  I look at Mike’s former high school position and I see it the other way around.  For what he was doing more depth was needed and not quite so much breadth.  He was not going to deal with 3rd graders and Kodu.  So, given a limited amount of time available in a practical CS Ed program, which approach is better?  Yeh, right.  Good luck getting an answer most CS educators will agree on there.

Microsoft in Education? Maybe not so much.

April 4, 2018

I just posted this to the Microsoft Yammer Computer Science Teachers Network site.  I figured I might as well get double use out of it.


“The sudden death of Touch Develop and CCGA has me deep into an expounding mood. Reading some of the comments by teachers that use TD and CCGA makes me feel for them. I did not use TD or CCGA because I have other directions in my curriculum but a few years ago I did attend one of the multi-day CCGA training sessions given my Microsoft . It was very worthwhile and I figured Microsoft’s interest in education was well grounded and they had a plan. Now I am sure they have neither. It seems to me they do not have anyone involved in their education software department that actually knows anything about education or educators. The death of CCGA is the perfect example. There is nothing wrong with fazing out a program, CS evolves, but that change should be over a year or two to give teachers time to plan, rewrite and train. Adopting a curriculum is not an easy job. A good teacher will not just take something like CCGA and use it exactly as written. They have to adapt it to their own experience, the needs of their particular student group and the hardware they have available. This takes a lot of time on their part. Time is not something teachers have a lot of hanging around. MS seems to have completely missed this. If the MS education department had a couple of experienced K-12 teachers wandering around the office I am sure those teachers would have said something like “Are you nuts!? You cannot kill it like that! There are teachers using this right now and they have hours and hours invested into this curriculum! You do this and you are going to lose the faith of all the teachers that use MS based curriculum. Are you really that nuts!?”. The idea that the CCGA curriculum can simply be replaced by MakeCode demonstrates MS’s lack of understanding even more. Curriculum is not plug-and-play.


Years ago MS used to have Education Advocates. There were experienced teachers that were online to help answer teaching questions and promote MS education. Perhaps MS needs to rehire these positions. They need somebody out there that has teaching experience, somebody listening to classroom teachers and somebody to help MS plan a long term education strategy. They need to have someone with K-12 experience look at what teachers are doing in the classroom and give practical advice to the higher powers.


MS is not going to make a fortune on education, most of us are too broke to spend money on education software, especially when there is so much good stuff out there for free. But education software lays the foundation for what kids are going to be familiar with when they get into the job market. It builds a dedicated user group. Right now MS is losing that dedicated user group of teachers. My school is leaving Office for Google Apps, I was all ready to dive big time into Project Spark when it died, I now use Unity, my VB curriculum has been almost completely replaced by Python and Chromebooks are replacing all the PCs in our elementary school. At this rate MS is going to lose the education race, especially when they alienate a few thousand teachers.


MS obviously has people working for it that are interested in education products. Small Basic is the perfect intro line code language, MakeCode will be great for the middle school (until MS kills it that is), little kids love Kodu and VB/C# have an understandably dedicated core of teachers. All MS has to do now is to figure out what K-12 education is all about. Long range strategic planning is a good thing.”


I actually like MS.  They make some great free stuff that makes teaching CS much easier.  Some of their stuff is just down right cool.  Kodu and (when it was alive) Project Spark are and were just so dang fun that I figured I would be able to suck kids into the black hole of programming for years with those two.  After two years I am still grieving the loss of Project Spark.  The death of Touch Develop and CCGA just sends up a flag that MS is simply out of touch with their education community.  We still use Kodu in the elementary school but I will make sure the teacher there does not rely on it as a core to a lesson group.  Luckily Small Basic, one of my mainstays, does not appear to be controlled by MS.  If it were to die I would be hurting.  It is a standalone but having the support group is incredibly useful.


The lack of expertise in understanding the education market just seems odd to me.  There are undoubtedly thousands of teachers out there that would love to help MS figure out a plan for a continuous K-12 strategy that would not have any sudden death moments.  A couple of face-to-face conferences and then use online collaboration and something good might occur.  And probably a lot cheaper than pissing off a few thousand teachers.


From Unity back to Python

March 2, 2018

My sophomore Unity students were getting bored watching the Unity education series of videos I had them working through.  I was identifying.  I was bored watching videos also.  We had pretty much proved to ourselves that we could do anything we wanted in Unity if we found the right tutorial.  The kids were confident they could learn whatever they needed to do in Unity.  That was what I was after.  They were not afraid to learn on their own.  One of the kids asked if the class could do some Python programming.  (Be still my heart.)  I had not planned to do Python with this group until next year.  Next year they would be eligible for the dual-credit from the University but I figured why not, we can always quickly repeat what we do this year next year and then go on to bigger and better things.  Now this group is a bunch of programming geeks.  They like coding and tinkering with computers.  I had done a little Python with them in a brief programming language parade earlier in the year and they have coded in Scratch and Small Basic.  The group understands the fundamentals of coding so this should not be a great problem.

There is a problem.  They are doing the projects at home for fun.  They are looking at the book (“How to Think Like a Computer Scientist: Learning with Python 3 Documentation” by Wentworth, et al.) out of class.  What I had planned to do in two or three class periods is taking less than one.  I had a whole class lecture laid out on doing the program in outline form and some kind of pseudo code before sitting down to type.  I started in on my talk and one of the kids holds up a piece of paper with a program outline.  “We did that last night.”  Smart kids can really mess with a schedule.  What am I supposed to do?  Ah, the burdens we teachers bare.  I will suffer along no matter what the hardships.

Anyway we have started on the first major programming project.  Major in the sense it is not one of the assignments in the book (none of which I had assigned but they were doing them for fun so I did not need to assign them) and requires assembling knowledge from several chapters to do the project.  The project uses turtle graphics to draw a circular pattern of bricks.  Initially the variables are the distance from the center to the inner edge of the first row of bricks and the number of rows.  Later we make the brick dimensions variables.

I have done this project for years.  It is my test project for a language with drawing capabilities.  It is not a complex project but it tests multiple programming ideas: user input, modularity, parameters, loops, program organization and, most important of all, thinking before typing code.  It is also expandable.  Color the bricks, use a shape other than a rectangle for the bricks (this can be really tricky with some interesting math depending on the shape), draw the bricks in a spiral, and so on.  I typically have the kids complete the project in the language we are working in then tell them to do it in two different languages.  I give them a list of languages I know will work.  They have to find the resources to learn the language and learn the language well enough to do the project.  Since this is not a project I have seen a solution for yet on the internet they usually have some good hair pulling time involved.  Good stuff.

The challenge for this class, at least as I see it at the moment, is seeing how far and long I can drag out this project.  June is a long ways away and at the speed these kids are moving I have to have enough challenges laid out for them to last until the end of the school year.

Ah, the burdens we teachers bare (or is it bear?).  Thank goodness for beer.