Archive for May, 2015

Memorial Day

May 26, 2015

It was Memorial Day yesterday so I went to my Father’s grave.  He has a simple head stone “John W. Flint WWII Korea Vietnam”.  He was a warrior.  He started fighting in 1939 as a mercenary in Finland fighting Russians.  In 1940 he joined the US Navy.  After the third destroyer was sunk out from under him he wanted to be on a bigger ship.  He signed up for “Advanced Fire Control” thinking he would be in a Fire Direction Center on a battleship.  Opps, wrong “Advanced Fire Control”.  He ended up being launched from a submarine at midnight, rowing a little rubber boat to the beach with a radio and calling fire on Japanese gun positions so the Marines could land more safely.  “Advanced” meant he was in advance of any other American landing on the beach.  He did three landings that way and figured he had pressed his luck enough and went back to a ship.  During the invasion of Okinawa there was a time when the Marines were running out of marines.  The Navy called for volunteers to join an “Armed Sailor Battalion”.  The sailors in all the ships brigs were volunteered.  My father volunteered to lead a platoon.  He was involved in some of the heaviest fighting on the island.  After the war he sold Jeeps and was a professional gambler in Vegas.  He was very good at both but he said it lacked excitement.  In 1950 he joined the US Army to go to Korea.  He fought up to the Yalu River and back.  Finally a mortar round landed in his foxhole and he got evacuated.  The Army doctors managed to patch him up to the point where he could refuse discharge (could not get through an airline metal detector though) and he stayed in.  Being a bit of a linguist; Chinese, Korean and a little Turkish from working with the Turks in Korea, he started working for the CID (the Army equivalent of NCIS).  In 1965 he bribed an orders clerk to send him to Vietnam.  He ended up as the First Sergeant of a support element to a Special Forces Group.  It took almost a year for the Army to find him to discuss the bribing of the orders clerk.  They offered to let him retire.  He did.  He went on to get his Master’s degree in Anthropology and help wife number three get her doctorate in Archeology.  He finished his life as a research assistant for her, an avid hunter, fisherman, outdoorsman and poet.

I hope my head stone can say that much.

What should a K – 12 CS teacher know?

May 22, 2015

This is a post I wrote a couple years ago.  It seemed to fit again so I refreshed it and am going with it again.

As you may have noticed from my blog articles this is one of my favorite topics.  This is because I teach high school CS and I am well aware of what I am lacking in education and knowledge.  What bothers me the most is I have no practical or affordable way of making significant improvements in either.  I am attempting to write a methods course for computer science teachers at the local university.  Much easier said than done.  What really slowed me down was reading other blogs by other high school CS teachers and truly realizing where my programming knowledge level is.  There are some really sharp high school programming teachers out there.  So I started thinking about what a K – 12 CS teacher really needs.  So here is the beginning of a list of thoughts.  These are based on my experience of teaching in small schools where CS is not in a department but is in a limbo.  They are also based on my philosophy of not teaching programming, but teaching how to learn programming.

High School first.

  1. A BA in Secondary Education. A must for certification.  Contrary to what some parents I have met believe, a person really cannot (should not) walk in off the street and start teaching.  Having knowledge of a field does not mean you know how to present it to others.  Not that an Education degree guarantees that skill but it does improve the chances.
  2. A BS in Computer Science. I would definitely say no.  90% of the required course work for a CS degree is not going to end up being useful in the average K-12 classroom.  Would a CS degree hurt?  Definitely not, but getting a degree in CS and a degree in Education gets pretty expensive and time consuming and would probably not improve hiring chances enough to justify it.  In my area of the US there are not enough CS classes offered in schools to hire a CS teacher so the school hires a Business, Math, Technology, or something teacher that is willing to teach a CS (programming) course or two.
  3. A CS Ed degree if one can be found in your State.  I am still looking. CS Ed type courses are starting to appear but they are still rare.  What interests me in these types of courses is not the course material, but meeting the fellow students.  CS curriculum is such a vaporous thing that getting ideas from other teachers is a must.  Learn whose blogs have the best ideas, good textbooks, good languages, fun things for kids to work with in a programming class, why to avoid Cisco and so on are the meat and potatoes of teaching CS.
  4. Some programming language courses.  Most university courses are either Java or Python. If you are going to teach Java or Python a course in it would be real handy.  Of course realize that the teaching technique probably will not transfer to high school.  I do not think the language is that critical.  It is the thought process as how to learn a language that is important.   Does a high school teacher need to be proficient at a particular language?  Does the typical CS teacher have time to become proficient?   What is meant by proficient?  The typical CS teacher to me teaches 3 programming courses, 3 math courses, is on the math curriculum committee, the text book purchasing committee, is the building emergency tech guy when something dies and is helping coach at least one sport.  (My background is small schools.  For a small school this is typical.)  I feel a HS CS teacher should be able to operate to some extent in several languages.  Being able to program at the commercial level may be expecting a bit much.
  5. Be a programming geek. You have to like to program on your own just for fun.  You have to like to play with programming languages just for fun.  Every now and then while working on a cool idea you look at the clock, it is 3 AM, you are still at school and you have an 8:00 class.  (My wife cracked down on this one.  She said I was losing contact with the world.)  Or half way through the Stats class you are teaching you have an epiphany about a program you have been working on, you tell the kids to hold on for a moment while you scribble down some pseudo-code before you lose the idea.
  6. Be able to select a decent programming language book or educational source. You are going to end up teaching yourself a lot of what you are going to need for the job.  Understand that “Learn Java in 24 Hours” is a catchy title, not a statement of truth.
  7. Have lots of links to lots of CS education blogs. You will learn more from these CS teachers than any University course could ever do.
  8. Teaching a programming class is the black hole of time. Realize that one prep period is not enough time to teach yourself a new language, grade math papers, plan for next week’s classes, and troubleshoot the lab computer that suddenly will no longer log in.  Be ready to put in some non-union hours.
  9. Know games. There are a lot of good programming games out there.  Things like Lightbot and Cargo Bot.  Gamemaker and Project Spark can be life savers if some kid wants to learn how to make games and will not leave you alone.  You do not need to know how to use them but know where to find the tutorials.
  10. Be able to talk games. What does it take to write something like “Call of Duty”?  Be able to answer the big question “How do I become a rich game programmer?”  (Answer: get a degree in physics, math or art, know a little programming and get an internship.  Be a designer, not a programmer.  Programmers make minimum wage.)
  11. Know some people in the CS business. Guest speakers are a good thing.


Elementary school

  1. A BA in Elementary Education is a must just to get a job.
  2. A BS in CS. Not even.
  3. College level classes in programming? College level classes in programming do not teach Scratch or Kodu.  Do not waste your time.  If you get some genius kid who wants to learn Java, give him a good book and go back to herding the cats.
  4. Know applications; all sorts of applications. CS at the elementary level is lots of apps and, if you are lucky, a little programming.  The classroom teachers are not too interested in programming; they are interested in something that will help them achieve their subject goals.
  5. Be expert enough in all subjects so you can help the classroom teachers design lessons using the available technology. This is not too CSie but it is going to be a big part of the job.
  6. Be able to plan in intimate, gruesome detail every minute of the class period. A class of 7th graders with 15 minutes of free time and a computer can get, ahh, entertaining?
  7. Have excellent classroom management skills. Twenty to thirty 5th graders in a computer lab can get a little unruly if not managed well.
  8. Again know games. Know lots of games, especially ones that have some learning goals.


  1. Be able to fix stuff yourself. For example if the internet in the lab dies know what to check.  Waiting for tech support means you have a room full of kids with nothing to do and you do not have the option of just running for your life.
  2. Be nice to tech support (if you have tech support). If you have good tech support give them a Christmas present.  If you have bad tech support give them two Christmas presents as a bribe so you can get good tech support.
  3. And last but not least, read Sun Tzu’s “Art of War”. Almost everything in it applies to either computers or students.

Glaciers and CS in the Classroom are related

May 21, 2015

Since I have no imagination of my own and I am brain fried from a long school year I am going to grab on to Alfred Thompson’s blog thread “Computer Science and ?” and go my own direction.  I figure I could write lengthy comments on his or just grab it and go.  So stand by for a hand flailing, jumping up and down, end of the school year and I need to think about how I am going to improve next year, pissed off at my local university education department because they are antique idiots, I may not know what I am talking about but I sure have fun talking anyway kind of post.

After 30 years of teaching I know using computers in the classroom is just a pain in the ass.  Just ask any teacher that does not use computers in their classroom regularly, or even those that do.  Things like:

  1. Not enough computers.
  2. Take forever to boot.
  3. Cannot install needed software without tech support.
  4. Kids lose focus on the lesson when they surf the internet.
  5. Have to herd kids to a lab on the 3rd floor.
  6. Have to reserve a lab.
  7. If doing BYOD the kids do not have the needed software installed.
  8. If doing BYOD the kid does not BYOD or does not own a D.
  9. Mac, PC, Chromebooks, iPads, oh my!
  10. School is too paranoid to do BYOD. Johnny might have bad things on his computer and show Mary.
  11. Limited bandwidth.
  12. It takes too long to teach the kids how to use the software when they could be factoring polynomials by hand.
  13. They might discover WorlframAlpha and move from 19th century symbolic manipulation to 21st century problem solving. Can’t have that.
  14. “If you need it, it is not going to work.”
  15. As least twelve other issues that make using computers in the classroom a pain in the ass.

Teaching would be so much easier if all we had were smart, eager to learn students and intelligent, well-to-do, and supportive parents.  Teaching requires we overcome the fact we are a bit lacking in these areas.  Teaching kids to operate in the 21st century also requires we overcome the computers in the classroom issues.  We have no choice.  Not teaching kids to use computers is like not teaching them to write.  There are solutions to every one of the issues I have listed.  Not all the solutions are easy and sometimes a risk is required but getting knowledge to kids is always work and the risk is worth the result.

In my mind overcoming the “computers in the classroom” issues starts with teacher training.  As I have seen it teacher training has not change a whole lot in the last 40 years.  The math methods course I took 40 years ago is minimally different from what is being taught today.  Yes, there are exceptions out there but they are not the norm.  We are using yesterday’s methods to teach tomorrow’s teachers and that is just going to result in the US not keeping up with the Jones’.  As the school IT department I am amazed at how little the student teachers we get know about computers.  And these are people who supposedly grew up in a technology generation.

A second major problem with getting CS in the classroom is textbooks.  The idea that textbooks do not make the course is simply BS.  Most teachers will say “Give me a textbook and I can teach the course.”  Whole states base their curriculums on the textbooks the state buys.  Districts actually check that the teacher is on the proper page at the proper time and has not deviated for the approved curriculum.  Very Orwellian.  Textbook authors, especially in math, seem to be all traditionalist.  Want to find the roots of a polynomial?  Here are several techniques used in the 18th and 19th centuries to do this.  Computer methods are “Extras”.  Why you want to find the roots in the first place is usually in a separate chapter (near the end of the book) or are in problem set “C”.  One out of 30 kids might be able to do problems in set “C” because the rest are still trying to figure out the algorithm to find the roots.  Using computers to solve problems as might occur in a real physics or chemistry lab would require trashing 90% of today’s math textbooks and starting over.  It would also require teaching teachers how to actually teach problem solving as opposed to teaching algorithms.  Teaching algorithms is so much easier than teaching problem solving.  Problem solving requires some kind of higher order thinking and kids are usually not into any order of thinking.  For a teacher to write their own material to “modernize” the math classroom requires time, initiative, and sometimes approval from on high.  Teachers can be drastically short on all of those.

A third problem is the hardware and infrastructure itself.  The schools I am familiar with are all operating on shoe string budgets for technology.  My wife teaches at a public middle school.  About 500 kids.  Just today they were notified of their tech budget for next year.  $1000.  Yes, that is 3 zeros.  For the whole school.  Network infrastructure is usually 10 years out of date.  Schools are often trying to operate 200 computers on an internet pipe intended for a single residential house.  The situation for rural schools can be even worse.  I know several Montana rural schools that are still on dial-up.  Using computers in the classroom is literally not possible.   If schools were businesses they would go out of business for being 20 year out of date.

So is there a solution?  Having the government come down and mandate some form of CS requirement in the high schools is one approach.  In little Montana (population-wise) there would be a sudden need for over 100 CS knowledgeable teachers, or at least teachers will to attempt integrating CS in the classroom.  We are back to teacher training or lack thereof.  The textbook issue could be a bit tricky.  It would require the states the textbook publishers write for to rethink their curriculums.  I really do not think Texas is coming out of the Dark Ages.  School infrastructure issues are only going to be fixed with large sums of money.  As long as school budgets are based off of local taxes (or tuition in my case) we are out of luck there.

So no solution?  On the contrary.  It is up to teachers, the people in the trenches, who can actually see the need for CS in the classrooms and in the school, to drive the needed changes.  Teachers will have to write their own materials or adapt what they have so it is brought into the 21st century.  Ignore the 30 problems in homework part “A” and spend a day on one problem in part “C”.  The parents will also be a driving force in many schools.  The parents that not necessarily work in the tech fields but those that use computers every day and realize the need for a broad CS background to succeed.  We cannot rely on teacher education programs to rewrite 40 years of complacency, or textbook publishers to look beyond making a buck.  Change will have to happen at the grass roots level.  Teachers, parents and, in many cases, the kids themselves will have to make it happen.  It is just going to take a while.

Looking at my post title “Glaciers and CS in the Classroom are related” and taking the comparison a bit farther.  Many glaciers are retreating.  Hopefully I just picked a crappy title.

Year in review and lessons learned

May 6, 2015

It is almost the end of the year for us.  Seniors take finals next week and since most of my students are seniors I am almost done with kids.  It is time to look back and see what worked and what did not.

  1. Programming with Java.  Very mixed results.  The kids did come out of the course being able to write a program in Java, it is just not pretty.  The OOP aspect is missing.  I will not teach this course again until I can get some experience in Java.  We did get a lot of problem solving done and the kids did learn how to dissect solutions found on-line.   I need a course on how to code and teach Java.  There was no course offered in Montana so I convinced the local university to offer an on-line course.  I therefore will be taking the course next fall.  This actually works out just right, I have no kids taking the Java course next year.  As long as Java is an entry language in many colleges I will feel the need to offer a Java course, I just need to get better at it.  Since this is the first time I had taught Java or even programmed in it since the early ‘90s I am not overly disappointed with the course.  Give me time and a lot of reading and it will get better.
  1. Programming I. OK but needs a bit more focus.  “Focus” to me means more interesting to get the kids to focus.  Right now the course is Scratch, Small Basic and a little Visual Basic.  I think next year we might play with TouchDevelop.  It is always good to teach something new so I can understand why the kids get confused when I show them something new.  Prepping for something new gives me something else to do during the summer.  Keeps me off the streets at night.
  2. Programming II. Excellent results.  They know the basics of programming and can figure out anything they do not know.  The three sophomores can actually take a new language and get something going in it pretty quickly.  We hit a lot of things in this semester just so they can see what is out there.  Small Basic, Visual Basic, Arduino, and Corona.  Next year I may get all three in the yearlong dual-credit Python course.  Of course now that I have not taught Python in a year I will need to relearn Python.  Vicious cycle going here.
  3. Honors Stats. It was Stats.  The “Honors” label thinned out the class a bit.  I used to get the kids that needed another year of math and were not math capable.  It slowed the class down quite a bit and at least half the kids were bored silly while the other kids would struggle mightily.  I can now cover more material with a higher level of comprehension in the class.

Some lessons learned.

  1. Try not to teach kids that are smarter than you a language you are not good at. You will work yourself to the nub trying to stay ahead of them.
  2. If you have kids smarter than you do not worry about it. Give them an idea and get out of the way.  Be ready to point them at resources.  Plagiarize the heck out of them.
  3. Teach something new regularly. It keeps you humble.
  4. You do not need to be an expert at a language to teach it. You just need to plan all the extra time it will take to get half-way decent at it.
  5. Do not give big programming projects. Give lots of little ones.  Or give projects with definite steps of development.
  6. Do not forget where you saved your good ideas. You are going to want them again.


As usual it was a great year.  Nobody shot at me or tried to blow me up so of course it was a great year.  (Perspective, it is all perspective.)  On the education side it was still a great year.  As usual I am looking forward to next year.  It looks like I will be teaching more and doing less IT work next year.  Opps, no, it does not work like that.  I will be teaching more and doing the same, if not more, IT work.  Never boring and always something new to learn.  This is by far the best job in the world.