What Chris Granger is explaining is pedantry. It's a difference without a distinction.
I used to teach AP Computer Science. On the first day of class, I'd hand out paper and have the class make paper airplanes. I'd then ask them to write out the instructions they used and would play "human parser" as they turned them in to me, building lopsided airplanes by interpreting their instructions too literally. Sure, modeling will teach them the necessary skills as well as any programming language. I would argue that my students were coding. The difference between coding and algorithms is important, but it's mere semantics as far as this discussion is concerned.
Yes, coding isn't literally "the new literacy," but his point destructs the discussion in the way pedantry usually does in political spheres. In politics, being right often gets the wrong result. Coding is an awesome, interactive way to explore algorithms and how technology works.
The simplest possible distinction: coding is writing code in a programming language[1][2][3], modeling is breaking down systems without regard for computer or programming language and is not specific to any domain.
When we say "coding" the accepted definition has to do with giving instructions in a programming language to a computer. I'm saying that the fundamental skill for people has nothing to do with Python or computers at all.
Well then, by those definitions coding is to programming what typing is to writing a novel. Mostly uninteresting and barely taught at all in my UW CSE courses.
Just to be superclear, my problem isn't Chris's thesis, but that somehow learning programming is "learning how to code", which, given any decent computer science education, is definitely not the case (maybe a few weeks in an intro CS class, that's it).
So with that in mind, I don't get how they are going to shortcut 2 or 3 years of intensive specialized training with this realization, given that we already base our education on this anyways?
He also brings up something like Sherry Turkle's* software bricolage argument, which I also totally agree with. HCI was also founded on these premises (starting as a fork of the PL community focusing on VPLs). Obviously there is not much new under the sun, it's all in the execution, and I hope they succeed with that.
> modeling is breaking down systems without regard for computer or programming language and is not specific to any domain
And what would you teach students to describe their models to others? Some modeling tool or technique? Yet the skill of modeling is not dependent on the particular tool used. Similarly, the skill of programming is not dependent on the specific programming language. Certainly when teaching programming, you're going to teach using a specific programming language—but if the student learns the language, and doesn't understand programming outside of that, then the teacher failed. Just as if you teach modeling, and the student learns the modeling tool used, but not modeling as a concept.
In a technical sense, you're 100% correct. If there's a better way to teach the same concepts without actually programming, that would be really useful. In a pragmatic sense, it's not helpful to the cause.
For engineers, it's easy to get concerned about the trees and miss the forest. If a time-strapped journalist comes across a highly-upvoted blog post on a tech site, the headline won't be , "Engineer suggests strong alternatives to coding in school." It'll be closer to, "Coder suggests kids shouldn't code."
Pedantry is a luxury our profession heaps on the world, often without regard for how our subtle nuance is completely missed.
> If there's a better way to teach the same concepts without actually programming, that would be really useful. In a pragmatic sense, it's not helpful to the cause.
These seem contradictory. We can either teach a narrow swatch of people to "code" or we can search for other ways to impart the important bit: modeling. The entire argument of the essay is that we should be looking for those "really useful" ways.
> If a time-strapped journalist comes across a highly-upvoted blog post on a tech site
I'm not sure focusing on getting a message out to someone who won't read the entire post is a worthwhile pursuit.
Maybe I'm being too wordy. It's not what you say, but the way you say it. If you're suggesting an alternative means, don't sell it upfront as "don't teach coding."
Yes, coding in your very broad sense is necessary to modeling in Granger's sense. The bigger problem is that coding isn't sufficient for modeling. We can and do get lost in the details of programming languages and tools. We design "learn to code" programs that teach typing and data-entry as opposed to abstract thinking.
I'm normally very annoyed by pedantry, but in this case we face a very real risk that the pedantic difference will cause a huge difference in outcomes for a huge number of children. If it turns out that a large number of national governments simultaneously embark on a huge effort to teach kids "coding" without much if any understanding of how to teach them "modeling", then we are setting ourselves up for a generation of failure and frustration with regards to computing. (Think "computer literacy" classes that actually teach typing and maybe a little MS-Office.) Maybe few extra kids will be nudged towards learning computation on their own. But, the overall movement will miss its mark in a tremendously disappointing way compared to it's potential for improving how people learn and work in the near future.
I would agree if you mean learn what an algorithms does but not how to build it. I program everyday and rarely do I have to build an specific algorithm but knowing of them and what they do I need daily.
Just because a guitarist plays covers doesn't mean he wasn't playing guitar. Every time you build a syntactically-correct program, you were making algorithms. No one is suggesting you have to master linked lists to graduate--only that you should understand the very basics of how computers process information.
Just because your college course was called "Algorithms 101" does not mean those are the only algorithms or that your own code is not an algorithm.
I used to teach AP Computer Science. On the first day of class, I'd hand out paper and have the class make paper airplanes. I'd then ask them to write out the instructions they used and would play "human parser" as they turned them in to me, building lopsided airplanes by interpreting their instructions too literally. Sure, modeling will teach them the necessary skills as well as any programming language. I would argue that my students were coding. The difference between coding and algorithms is important, but it's mere semantics as far as this discussion is concerned.
Yes, coding isn't literally "the new literacy," but his point destructs the discussion in the way pedantry usually does in political spheres. In politics, being right often gets the wrong result. Coding is an awesome, interactive way to explore algorithms and how technology works.