Archive for April, 2018

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 ( 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 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.