Archive for November, 2012

November 29, 2012

I have started the Arduino.  As a result I have been digging in the internet for resources   Thanks to readers I am getting more resources than I could find.  One jackpot is Steve Dickie’s and   He has been teaching Arduino for a couple of years and has built a rather nice curriculum.  It is things like this that make teaching a totally new topic possible for me.  It greatly reduces research time. is also a great site.  It explains programming things like “void” rather nicely.  Sparkfun also has a cool little pdf guide ( that does a great job of explaining the Arduino board itself.  Combining the ladyada and Sparkfun material makes for a pretty complete intro.  I have also found a shield (an adapter) that will allow me to use my Mindstorms motors with the Arduino (  The little robot is becoming much more likely.  Now I just have to figure the wireless thing (Xbee?) and the wireless video feed so I can see where it is going.  Next year maybe.  This year I am going to focus on assembling a list of achievable projects and the hardware.  So far I own all the hardware.  That is not a good approach; I do not make enough to pay for everything.  I am going to have to squeak this stuff into the school budget somehow.

One issue I am encountering is getting the kids to read ALL the steps.  I, of course, read all the steps so everything works the first time.  Whatever.  That is why I spent an hour last night getting that stupid little LED to blink.  No hanging out at the local bars for a while.

I have a feeling this is going to get exceedingly fun and addicting.  It is winter in Montana, time for an evening indoor hobby that will not upset the wife too much.  I usually bring a motorcycle or a bicycle in to the living room so I can work on them in the winter (no heat in the garage).  She is good with it for a week or so then I get “the look”.  The Arduino stuff is small, no “the look”.

Arduino, Kinect and stuff

November 25, 2012

This Monday I am starting the Arduino with my two advanced kids.  They have been using Scratch and the Kinect to write some simple games.  We could write some more but I think they had exhausted the concepts.  I am also not too crazy about Scratch when things get complex.  So in my idiocy I will switch to something I know nothing about, has the added complexity of building electronic devices, has no lesson plans and involves non-free hardware on a $0 budget.  I think it will be fun.  I bought the book “Arduino and Kinect Projects” by Melgar and Diez to have a target to shoot for.  It is important to have goals.  This is all part of that bigger goal of having a little robot rolling down the halls wirelessly controlled by a Kinect.  One step at a time.  The two kids taking the advanced programming class are really sharp but if I do not give them something challenging they have a tendency to wander focus-wise.  This is one of those classes I have to abandon regularly in order to do my second job as the school’s computer fix-it guy.  So I need something to keep these two busy while I am away and yet have something they will learn from and have fun with.  They are also the types that can explain to me what they learned so I can learn also.  Being the tech dude ensures I am never ahead of my students when I decide to go off on a tangent like this.  With the right students I can give them the tools, a direction and have them teach me.

I had originally intended to use VB or C# to interpret the Kinect data to feed the Arduino but after digging around the internet there were simply too many holes in the explanations that I could not fill this semester.  Most of the stuff posted on the internet for this kind of stuff is written by people who really know their stuff and is written for other people who know their stuff.  It is not written for high school teachers who do not know much stuff and do not have a lot of time to experiment with stuff.  (I am losing my focus; there is leftover stuffing in fridge calling my name.)


A small world view of CS education

November 17, 2012

I live in a very small world CS ed speaking.  Most of my world view comes from blogs and internet readings.  There is another programming teacher in my school but his interest is in business (his degree) and football (he coaches).  He has no programming background.  Everything he knows I have taught him or guided him towards so he does not increase my world view much.  He is smart and is a good person to bounce ideas off of but he has a very limited interest in the field.  There is another programming teacher in town, at the public school, but his approach is APCS directed.  My school has 20 kids taking programming this year, out of 180 kids in the school.  The public school has about 20 kids taking programming also, out of 3000.  So it is somewhat logical that I am not impressed by the local public school approach.  I have looked at the APCS curriculum and got bored.  The trouble is there is nothing to tell me that my approach, although I get better numbers, is the right way to go.  I specialize in introductory programming: Scratch, Small Basic and intro to Visual Basic.  I do get a few kids taking multiple semesters of programming where we work with Corona and the basics of C# (that is all I know about C#, the basics).  I want to kids to explore and get an overview of programming.  I want them to have some fun with it.  To tell the truth I really do not have enough programming background to do a rigorous programming curriculum so it is good that I am absolutely not interested in a rigorous course at the high school level.  I do wish I knew a lot more for that one kid every few years that is interested in going to that level.  Since there is no practical way of getting what I need I had better be happy with what I can do.  I occasionally see my graduates and from their feedback they seem to be well ahead of their contemporaries in their programming classes.  This can mean one of two things.  Either I really am on the right track, or their contemporaries were not.  (Yes, I know there are several other logical reasons for this observation but I like this one best.)

One of my elementary school parents is an instructor in the CS department at the local university.  When I asked him about what he sees as issues with his incoming freshmen and what he would like to see more of from the high school level his answer was simple, problem solving skills.  He says he can teach the programming they need but he does not have time to teach them to think on their own.  He says that if they encounter a problem they will not/cannot troubleshoot their programs at the most basic level.

Now for the purpose of this blog entry.  What should a CS Ed certification program teach in the way of programming?  Considering a certification program is probably only 2 to 4 semesters long there is not a long time to squeeze in a lot of programming education.  Should a program target APCS level teachers for that .1% or smaller student population or the 10% basic level group of students but stress problem solving?  Then there is the question if a prospective teacher can be brought up to the APCS level in the required time?  I assume a new APCS teacher is going to learn a lot on the fly the first time they teach the course.  Will a background in Scratch and Small Basic with a heavy emphasis in problem solving and pedagogy be enough to make a teacher capable of teaching APCS?  Not having taught APCS I cannot answer that question.

For smaller schools the basic courses are the logical approach.  The courses attract a good number of students and can give them what they need to succeed at the next level.  Small schools rarely have the gaps in the curriculum to squeeze in something like APCS and the course prerequisites. Also the student numbers in a programming sequence dwindles rapidly each semester making advanced programming courses a bit unjustified in a cost/benefit context.

Here in the West there are lots of small schools compared to large schools so the teacher training requirement could be very different regionally.  A small school is going to hire a multi-dimensional teacher, not a CS major.  So I would have to argue that any national CS teaching program has to target the most need for schools and where the most students are going to benefit.  A teacher training program that targets lower level programming skills has several advantages.  It could attract prospective teachers that typically would not go into a CS program but are looking for an added certification to improve their marketability.  This would probably lead to the larger number of qualified programming/CS teachers that will be needed eventually.  An emphasis on problem solving skills has excellent transference to other subjects.  The ability of a large number of students (compared to a few Java whizzes) to program in a simple language like Small Basic could have benefits in other courses.

There simply not enough CS majors going the education route, the money is not there and, for many, the interest is not there.  We need a teacher training program that will temp the non-computer geeks into teaching programming/CS.  A program focusing on Scratch, Small Basic and other intro languages with a strong emphasis on problem solving and pedagogy might attract the numbers needed for the future.  Of course now there is that minor little detail of convincing universities of offering CS ed programs.  Back to the chicken or the egg.

I love smart kids in my class.

November 3, 2012

It is so nice to have smart kids in a class.  Today I was going to have my Programming I kids start on the actual programming of the Visual Basic house.  To do this they have to reference the Small Basic library.  In order reference the library they need to browse the C drive.  Kids do not have rights to access the C drive.  “Houston, we have a problem.”  So I am trying to remember how this worked last year and it comes to me, I was in my office lab where the computers are in a different OU and the kids can access the C drive.  Now what do I do?  I really do not want to change the permissions on these computers because they are not well supervised.  I am sitting there meditating on the subject when one of the kids walks up and says he has it working.  The other day I had given the kids a generic admin account password so they could download VB.  I had not changed the password yet.  The kid logs in as an admin, creates a project, references the Small Basic library, saves the project on his thumb drive, logs back in as a student, moves the project to his network drive, reopens the project and “poof”, turtle commands from the library work.  With my pretty non-existent formal background in VB I had not considered the referenced library has to be included in the project folder.  Little details like this are something a teacher could use.  I need to add this tidbit to the Programming Methods Course I am assembling.  (Everybody should have a fruitless hobby.)  This does point out one of the problems with learning to program from a book and the internet.  Most programming texts focus on the writing of code, not the management of the IDE or files created when saving projects.

This problem would seem to be somewhat unique to schools.  I do not think that having the C drive blocked is a typical scenario for most programmers.  It is things like this that can make teaching programming in the high school environment a bit interesting.

I love smart kids in my class.

CS Pedagogy? We ain’t got no pedagogy.

November 2, 2012

I am sitting here thinking about what and how I am going to teach in Programming I today.  We are on the third day of Visual Basic.  So far everything has been show and tell on the projector.  I hate show and tell on the projector for several reasons:

  1. Show and tell is as interesting as watching paint dry.
  2. Everything on the screen is slightly out of focus no matter what I do.
  3. The font is very small and my eyes ain’t what they used to be.
  4. I sit in a chair and talk, they sit in a chair and listen and everybody is bored.
  5. I can see the kids twitching to go sit in front of a computer and start hacking something in and I can identify.  I like to hack code in to see what happens and it beats the heck out of sitting and listening.

Yes, 2, 3 and to some extent 4 are technical issues that could be solved with better equipment and some software.  I do not have better equipment or software so they are issues to deal with.  I wish I had the “perfect” programming lab with a high resolution projector, an interactive board so I could be on my feet moving around, a wireless keyboard and mouse, Classroom Management Software and a nifty laser pointer to play with.  I do not and I doubt many programming teachers do.  (Sometimes I have computer lab dreams where I do not have 3 different brands of computers, where I have lots of RAM, screens larger than an iPad or (Oh fantasy) dual monitors, and the kids can access the C drive.)  The problem, and I guess it really is not a problem, is that I just do not see a better way of doing the initial start to the section other than show and tell on the projector.  Show and tell may be the best way to get information to a group but the audience focus and retention absolutely sucks.

Everything I know about teaching programming I have learned by the seat of my pants.  All the programming I know I have learned on my own through the internet and a few books.  (OK, I had a FORTRAN course in 1971 with punch cards, and a Java course in 1980 by a guy that could not teach a duck to float so I do not count those.)  I have never read (not from lack of trying) an article or seen a presentation on programming/CS teaching pedagogy.  I did find an article on pedagogy for CS that might be an interesting read, too bad it cost $99 to read.

I have watched one other high school programming teacher teach.  (The next nearest one I know of is 200 miles away.)  He was a decent programmer I think (he actually has a degree in CS) but his approach was to give them a book and the internet and let them puzzle it out.  He also had a very select group of students.  I go out of my way to attract mainstream students so although they are good kids, they do not live and breathe computers and would have a tendency to wander and lose focus with this approach.  I have had kids where this was a very good approach, but they were computer geeks and were smarter than I.

Every year I look through the local University’s catalog searching for something that might improve my ability to actually teach programming.  Nada.

I need to get back to thinking about what I am going to do next period with my Programming I kids that will be brilliant, entertaining, comprehensive, conclusive, captivating, fun and teach a little programming on the way.  No problem.  I hope the projector works.

It is still a zoo.

November 1, 2012

What a zoo.  I have been too busy to breath lately.  This half-time teacher, half-time techie just does not fly.  We are transitioning from Outlook/Exchange to Google Apps for Education.  We hired a guy to do the transition for us.  He lives 200 miles away.  I was not consulted on this hire.  I like a consultant that can wander by every now and then so they can show me what they did or show me what to do.  This is worse than a long distance romance.  So I have been teaching myself the ins and outs of GAE deployment.  Luckily we are doing it nice and slow.  I have time to fix all my screw ups.

No Corona this semester.  I simply did not have the time to put into it to make the course good enough for my standards.  I have my two Programming II kids working with Scratch and Kinect.  They are trying to build a semi-original game.  They are both very sharp and from what I can see they have a good idea.  The Programming I kids have just finished with the draw-the-house project in Small Basic.  I am continuing the same project in Visual Basic now.  Having done the project in one language makes teaching the second language much easier.  The kids understand the plan, now they just have to learn the new IDE and the coding differences.  It makes the kids think “how do I do this in this language” and therefore they have to dig around on the internet.  I only like to use Small Basic as a very beginning introduction to programming.  It can do a lot of good programs but its inability to pass parameters and therefore every variable is global just bothers me.  I list parameter passing as sort of a fundamental programming skill.  I also want the kids to declare variables.  It makes them think in terms of variable types.

I need to go make an X on a ceiling.  The maintenance guy is going to hang a projector in a classroom and I have to put the X so he knows how far away from the screen to put the mount.  Thank goodness I have a Masters degree in Math and a minor in CS to make the job easier.  If a CS for Education program ever does get started putting X’s on ceilings has to be included.  Along with how to buy used servers, how to build Costco shelves to put the servers on, and how to run cable through spider infested crawl spaces.  All in a days work.