Mommy, where does curriculum come from?

July 27, 2017

Many years ago when I started this teaching business I thought the stork (a euphemism for textbook publishers) brought curriculum.  About year two of my teaching career the school was going to update the math curriculum so we ordered preview copies of textbooks and looked to see which fit what we wanted to do closest, then modified what we wanted to do to fit what the textbooks said we should do.  Poof, we had a four year curriculum.  After all, the authors of the textbooks had letters after their names and therefore should know more than we “no letters after our names” teachers.  But the seeds of doubt on the stork story were being planted at this time.  I had some Apple IIes and some TRS-80s and wanted to teach programming.  (At the time I did not know there was such a thing as CS.)  I checked on the stork.  In 1983 the stork did not deliver programming curriculum.  There was no watermelon patch (the internet) to look through so there was me, Seymour Papert’s “Mindstorms” and some programming magazines.  Curriculum appeared.  It was sort of an immaculate conception thing.  One day it was not there; the next day it was.  There was not a lot of thought, research, prep or anything else intellectual involved.  I needed something to do with these computers now, so I dreamed something up the day before school started and started building curriculum on the fly.  Thirty-plus years later I am still building curriculum on the fly.  The stork still has not showed up but luckily the watermelon patch has gotten real productive.  Just to keep the analogy going the watermelon patch can be pretty tricky, some are rotten and you really do not know it until you cut it open and others are not quite ripe.

Many years have gone by and for math curriculum I still rely on the stork, but now I no longer try to fit my curriculum to what the authors with the letters after their names say to do.  Now I know what I want to do (still no letters after my name but a whole lot of water under the bridge) so I see what the stork has to offer and cut-and-paste the heck out of it to make it do what I want it to do.  Cherry picking is just so much easier than growing my own.

For years I have had to cherry pick for my CS and programming curriculum.  The trouble is the cherries are really small and far apart, after all they are in a watermelon patch.  The stork just has not come through.  Since I have all that water under the bridge I have a pretty good idea of what I want to do and where to find resources in the watermelon patch.  The trouble is I have a lot of water under the bridge and therefore can separate the good watermelons from the bad.  Most of the new CS/programming teachers are living in a drought.  They could use a stork.

As much as I hate to say it, the stork has to come through if CS is going to succeed in small schools and rural states.  In Montana most schools are small and rural.  The experience just does not exist to build a decent curriculum or, in most cases, a decent syllabus.  No matter what our opinion of stork designed curriculum, the stork drives curriculum for many teachers, especially new ones, many schools and even a few states.  It has to come through if there is going to be some kind of homogeneous “sort of agreed upon” CS curriculum.  Those guys with the letters after their name do sometimes make sense.

A curriculum is more than a semester syllabus.  It is a multi-year program that builds from the beginning to a penultimate course, be it an AP course in some form, a locally developed course or a dual-credit course.  The stork has the power and time to produce something that big.  Those of us making our curriculum with little cherries are purely in survival mode.  What the stork brings also gets shared nation-wide.  It gets teachers looking at the same load of stork poop.  The teachers may not like what comes down but at least there will be a lot more big cherries to pick from.

Are there any K-12 curriculum writing projects in progress?  Maybe I just am looking in the wrong parts of the watermelon patch.  Many years ago I watched the grandfather of the UCSMP math curriculum be developed and written.  (It was written at the University of Montana.)  It was big news in math teaching circles.  The NCTM Journal promoted the curriculum writing project.  I can find no news on CS curriculum writing projects.  The CSTA has a good set of Standards built but I can find no curriculum development based on those.  The CSTA site has some curriculum outlines but these are not to useful to beginning CS teachers.  Beginning teachers need something with suggested assignments, pedagogical suggestions, and hand holding.  Something that says “Do this, this and this.”  Something that is 100% canned and ready to go.  Something that will work for a couple of years until the teacher learns how to wander the watermelon patch to find the tasty ripe ones.

At this point we need some people with letters after their names to step up and write some good stork poop.  I am not thinking someone should come up with a K-12 curriculum.  I am thinking more like a two or three year curriculum that is not two or three years of programming in language X.  It would include programming but would address other CS topics.  Of course what those “other CS topics” are is part of the Great Debate.

I am so glad I have no letters after my name and besides, as can be seen by my mixing of storks, watermelons, cherries and bridges, my writing style is not fit for public dissemination.

Why teach coding? Because it is all we know.

July 20, 2017

Schools are all about teaching coding.  From talking to teachers and looking at what high schools are offering it looks like there is no intent to teach CS or programming (by my definition programming includes UI design, algorithm development, problem solving techniques, pseudo code, flow charting, code design (away from the computer), and a large number of other tasks that are done away from the computer).  Most of the courses I have seen offered (admittedly a small sample but I feel it is very representative of the high school norm) are syntax courses: Python 101, Java 101, Scratch, or whatever.  Teaching problem solving or computational thinking is purely accidental.  Now why is this?  I see it as a combination of several things.

First, and maybe most common, many people (administrators in particular) think CS and coding are synonomious.  Opps.  They are not.  Coding is typing programs.  CS includes coding as a small subset of topics.  Of course, what topics are part of CS seems to still be up in the air.  When I decide I have to have EdD. after my name I will define high school CS and all the topics it should include and build a curriculum to address those topics.  Until that time I will avoid defining high school CS like it was the Black Plague.

Second on my list is that coding is comparatively easy to teach compared to full blown CS.  There are a lot of resourses out there for teaching coding.  Free textbooks, tutorials, coding academies, dozens of great languages, cool game engines and so on and so on.  A new coding teacher can stay a day or two ahead of the kids in the book/tutorial and come out with a halfway decent coding course.  To teach CS or even programming you actually have to know stuff.  You should probably have actually taken some college level courses in CS.  You should probably be able to at least spell pedagogy, even if you are not sure what it means.

Third, and most intimidating to me, is that CS is not really well defined.  If I want to offer an Algebra II course I can pick up one of a couple dozen textbooks that will give me a great idea of what Algebra II consists of.  That textbook will have the somewhat agreed upon topics, scope and sequence, and many pedagogical suggestions.  CS seems to have absolutely nothing.  Get a group of K – 16 computer teachers in a room and ask them what CS should include.  The middle school teacher (for example) is going to say Office and Photoshop.  High school teacher #1 (for example) is going to say that is not CS.  High school teacher #2 is going to say it needs to be taught so where else but in CS is it going to go?  High school teacher #3 suggests that the English department should teach Word, the Math department should teach Excel and the Publications or Art teacher should teach Photoshop.  (Hell immediately freezes over.)  The college teacher is going to say something the K-12 teachers do not understand because they have never taken a college CS course, they have only attended one-week summer in-services on coding.

The first teaching job I had was as a math teacher.  That first year I followed the book exactly.  I had four years of college math and did not have a clue as to how to help a student learn how to complete the square.  The book did.  A new CS teacher does not have this guide.  They are on their own.  So what are they to do?  Teach something where there are many guides available.  Coding.  Kind of a loop thing we have going here.

 

It is not about coding

July 13, 2017

I was chatting with a teacher friend of mine about the difficulties he was having teaching programming in his technology class. He teaches a section on robotics in his practical technology classes using RobotC and Lego Mindstorms.  He is not a programming teacher; he is a machine shop teacher who has graduated to some very advanced computer controlled manufacturing machines.  He offers an engineering class with the robotics section and his thought was he should be able to teach the kids the syntax of RobotC and they should be able to figure out their robot projects from there.  It is not working out.  The kids simply cannot figure out what to do.  My friend suffers from what I see a lot in inexperienced programming teachers, the idea the programming is all about knowing how to type code.

Many beginning programming teachers have a fixation on coding.  (I differentiate programming and coding.  Coding to me is writing and typing code.  Programming is the complete package: algorithm design, building a user interface, and a whole lot of things that are done before sitting down in front of a keyboard.  I do this just so I can separate the two behaviors.)  I have attended two week long summer camps for teachers, one from Microsoft about Touch Develop, and the other just this summer about a curriculum written at Montana State University on how to teach Python.  Although both camps were for teachers neither dealt with any pedagogy on how to teach coding or programming.  Both stressed syntax and how to read the curriculum they had designed.  It was implied in both camps that although pedagogy was important it was something that would somehow be easier that coding and syntax.

This is where I start waving my hands above my head and using phrases like “Are you out of your frigging mind!?”  To teach programming, or even coding, it would help to actually know how to teach programming and coding.  It is necessary to know to step away from the computer and teach kids how to plan and think.  Things like how to disassemble a problem into manageable parts.  These are not skills the kids are adept at.  These are skills many teachers are not adept at and therefore need to be taught to teachers.  Previously I talked about how surprised I was at the lack of knowledge the new teachers had towards how to teach programming.  Little things like having the kids write the procedure for building a peanut butter and jelly sandwich then having a second kid follow those directions, or when programming with turtle graphics having the kids either walk or use something like a toy car to follow the desired path. To those of us that have been teaching programming since FORTRAN was popular these are common teaching strategies.  To new teachers they seem to be a revelation.

My friend feels he should be able to point the kids at syntax, and from there they should be able to figure it out.  After all, he figured it out that way.  The trouble with that strategy is he is not a 16 year old male whos brain is still not completely wired.  Those thinking skills that require logical steps, organized thinking, and all sorts of brain skills required to program have to be taught.  Considering the students my friend has (he does not get high-level thinkers or computer geeks) what he wants to do in a couple of weeks might be difficult in a couple of months.

My friend’s goal is to teach problem solving.  Teaching coding does not teach all the preliminary work needed to teach or learn problem solving.  Without that preliminary structure, he is just going to frustrate himself and his students.

Going Old School, not quite clay tablets but close

July 5, 2017

I am going to be teaching Math II again next year.  The course is some Algebra, some Geometry and some of whatever comes to mind as I go along.  The students are a good group, just not mathematically oriented.   I do have a major problem when I teach this course, I get bored.  And if I am bored then the kids have to be beyond bored.  If I start progressing through the book page by page and chapter by chapter then we all go into a vegetative state.  High school math textbooks are not designed to teach math, they are designed to force math down the throats of unwilling students and to give the teacher a lazy way of doing it.  OK, a bit of an exaggeration but textbooks put me to sleep so they have to kill the kids.  I need to start digging up some interesting stuff that will still get some real math taught.  I think I am going to approach this two ways, no-tech and high-tech (sort of).

No-tech.  Most of my math students have zip for estimating skills, no ability to do simple math in their head, think Satan brought fractions to Man and that using the WAG method to start solving a math problem is a cardinal sin.  (Catholic school, we can think things like that.)  (What is the WAG method you may ask?  I was taught this method in one of my calculus courses many years ago.  It has held up to the advancement of technology well.  It is still one of my favorite problem solving strategies.  So what is it?  Well you start with a wild assed guess (WAG) and go from there.  Clever huh?  What do you want?  I have spent the last two days troubleshooting laptops and reimaging computers so I am just a bit giddy and more than a bit brain fried.)  So in an effort to address some of these student handicaps (I think they are handicaps) I am going old school.  No calculators.  There will be tears and protests.  I expect picketing.  But that is OK, we are not going completely “device” free.  I collect slide rules.  Yup, we are going really old school.  I am going to reintroduce the slide rule to a math class in 2017.  Those of you that have used a slide rule remember the lesson when using a slide rule (other than knowing how to work the thing), you have to have an idea what the answer should look like.  If multiplying 23 X 562 you have to know the answer is somewhere in the 10,000 to 12,000 range.  It is all about place value and being able to do some simple math in your head.  Slide rules also lead into addition as multiplication.  (Adding exponents.)  It should be interesting.

High-tech (sort of).  I want to do a lot more with Excel.  Build some number crunching spreadsheets.   I was considering doing some turtle geometry but that may be a bit to tech intensive.  Teaching them a language and some geometry might be more than this group can handle.  I will have to think about this more.  Using tech with student often brings in a level of complication that these kids have problems with.  The problem is more often than not a focus issue.  Cruising the internet is a lot more interesting than doing a geometry problem on the computer.  These are not the kids that get interested in what math can do for them and why it is interesting.  These are the kids that find school an inconvenience to their social life.  One thing I am going to de-tech is phones.  Last time I taught this course I allowed the use of phones as a calculator.  Not a good idea.  At this age the kids are simply not mature enough to not get distracted by cat videos.

I have to be somewhat careful what I do with these kids.  The course is pretty algebra intensive in order to get them ready for a pre-calculus course.  The teacher they will get for Math 3 and pre-calc is big into old school hand algebra methods.  Me, I am more into WolframAlpha and just solving problems.  If I point out to the kids that factoring polynomials by hand can be done on only on a special set of polynomials so do not bother learning how to factor polynomials their Math 3 teacher would not be happy with me.  So I cannot abandon this ancient math.  Standardized tests seem to like this stuff.  I rather like to do this stuff too but then I think Project Euler is a fun website.  And I collect slide rules.

A week of in-service: Another Python course

June 20, 2017

I just spent a week in an in-service/seminar with twenty teachers on a high school Python curriculum written at Montana State University.  The curriculum is “The Joy and Beauty of Computing” (JBC) and I believe is adapted from a curriculum developed at Berkeley.  It is used at MSU as their introductory programming course.  I had perused the curriculum several years ago and was not impressed enough to change my present curriculum.  It was fairly standard and did not offer me enough to deviate from my core of “How to Think Like a Computer Scientist: Learning with Python 3 Documentation; 3rd Edition” by Wentworth, et al.  The University of Montana wrote a grant to train teachers how to use the JBC curriculum so I jumped in.  Attending these events is very revealing, both about the curriculum and the state of teaching programming in Montana.  I really went to the in-service to meet the other teachers and to get a network started.

I had the opportunity to meet programming and prospective programming teachers from all over Montana.  A couple had come from as far as Wolf Point, an eight-hour drive.  What a broad spectrum.  Everything from a former professional programmer who is now a teacher to an English teacher who had been directed to offer a programming course next year and has never programmed in her life.  There were several business teachers with about the same experience and directive.  (The English teacher sat right next to me.  Poor lady.  Not a clue what she was getting into.  Not a computational thinker.)  Only a couple of us had actually done any CS/programming teaching.     It was a bit interesting talking to the teachers that had been give the directive to offer a programming course at their school.  It was a “come up with something” type of directive.  Not a lot of research or experience guidance behind the directive. As could be expected for a weeklong summer event like this it was an enthusiastic and involve bunch.

Now to the JBC curriculum.  It still does not excite me.  It is missing about 90% of what the programming curriculum needs for beginning programming teachers.  It is almost exclusively a syntax course.  There is very little on how to program prior to hitting keys on the keyboard.  We were doing a semester in a week so admittedly the preliminary work the teacher would do was being greatly compressed but most of the teachers attending did not even understand there was preliminary work to do.  All the pre-planning required to write a program has been ignored in an attempt to get the kids coding.  In the exercises we did I found myself doing exactly what I teach my students not to do, planning at the keyboard and filling those gaps with trial and error.  Most of the teachers there assumed that was the normal programming procedure.  The teacher with professional experience and I had to do a lot of demonstrating.  Little things like have kids walk through the turtle moves were “great ideas”, where she and I considered them required techniques.

As a core the JBC curriculum has what is needed, some syntax and some exercises, but it would involve a lot of work to get it ready for use by teachers who want to really teach programming and computational thinking.

I have said it before and I will say it again, teaching syntax is the easy part of teaching programming.  Teaching the computational thinking skills needed to make that syntax easy is the really hard part.

 

Flint’s perfect strategy on how to teach programming

June 6, 2017

Alfred Thompson had this link to a set of nice simple Python projects.  The projects are great ideas.  It is the implementation that I think is extremely poor.  “Instruct the students to input the following code:”.   Is there a worse line to use when teaching anything?  This is the universal approach to programming tutorials.  I admit I use a lot of online tutorials.  And I admit I am sometimes very lazy and tell the kids to just type in the code.  I also admit that this approach is almost worthless for any long-term retention of code or of understanding how to program.  (Hopefully there is a mountain of research to back that up but I am happy with my seat of the pants feel that 30 years of teaching programming has given me.)  Following tutorials is a great way to learn how to follow tutorials, and maybe get a little programming syntax on the way.  But for actually learning how to program, how to understand a programming language and how to learn to build a project or do a task from scratch I claim they are basically worthless.  Proving that might take a dissertation, or maybe just common sense.

This leads me to my present project.  I am working on Flint’s Perfect Strategy For Teaching Programming.  I figure if I stretch this out long enough I might get an EdD dissertation started just in case I develop a severe mental instability and decide to start an EdD.

Flint’s perfect strategy for teaching programming breaks down into some fundamental concepts.  Here are a few.  The rest are still in the warm and fuzzy stage.

  1. Programming is designing and defining before any code is typed.
  2. Programming is algorithm development, not trial and error, hit or miss or just luck.
  3. Programming class is a thinking class, not a typing class.
  4. Programming is knowing what you are going to do before you try to do it.
  5. Programming is not learning syntax, but you do have to learn syntax to program.
  6. Programming is 90% planning, 10% coding. But that coding seems to take 90% of your time.
  7. Programming is not language specific or even CS specific. (Big discussion here of transferable skills.)
  8. I figure there are fifty or sixty more. I will work on those.

Here is a rough example of Flint’s perfect strategy for teaching programming.

Have the kids close their laptops or put them in their backpacks.  If you are in a lab turn off the monitors or the computer.  If you do not do this they will not listen or think.  They want to hammer keys and not pay attention to your wisdom.  This is a simple program I just did with my freshmen to give them a very brief intro to Python.  This group of freshman had all programmed in some language before so a large amount of intro stuff was not needed.  The program assignment was: given the number of sides as an input, draw a regular polygon using turtle graphics.  We started with the concept of a biological turtle that draws on a piece of paper.  What skills do we need to teach this turtle?  We then looked at polygons, angles and side lengths.  Once they had the idea of a polygon completely understood, we looked at what it takes to draw something with a turtle.  Things like a turtle, a piece of paper, a pen, a distance and an angle.  We then sketch out the instructions that this biological turtle would need to know to draw the polygon.  Right turn, left turn, forward and so on.  Once all the design stuff is done we start discussing what Python might need to do this.  What a library is all about.  That a graphics window is different from a text window or a Windows window.  We did a rough flow chart, some pseudo-code and how do you think a programming language might say these things. We still have not touched a keyboard.  We probably spent an hour before touching the keyboard even on this simple program.

Once they have done a couple of turtle projects the pre-keyboard work will shift more to the task definition and less on the needs of Python.

For this first program I actually built the program on the board for them, correct syntax and all.  I wanted to discuss variables types and dot notation.

We also discussed different types of loops.  It you want to loop through something 5 times, a loop that can count is the way to go.  Do not know how many times you are looping then we need a different type of loop.  We discuss these things non-syntactically.  This group of students was already familiar with For loops so we only had to look at the Python syntax for a For loop.

So they get the polygon program typed in.  They are happy.  They got to type.  I then up the ante.  Here is an addition to the task.   All the sides have to be random colors.  At this stage a tutorial would say “type this”.  We sit down without the computer again and talk about what we will need.  Random numbers, pen colors, how many colors do we want to deal with (2553?) or do we want just some favorites.  We talk about rgb colors and why 255.  We are now into decimal to binary conversions.  Some will know why 255 and how to do this but most will have forgotten.  Once we have talked about what we want to do I let them open their computers and have at it.  This time I give them no code.  They have the internet and they have Google.  Let me see what you can find.  I have given up worrying that they will copy some snippet from stackoverflow or the like and be done without understanding what the snippet does.  It is extremely rare that anything from stackoverflow is direct copy, paste and work.  It takes a while but they do eventually get the concept that the stackoverflow type websites give ideas on how to solve a coding problem.  They rarely give a solution.  Having small classes where I can actually see what they are doing and how they are getting there makes it fairly easy to monitor the cut-and-paste issue.

This example is very basic.  The focus is on design before code.  Programming projects like those mentioned are excellent for this teaching strategy.  I do the Shakespeare Insults project.  There are so many decisions to make before a computer is even looked at in this project that it makes an excellent project to build.    My data file is different from the one in the example.  My file consists of about 30 lines, each with three words separated by commas.  The program randomly selects two words and plugs them into a sentence involving someone’s mother and sister.  One early decision the kids have to make is are the words from two different random lines or just two random words from one random three word line.  How will the decision affect the program flow?  Excellent time for a flow chart.  The amount of pre-keyboard work with this program can be extensive.  I have seen this program coded in three very different ways so it can be a lot of fun.

There is a drawback to Flint’s perfect strategy for teaching programming.  It takes time.  Lots of time.  This polygon program can be described and typed in minutes.  We took over an hour.  Some of that extra time was because this is their first encounter with Python but all of these freshmen had done some programming so they understood most of the programming concepts.  Another drawback to Flint’s perfect strategy for teaching programming is the kids are very resistant to the approach.  They do not want to plan, they what to do trial and error at the keyboard.  They have not learned an important axiom of programming: “three hours of trial and error coding will save fifteen minutes of planning”.  (I wish I knew who came up with that.  They deserve an award.)  The kids want to hammer keys for an hour then complain how it does not work.  Run-time errors forever.

Another issue with Flint’s perfect strategy for teaching programming is that it is a lot of work for the teacher.  It does not lend itself to large coding projects so it is necessary to have a bunch of small projects that will target the lesson of the day.  The large projects often take more planning than the average kid will tolerate.  If the project can be broken down into smaller modules then the planning stage is manageable.  For an intro course I prefer the small targeted projects.  There is also the grading.  Instead of just grading a program as the end product, it is now necessary to grade programming plans, pseudo-code, flow charts, maybe all written in hand.  Ugh.  The kids’ handwriting is worse than mine.

Flint’s perfect strategy for teaching programming is not original.  I imagine many programming teachers use the same principle.  (A good example is Mike Zamansky’s blog on A* is Born.  Notice the focus on “we talk about” and “leads to a discussion” and the like.  Understanding is the principle.)   The problem is that many programming teachers do not understand what a good programming course should consist of.  Too many programming teachers think the purpose of a programming class is to have the students memorize syntax.  Memorizing syntax should never be the focus of a programming course.  I need to clarify to myself exactly (or at least as exactly as I ever get) what should be the focus of a programming course, write it all down and make a small fortune by publishing it.  By writing down random ideas I might actually come up with something that will make sense, at least to me.  The rest of you are on your own for that perfect strategy for teaching programming, at least until I get that EdD and publish.

Of course this whole conversation can lead back to a discussion of the lack of pre-service and in-service pedagogical training for CS and programming teachers.  Kind of a weird real life recursive loop.

 

 

Microsoft: A love/hate relationship

June 1, 2017

We are a Microsoft Windows 10 school.  We have a math lab of Macs because of the calculus software the teacher uses, and the elementary school has a scad of Chromebooks for the little kids, but we are primarily Windows 10.  This means I have developed a strong love/hate relationship with Windows.  Here is my latest hate.  We bought 30 Lenovo Windows 10 Pro laptops.  Nice little things perfect for the classroom.  We also bought 30 Lenovo Chromebooks for the little kids.  It takes me about 5 minutes to get a Chromebook from me to the teacher ready to use (not counting the time to carry it to the classroom).  Four and a half minutes to get it out of the box and thirty seconds to make sure it turns on.  The Windows 10 laptops are more like 30 minutes per device.  The problem is all the bloatware and crapware that Microsoft puts on their machines.  Here is an example.  The school owns Office 2016 so I want to install it on the laptops.  No big deal.  I am installing wanted software so I do not count this as wasted time.  The issue is that the Office 365 that is pre-installed will not delete completely.  The splash page wanting you to buy still pops up after the uninstall.  The solution?  Edit the registry in two places.  On 30 laptops.  OMG.  Then there is all the other “crap” I do not want on the laptop; games, Xbox, Minecraft and so on.  I tried building an image of a “clean” laptop but my free imaging software will not work on these.  Too much is locked down.

The kids are starting to use Google Docs more and more.  Other schools in Montana are starting to bail on Microsoft for pretty much the same reason, just a pain to setup and manage.  Chromebooks have large limitations, especially for programming, so they can never take over completely in a school but I am looking harder and harder at Chromebooks.

Python editors: Simple wins

May 25, 2017

I am working on next year’s courses already.  Programming is an elective so I have to sell the course to the students.  I want something ready now to convince them to sign up.  I have six freshmen and one sophomore coming up but I want some upper classmen to jump in.  I need to find some Juniors and some more Sophomores that are looking at STEM for college and would therefore be good candidates for a Python course.  I teach a dual-credit Python course and the college credit is only available to Juniors and Seniors.  I do not offer Python to Freshmen and Sophomores for that reason.  Many of these Juniors and Seniors will be first time programmers so I need things to initially go smoothly.  Things like having the installation instructions for Python and the IDE of choice laid out.  The Python IDE or editor of choice also has to be simple enough to be easy to use for a beginner but not so limited that it restricts what we want to do.  My programming courses are BYOD so whatever editor I use has to work on whatever is carried through the door.  Even a Mac.  So the digging begins.

Previously I used PyScripter with Python 3.4.  Python is now 3.6 (or 2.7 depending on the version you want to go with) and PyScripter has not been updated to work with newer versions, and it looks like it is not going to be updated.  (This is a major issue with free stuff.  Updates can be few and far between.)  So I was off to Googleland looking for something new. It has to be simple to use, simple to install and/or set up and free.  Right now I am just Googling and trying editors.  How many are there?  Lots and lots (just Google “Python editor”) but that simple to setup criterion can be a killer.  It killed Eclipse right off the bat.  Sublime Text 3 went down in flames. Visual Studio was not bad if you found the right website that gave the correct instructions.  I did and it worked but it sort of misses the simple to use thing.  File management with VS is a bit of a pain.  Visual Studio Code (a simplified version of VS) does not seem to do anything when I run my simple little draw a polygon test program.  It fails the simple to use test.  I tinkered with IDLE for a while.  It is nice that it is the native Python editor but I am lazy and like the auto complete feature other editors have built in.  Supposedly IDLE has autocomplete (I have the feature turned on) but it seems to have a minor issue, it does not work.  Things that do not work are bad.  I try not to use bad things in my classes.  It seems to frustrate the students.  PyCharm.  Easy to install, has a little green arrow to run the code, console is there by default, not a large number of never to be looked at options, autocomplete works, simple as a brick.  Folks, I think we have a winner.  Of course PyCharm sort of cheats.  It was written to be an editor for Python exclusively.  The other editors I looked at (other than IDLE) are multi-language so of course there are going to be setup issues.  I want something that is initially brick simple.  A professional programmer is maybe going to want more features than PyCharm offers but we are not professional programmers.  Brick simple wins.

When teaching beginners the more distractions, frustrations or simple confusion the uglier it can get.  Frustrate new programmers early and they are pretty much done for the semester.  If their first experience is a messy setup with an editor then there is going to be trouble.

The same can be said about beginning programming teachers.  I help teachers that have no programming background.  They have been asked to get a CS/programming curriculum started in their school.  That first language/IDE/editor has to be brick simple.  Eventually that beginning teacher has to leave Scratch and Small Basic to step up to a college level language.  Python with a good simple editor is an obvious step.

Daughter Graduates: Good and Bad

May 15, 2017

My daughter graduated from the University of Montana Saturday with a BA in Psychology.  Yesterday she was only five years old.  What happened?  She is not really sure where she is going from here but it really does not bother me.  She has a couple of retail jobs and wants to take some time to think.  She knows to go anywhere in psychology she has to get the doctorate.  She is looking at forensic psychology which means leaving Missoula.  Now that does bother me.  She was only five yesterday.

Teaching Programming with BYOD

May 10, 2017

Bring Your Own Device.  It is a solution and it is a problem.  All my programming classes are BYOD.  I have loaner laptops for those that cannot afford a laptop but that really is not much different from BYOD.

Why BYOD?  Many reasons.  The school has two computer labs.  One is in a classroom so it is out.  The main school lab is pretty sterile, computers in rows elbow to elbow.  Just not what I would consider an atmosphere for thought and exploration.  It is also used regularly so putting a programming class in there is going to be a pain for other teachers.  I used to have computers lining the walls of the room in which I teach.  I would install all the software and have things pretty cookbook.  But then I had problems with privileges when the kids wanted a sprite, needed to save locally, saving on Google Drive and half a dozen other issues because the kids were not administrators.  I wanted the kids to learn how to download and install the software they were using.  Getting Python up and running with an editor is not always a trivial exercise.  The kids should know how to troubleshoot an install.  BYOD allows those that want to work at home to do so.  Admittedly I do not get a large number of those students but there are enough to justify the BYOD hassle.  Perhaps the biggest reason for BYOD is I want the kids to know about their device.  The kids can run apps, download from Steam and get Netflix to work but changing resolution, hooking up a second monitor in extended display and installing a Google Drive folder are not tasks the techno generation seem familiar with.  So BYOD it is.

A big advantage of BYOD is the kids that own their own laptop (most of them) have a better device than anything the school owns.  There is just something about working on an i7 with 16 GB of RAM and a dedicated video processor that make a Python or Unity assignment run better than on one of the ten year old school loaner laptops or lab towers.  The only way I get to see really cool hardware is when a kids brings it in.  BYOD eliminates any administrator install issues (unless the computer has something like Network Nanny on it.  I had a long discussion with a parent over that one.)

The big disadvantage of BYOD is you are now dealing with five different brands, weird malware, fourteen viruses and a partridge in a pear tree.  I actually like dealing with all these issues.  At the beginning of the semester the kids learn all sorts of software and hardware issues.  Cool.  Another somewhat interesting disadvantage is the kids that are working on 11-inch computers.  My eyes do not see that small any more.  A Unity project on an 11-inch screen is just silly.  Then there is the kid with the Mac.  Kid, you are on your own.  If you want to borrow a PC I have some.  Even worse is the kid with the Chromebook.  It is always an interesting conversation with the parents about how that new, cheap Chromebook is not going to do the trick for anything we are going to do in my programming classes.  A sad, sad moment.

Some lessons learned:

  1. Teach file management. The kids keep forgetting where they save things or they scatter files everywhere.
  2. Stress saving to Google Drive or the like. Backpacks are rough on computers and I have had a couple kids kill their computers by not being careful.  Bad, very bad.
  3. They need a mouse. Trying to do something like Unity without a mouse is not practical.
  4. Bring the power cord every day.
  5. All sorts of things are on that BYOD laptop so watch them like a hawk.
  6. Expect weird issues so be flexible.
  7. Have some kind of central file storage area for assignments, YouTube videos and what not the kids can have access to. Something like Google Classroom or a Google shared folder.
  8. Have enough power outlets in the room. My school was built in 1922.  Electricity was a fad at the time.  The classrooms have two outlets.  I had to have maintenance run conduit and outlets around the room.  Laptops do not pull a lot of amperage so there is no problem with the breaker.
  9. The internet content filter is going to cause a problem. Be on a first name basis with the person that controls it.  In my case it is me.
  10. Read #6 again. Several times.

After several years of BYOD programming I would never do it any other way.  Yes, it can be a pain at times but the advantages for the student far outweigh that pain.