Reconsidering Programming in Schools as a Mandatory Course

Earlier this week I heard a piece on the CBC St. John’s morning show regarding the assertion that computer programming is something that should be taught in our public school system. Later on I read much the same article off the CBC NL website. The spokesperson for Code NL asserted that existing public school courses within our province were “a joke” and noted that in giving people the training in computer skills we could move away from our reliance on natural resources.

While, at least on the surface, this sounds reasonable, the reality is much more complex.

First some of the assertions are inaccurate. The spokesperson stated that existing courses were “a joke” and, besides sounding rather condescending to both teachers and students alike, without data to back up this assertion it must be considered to be only a personal opinion. The belief that the courses are only offered “in the Metro” area is also false. They are, for example, available in Gander, Clarenville, Corner Brook, Stephenville, Goose Bay, as well as in a host of smaller communities both locally and through CDLI. There is academic life “beyond the overpass.”

But there are more important things that should be stated in reply to the story.

Chief among these is the fact that schools do not exist for the sole purpose of preparing people for the world of work. While that is certainly ONE of the aims of public education it is important to also realize that the full picture is much broader. Schools exist because we wish to have individuals with the attitudes, skills and knowledge necessary to lead happy, worthwhile lives—at home, at work and within the community at large. Yes, of course we need people who contribute to the economy—after all, bills, both public and private, have to be paid and for that we must all do our part: earn money and pay our taxes. That said, it’s important to remember that as a society what we really need are people who lead good, personally meaningful lives, and who also live out their duties to the community.

Added to this is the reality that we live in a diverse, vibrant society. Young people come to school with varying interests, abilities and values. Sure, we are all citizens of a single community, a single province and, at least at first glance, it makes some degree of sense that an intricate knowledge of those little electronic gadgets that so dominate our lives seems to make some sense. But just think about our already busy schools and consider the value of additional mandatory publically funded courses in:

– Plumbing, because running water and sewer are vital parts of our public infrastructure;

– Carpentry, because, shelter is important, especially in our nasty cold environment;

– Cooking, because we all have to eat on a regular basis;

– Embalming, because we’re all going to need it.

Of course not! That’s silly in the extreme. Schools cannot be expected to do everything and, besides, one of the benefits to living in a large diverse society is that we have the critical mass needed to ensure that levels of expertise exist, to the necessary extent, across any given community.

We don’t all have to be able to do everything.

So, too, with programming: It’s a vital part of our economy and its effects within our personal lives are too broad to even summarize. Still, we don’t all need to be programmers to appreciate the technology or to use it effectively.

There’s something else: it’s naïve to assume that taking a course or two, in school, in programming, is something that will prepare a young person for a career in that field. Programmers do much more than just write code. Sure, that’s a vital part of the enterprise and, besides, it’s fun to write code bits and have computers do clever things. That said, the fact is that only a few of the students who would be forced to take that mandatory course (or courses) would see the value in it and, thus, put in the required effort. The result would likely be a halfhearted thing leading to jaded teachers and students; in sum a waste of time and money.

The reality is that computer science is not something that can be sparked and ignited like your backyard barbecue. It is, rather, a complex skill that takes many years of personal investment of both time and effort. Besides knowing the basics of a code’s “language” the programming professional also understands logic and structure. Most importantly the programmer sees it all within a complex, disciplined problem-solving framework, something that only happens in an environment specifically created to doing just that—namely a computer science academic unit or a well-run enterprise dedicated to that pursuit…

…and specifically NOT a public school that is already over-burdened with unrealistic expectations from its governing agencies and from the public at large.

Still, the sentiment is a valid one, albeit a bit misdirected. Instead of trying to create yet another course, along with its attendant monetary costs (and they will be steep; computer hardware and software, along with the required training is costly; a bottomless black hole into which one pours money) perhaps those interested in promoting the cause of programming should do what others with similar interest have done, and continue to do: forego advocacy for outreach.

Instead of publically shaming governments and schools for not teaching the stuff, work alongside of the various partners: government, districts, the university and the NLTA.

Instead of asking them to do what you feel is important, offer free workshops for students and teachers. Visit schools and participate in professional development activities. Focus in integrating some of the skills and knowledge within the existing educational framework. Add vitality rather than simply grafting on something else to an already overburdened structure.


8 thoughts on “Reconsidering Programming in Schools as a Mandatory Course

  1. A very interesting topic, Maurice!!

    I think any programming class taken in your childhood – or even in your first years at the university – is useless if it does not ignite a spark and make children / students embark on their own projects… immediately at best. If not, that special know-how will become stale, and you have to re-learn everything later anyway. And you will never be happy in some sort of development job, if you except somebody will provide for the perfect formal education for the job. I believe an important skill of a good programmer is curiosity, fun with reverse engineering and debugging, and willingness to self-study – not this passive attitude of my-company-has-to-send-me-to-yet-another-course (It is an interesting pattern I have observed again and again that employees who are on training all the time and consider paid training kind of reward are the ones who are not able to use that knowledge or pick courses that are ‘fun’ but not useful in their current job.).

    In high school we had to purchase a programmable calculator for some calculations, which was a good way to integrate a bit of programming with math classes. I was interested in learning more and worked through some books on Basic on my own. I think this self-guided study that nobody forced upon me in the slightest was more helpful than my (scarce) formal education in programming as a physics student – a Fortran class that required me to work with a Mainframe machine. My first real programming task was automating measurements, controlling stepping motors and reading off sensors as a graduate student – and I was expected to learn that on my own – both a new programming language and how to work with the ‘development environment’, by trying to talk to colleagues whose legacy code I had to re-use (and reverse engineer). It was just considered a skill you needed to become familiar with as you go as a staff scientist – just as learning to clean your high-vacuum pump or doing maintenance on lasers. I found it normal to learn that way.

    … Or writing grant applications and doing project controlling. It is a pet peeve of mine that things as the latter also seem to demand their own classes like ‘project management’ or ‘scientific writing’ although you learn the essential skills on the job on solving a real problem. Burdened with too much theory young graduates are over-theorizing such tasks which I consider one root cause for epidemic bureaucracy disguised as ‘quality management’ and a growing number of administrative personnel in both academica and corporations. I also noticed that students in computer science, when hired to work on real-live corporate projects, tend to over-academi-size … think three-tier logic huge over-blown applications when you just wanted a quick script for experts without bells and whistles.

    One thing that worries me a bit is that young people are not given that sort of ‘apprenticehsip’ on the job anymore – companies expect 25-year old graduates with the equivalent of 10 years of experience (You should acquire that in unpaid summer projects or something?). I had my apprenticehsip accidentally when I worked at the university, paid for my research, but lucky to gain some ’employable skills’. I don’t want to glorify the past too much, but I believe 20 years ago it was easier to slowly grow in your job role, and you were allowed to learn on the job. 30 or 40 years back people with even weirder backgrounds than mine (any degree would do) went into the ‘computer business’ and companies out trust into them as they had proved they had been able to learn whatever academic subject. Today those candidates would be weeded out by the first line of human HR bots who check three-letter acronyms without understanding them.

    1. Too much emphasis is placed on education for work. Learning is for living, and as soon as we forget this the vitality drains from what should be an organic process of on-going growth, exploration and problem solving. It seems a joke that an expert programmer hasn’t recognized this (or, perhaps I missed something from the radio person’s messaging?). You both hit on it exactly–this inverted (perverted) way we’ve begun to look at the purpose of our lives–are we really here to be robots, straight out of the box-ready-to-be-used?

      1. I think I even found the most ‘theoretical’ and seemingly ‘useless’ things I learned formally the most useful for work later. In this context: Rigorous math as a foundation for programming. Figuring out programming tools and learning one specific programming language is then the easy part. What can only be learned through experience is how to finally apply the theoretical background in a pragmatic way (…no over-theorizing…).

        So I think school should give kids the basics in math and perhaps logic (philosophy), and maybe history classes could emphasize history of science and engineering more. I had to learn about the ancient Greeks’ city states and institutions in their early democracy more than once in school – one time would have been sufficient. I had rather learned about Alan Turing or how the Manhattan project moved the center of theoretical physics from Europe to the US after WW II.

      2. I also found that my theory in literature was the most useful of the knowledge I acquired at university. Having a solid foundation on cultural or language structures, and understanding how to use them to analyse and question became transferable skills that I applied to almost everything I’ve done after, especially parenting and working in the education system. However, I’d hesitate advocating the same for everyone. Probably about 80% of learners and workers fall into the categories of neither caring about nor understanding the abstract constructs that rest behind the processes and procedures of their daily lives. Probably another 10% struggle with repetition-based learning and minimal steps in process, and are at risk of falling behind the pack. This leaves 10% who are largely overlooked in the education system, and this type of curiosity that you describe is seldom noticed or responded to. I can understand Maurice’s point in that there isn’t enough time to be flexible for the kind of learners who would have loved to know more, and to have gone more deeply into their studies. Still, even owning that educators have an almost impossible task, I wish that out in the post-education world, our social structures could be more open to those people who are self-starters, who are curious enough to teach themselves, and can transfer skills more fluidly than is implied by credentials and certificate-holding systems. Too often now-a-days employers rely on the education system to custom-build their work force; it’s a short cut that’s going to come back to bite us, I’m afraid.

        I do appreciate you sharing your experiences with mathematics. It is my hope that studying the same will give me a similar foundation for future learning!

    2. When I was an undergraduate I never had the opportunity to take any CompSci – formally – in the early years. I wanted to be a science teacher and, so, had little options. My courses consisted of Physics, Math, Chemistry as well as Education almost exclusively (plus mandatory english as well as French I took out of personal interest–after all I’m Canadian).
      That said, I soon realized the benefit that would come from getting compuers to do the repetitive stuff and, so, I learned Fortran and Basic to help with repeated calculations.
      In 1980 after seeing one of my Physics Profs, and Mentor, Harvey Weir, with a TRS-80 pocket computer I did the same and soon learned the fun that comes from programming. That summer I was working at a Provincial Park and one of my duties was to do all the “books” that is balance all the monies and compile all the usage statistics on a weekly basis (who usworlhat equipment, and who came from where in the world, etc.). During my stints at the checkpoint house, when things weren’t busy, I wrote an application on my TRS80 that automated the tasks. I used to do that work on the sunday evening shify and it used to take most fo the shift–typically from 4PM to 10PM, which left me an hour to do what I wanted with the rest of my shift, which ended at 11. Once I started using my program, though, I was able to get the whole thing done in an hour or so.
      The Park Officer–Sam Butler–was so impressed he decided to leave it at that and I was left basically on my own devices once that shift ended. Lovely!
      Shortly after that I bought a TRS-80 Colou Computer. It had a 16k ROM on board with an early version of MS Basic. It cost around $600 and had 4K of RAM. Yes, 4K. Hee Hee. I modified an old cassette recorder I had (soldered up a connector cable and found the right input level through trial and error) and used it for storage through an RS-232 that was on the CoCo. A little later on, after saving up more $$$ from my Park job, I upgraded the ROM to a 32k version that had an extended basic with graphics commands, and swapped out the RAM chip for a 32k one. That was as far as I could go as the 6809 processor only had 8bit addressing.
      Later still I bought a rea keyboard and replaced the chicklets. A single sided single density floppy came later and finally a printer.
      I was still a university student and was proud to be the only geek in rez with a computer
      See–here’s three of my buddies from back in the day messing around with it. I think that pic is from 1982

      I recall mostly doing BASIC with it. Two projects come to mind
      1-a teachers’ database of test questions I wrote for an education course project. You’d enter a multiple choice question, along with the answers and a tag and it would store them in a database on the floppy disc. It was very limited as you’d expect. The database was VERY crude–a flat file essentially, and the floppy disc only had 170k capacity. Still it was a worthwhile learning project.
      2–a paint program that TRIED very hard to act like the one that shipped with the 1984 version of the Mac which I dearly wanted but couldn’t afford. Instead of a mouse–which I could not afford either at the time–it used an analog joystick for input.
      Later on, in ’85 I moved to a PC clone and never looked back. At that time I also moved to Turbo Pascal and then to C. I stopped at C++ though as I found that the object-oriented style was not “recreational” in nature.
      These days I’m more into educational applications although, you never know, maybe a time will come again when I get to dabble.

  2. James Flynn

    Hi Maurice,

    Thank you for sharing your comments on this topic! It’s great to see engagement on the issue of computer science education.

    I’d love to discuss this in person if you’re interested. My email is james[at]codeNL[dot]org.


    1. Hi there James. Thanks for taking the time to read one of my (typically) long-winded posts 🙂 Most of them are definitely tl:dr and, as such, I generally just do them to get stuff off my chest, not to project ideas to others.
      Not to inflict more of my long-windedness to you but you might enjoy reading the reply I made, just above this, to Elke. That would make a nice lead-in to my most important points: (1) programming is not for everyone (2) in school is can be done below high-school (yes–it can be understood by many grade fours) (3) it has a worthwhile place as part of projects for students in many courses and (4) instead of going with a mandatory course in high school I think we’d be better served by having a course, developed from input from people such as you, that could be offered to the students who have an interest. Maybe at a distance–a thing I have a lot of experience in. In other words, instead of trying to reach everyone, go after the ones who would latch on and love it.
      In case you’re on the MUN campus I’m in the Education Building in ED5006, the Teaching and Learning Commons and I’d love to chat with you.

      1. James Flynn

        Hi Maurice,

        It’s always great to hear different perspectives on this important issue!

        My response is a bit too long to type out online, so I’ll try to stop by your office in the next couple of weeks so we can have more of an in-depth discussion.

        Have a great week!

Comments are Welcome!

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s