I get that the term "coding" to a jaded programmer or engineer is just translating, but as part of his post he talks about teaching problem solving. Programming languages, or rather the knowledge of how to "speak" in a programming language (coding) provides a medium to express a problem's solution. So maybe I'm not understanding why we shouldn't teach kids to code.
Exactly. Yes, coding by itself is useless, but arithmetic by itself is useless by the same token. Both are tools that give you the ability you solve many useful problems.
I think this quote really shows exactly the point you're making.
"I bet there is many an undergrad CS student who doesn’t really understand the algorithm they are trying to write a program for. They read the requirements once, and then begin to code. Code it seems is the only tool at their disposal."
Also, if they don't understand the algorithm they're trying to write a program for, they missed the point of the lesson. This is an education problem, the student probably thinks they're not there to do anything other than get their degree in the easiest way possible, so they find an existing algorithm and copy/paste it. It's the whole reason why in math focused classes, you're instructed to show your work and that it will be part of your score.
In response to the article writer's point, how and why would you teach someone an algorithm without the modern tools to implement it?
Fibonacci doesn't look like an interesting problem for children. Also, the idea of recursion and/or sequence is complicated. [1]
A good topic for children is a turtle like in Logo. Make some nice drawings. Make smalls programs so you can repeat the drawings. Parameterize the function, so you can change the size of the drawings. Perhaps add some other tweaks, like customizable colors, or optional parts. Bonus points for making the turtle return to the original position and direction. Extra bonus points for understanding why that is useful.
Another good topic is solving recreational math problems. Some problems involve equations with small integer numbers and if they can nest a few `for`s and `if`s then they can bruteforce the solution. Bonus point for discussing the bounds, to ensure that all the options are considered. Extra bonus point for an informal idea of the complexity of the program, and guessing if it will finish instantly, after a wile, or never.
[1] I'd teach Fibonacci for kids if I were teaching them Excel, because you can see the whole sequence. Excel is a very powerful tool and is a gateway to programing. Remember to tech you kids Excel. (Not VBA, just plain cells, lot's of cells.)
I've learned Logo when I was 8 (around 1993), the school also invited me to a robotics class that also used Logo, so I was able to not only draw interesting stuff with that little turtle but also learn how to use external interfaces to control stepper motors, led lights, etc. I think this was all very fun and resembled playing with Lego, allowing me to occasionally show some cool tech stuff to my friends.
Being visual and interactive is key, I believe, to engage with kids on what can be considered most of the times an abstract endeavour.
> I'd teach Fibonacci for kids if I were teaching them Excel, because you can see the whole sequence. Excel is a very powerful tool and is a gateway to programing.
Not a kid myself, but I've never thought about implementing the fibonacci sequence in Excel/Libreoffice, so I just did it, and yeah, it's very easy to do it..
They talk al ot about "coding" at primary school, but what they mean is making the turtle follow simple instructions - inputed via tablet. These lessons are teaching children how to use technology, not how to be coders, makers or engineers. We will end up with a lot of kids pushing buttons, not with a lot of engineers. IMHO teach kids to use a keyboard first and get them out of these walled garden button pressing labyrinths.
I stared with coding in primary school. I was 6! (no thats not 6 factorial)
We did stuff in a Logo variant.
It was life-changing and I remember enjoying it so much.
edit:
We had a teacher and special "after school class".
Personally, I don't know how anyone could learn algebra without first understanding the concept of a variable. In programming, one generally thinks of variables like "boxes" that you can put values in (with, eg, `i = int(input("Enter a number: "))`) and take values out of (by referring to `i` later in the program). Algebra, then, expands on this by introducing more advanced ideas like "solving for a variable".
Of course, I'm probably biased because I learned programming before algebra myself.
I have not studied the subject beyond remembering my own childhood and seeing my children learn, but I think most kids are able to grasp the concept of a variable much earlier than they learn Algebra or coding. Variables grow naturally out of categorization, which is something very young children excel at. Once you learn the difference between "a ball" and "the ball" you're halfway there.
Imperative language variables aren't the same concept as algebra variable anyway. I don't see how one helps with the other.
In fact, it's much better to state this out loud to people learning to program, because statements like 'x = x + 1' added to the name coincidence make things very confusing.
Kids are naturally inquisitive and full of imagination. A pillow fort is just hacking the furniture and bedding. When I was young, we turned every street into a football court by marking some goalposts with our jackets. We didn't even need a ball, an empty soda can was enough sometimes.
Trying to force kids to keep inside an adult's narrow track does a lot of damage. They need guidance much more than they need fences.
>Because the problems they solve can’t be that challenging, largely because the students won’t have the requisite problem solving skills. Now we hit the actual problem – coding is useless without the ability to solve problems, and I don’t see anyone advocating for teaching problem solving skills (in any form).
The author seems to miss the point that "teaching coding" is "teaching problem solving" by proxy. Problem solving is not taught on its own, in a vacuum. There needs to be an adequate environment where feedback is quick, problems are manageable, and information is available. Appropriate coding exercises provide that environment. It's an excellent way to teach problem solving.
Indeed. Problems are a great motivator. Circa 1990 I had to solve math problems to get the characters to respond in the school's edutainment games. A few years later I had to learn DOS and batch files to play computer games from ID and Origin Systems.
Finding problems and interactive experiences that'll motivate students is the hardest part IMO. Perhaps that's why some resort to Minecraft.
If you're saying that programming is a sufficiently rich world of problem solving, then so too is math, but I've found it very motivationally important with kids to provide interesting applications to the knowledge which is covered by some curriculum.
One can metaphorically sell to an adult that polynomials deserve study on their own and is internally applied all over mathematics, but IMO that is a very adult motivation and very few children buy that. What they do buy is that adults want it done and school says they have to. Children can also buy that math is important to STEM careers. What they might not buy is that math is sufficiently motivating by itself.
I think there's a reason why coding programs in general have gravitated towards the narrative of "programming is cool because" you can (1) make apps, (2) make games, or (3) make websites.
On the math side, the one thing that is supposed to make math real is story problems. And story problems seem to cause a lot of grief for a number of students (I know that virtually no one in my class liked or could do well on story problems). However without them I don't think I would have advanced as much in math studies, because they did have that effect on me of making the raw numbers actually mean something.
> And story problems seem to cause a lot of grief for a number of students
Story problems are very badly taught in the U.S. schooling system. Other educational approaches use them more sensibly as gradual motivation for complex reasoning about arithmetic, and eventually algebra.
The study of polynomials is motivating because it can solve an interesting class of practical problems in great generality. IME, most kids are sufficiently smart to grok that by the time the subject is introduced. This generalizes to the study of "abstract" math as a whole. Polynomials are a nice, "toy" example of mathematical abstraction, where the result is still, in some ways, concrete enough to be immediately accessible. It's sensible to expect that the same may be true of programming.
Bit of a tangent but the way polynomials are often introduced makes it difficult for kids to see why they matter so much.
Polymials are usually taught as being the functions of the form f(x) = a_0 + a_1x + a_2x^2... a_nx^n, which can seem arbitrary. Why functions of that particular form? It becomes even less obvious when you talk about polynomials in multiple variables.
But another way of putting it is that polynomials are the functions you can form from variables and constants using only the operations of addition and multiplication (a finite number of applications of them, that is, and including multiplication-by-self, i.e. exponentiation). Any such function can be expressed in the canonical polynomial form.
If you put that way it's obvious how general and interesting polynomials are, and how the concept applies to multiple unknowns, not just one.
I would argue that programming is one such application which makes math interesting. I'm not sure they are really seperate worlds of problem solving at all.
The problem with relying on math for logic training, is that many (perhaps even most) students find mathematical concepts far too abstract and intangible to apply those lessons to other situations.
Coding, on the other hand, is basically just English and is easy to conceptualize: if this happens, then do this. It's not necessary to know the abstract concepts of the low level environment to be able to apply the high level logic patterns to real life situations. I personally think this makes coding far more effective at leveling up problem solving skills.
I've almost exclusively experienced and heard of coding being taught as plain English concepts (even in countries where English is not the primary language), so it's not exactly some rare commentary made only by coding elitists.
The reality is that programming languages have historically been designed as left-to-right sequences of nouns, verbs and adjectives, in a way that mimics the sentence organization of English. Certain words may be replaced with special characters, but it still reads the same.
Quite an absurd misinterpretation of what I said. The only point I made was that the mimicry of spoken language is what gives context to allow us to learn problem solving more easily. Nobody is trying to go into the intricacies of how programming languages are developed, because that's not the point of the conversation.
But thank you for acting like a classic HN elitist who thinks that pedantry for the sake of pedantry is more important than anything else in the world.
> Coding, on the other hand, is basically just English
This is not a very meaningful or accurate statement. Perhaps one can better rephrase it as "coding is just logical reasoning", and it might turn out that exposing kids to coding does a better job of teaching logical reasoning than, e.g. the existing math curriculum.
As I mentioned in another comment, programming languages have historically been designed as left-to-right sequences of nouns, verbs and adjectives, in a way that mimics the sentence organization of English. Coding is very much a practice of thinking within the structures of the English language, and its this mimicry of a spoken language which provides the context to apply those logic lessons to real life.
Otherwise, it's just more math, which we've already established does not (on its own) provide a solid enough foundation to develop problem solving skills for most people.
That's the difference, and why it's both a meaningful and accurate statement.
Exactly. The author misses the point fiddling with a limited meaning of 'coding', while teaching kids to code obviously involves everything including motivation, play, solving the problem, breaking up a problem into manageable parts and coding.
By the way, our kids follow Python 101 in Minecraft Educational Edition, and have some fun with it.
> Problem solving is not taught on its own, in a vacuum.
Interestingly the idea that you can teach "problem solving" as a unique skill is, last I checked, not supported by the education literature. There is a great deal of evidence that you can teach concrete skills that may be widely applicable, such as how to form or identify a syllogism, but there's no evidence this translates into some greater "problem solving ability" except insofar as as the skills you are taught make more problems tractable.
If the problem is that kids are stupid and inexperienced and don't know anything yet, then you can replace "coding" with almost any activity and all the rest of it still fits perfectly.
Kids already have fun, and it's way better than anything we can do in the classroom.
Different kids will be motivated to learn for different reasons. Some will just want to do it, some need it attached to grades, others need a real life reason or peer encouragement. In the end, with almost any subject, you won't be able to pull all kids in. Some just won't like it, while others can't get enough.
> Coding is not fun. Unlike writing, which can be a very creative endeavour, coding is not. Coding formulates algorithms into logical instructions for a machine.
This statement is completely at odds with how I view _coding_. I cannot think of a more powerful or free-form method of creative expression.
I’m on the same page with you. Only recently I realized how coding is a lot more like writing and coders are just as different in their skills as writers. Replacing good coder is more comparable to replacing a good screen writer and less comparable to replacing a construction worker.
The author redefined coding to something very narrow, and then pretended that when people speak of "teaching kids coding", they also meant that narrow definition (which is clearly not true), all to claim that it’s a waste of time.
> Some people think everyone should learn to code. I think not
Knowing what I know as a software developer by trade. I would want my kids to know how to code. Even if that doesn't end up being their career I'd like them to have this ability. I think it would make their lives easier and allow them to achieve more. So given my thoughts on what I would want for my own children, I feel like it would be dishonest to say that other children should avoid learning to code.
> So given my thoughts on what I would want for my own children, I feel like it would be dishonest to say that other children should avoid learning to code.
That's not dishonest, it's just having a mind focused on your children. That does not mean you have a moral obligation to support a policy which generalizes what works with your kids to everyone else.
When I learned programming in school, we used QBasic. I still don't think it has been topped for that purpose.
It was relatively simple and forgiving. It had an all-in-one IDE. It had comprehensive built-in help documentation. Most importantly, it had graphics and sound capabilities out-of-the-box.
By the end of one semester, we could build a multiscreen, singing Christmas card. A very tangible project.
We should teach kids coding for the same reason we teach them woodworking or repairing stuff. It's a basic craft that may help you later in life. Of course you still have to apply the craft in the right situations. But just because you're not going to build a house right now, there's still sense in teaching you how do hold a hammer.
I think the only benefit of teaching kids to program a computer (i hate the term code as a synonym) is that it teaches problem solving - assuming it's being taught well of course
In my view, how math & science are taught is at odds with how people actually do and use those things outside of school. It's all pencil and paper arithmetic and symbol manipulation. Even mathematicians don't do math exclusively that way. It's also something that most kids end up hating.
Also, "coding" and "programming" by this point are intimidating to people, especially when we raise the stakes by tying them to high paying career. I might call it "computation" which is just using the computer to solve problems. You can start by just playing with numbers.
I'm about killing two birds with one stone: Making math and science more realistic, and getting kids into coding by the back door.
Use it to blend subjects together, for instance by trying to create art with the computer, or do a crude analysis of a literary text. Automate something. Nothing serious, but just getting used to "doing" things with the computer.
Show kids that the computer can be an empowering tool, not just the whip hand of social manipulation.
Most of the people pushing coding in schools fully agree that not everyone will grow up and code. They want literacy of what coding can do, literacy in what problems it can solve and what it cannot. They want the kids to understand logic and computational thought, to inform what tools they will use throughout life. Most adults don't use all the math they have been taught either. Nor the science, nor even the language arts skills. Elementary education is a broad swipe at general education, not detailed skill training for adulthood.
Also, the coding programs in schools have had positive side-effects in schools where it has been implemented, with students using the problem solving, logic, and debugging toolkits they have been taught to improve their academics in all subjects. It has taught kids to treat poor performance on tests as a problem to be solved, and not a personal failure.
> Coding is just a way of building something. Let’s forget that the term “code” really just means taking an existing algorithm, and implementing it in a programming language. It doesn’t mean solving the problem, nor creating the algorithm. It is just coding. But maybe that’s just part of the problem with how people misinterpret the act of writing programs.
I don't think that when people say "teach kids to code" they necessarily mean "teach kids to interpret descriptions of existing algorithms and write implementations"; it's a strawman argument.
But, anyway, coding someone else's algorithm requires thought. You have to adapt the description of the algorithm to the features of a programming language. You have to think about how that will fit with programs: the API, the naming and the manner of passage of data in and out and all that. It's not a bad exercise. It comes up in software development from time to time.
> Sure, you can use it to build games, but not exciting games at the level children are coding. Yeah these games would have seemed fun as a kid in the 1980s (when we were coding them in BASIC),
Games you were working on in BASIC as a kid "sucked" compared to the commercial games running on the same machine, yet were tons of fun to work on. Kids exploring programming positively don't think they have to produce a polished 3D title for a game console, complete with a huge world built of gigabytes of assets.
Just like people tinkering with woodwork don't think they have to replicate the Kiyomizu temple, and such nonsense thinking isn't the reason to cancel shop class.
Guess I'll be the first one to say it, so here it goes... Terrible combination of font weight and color.
I know its considered bad form to comment on something so irrelevant, but this is an example so bad that it makes the article unreadable and is therefore serious enough to warrant a comment.
I was part of the spectrum of students who hated school and all subjects these schools covered. I do feel thankful for relatively strong reading and writing skills, which I credit my 5th grade English teacher and a technical writing instructor in college. All my other English and writing classes seemed useless. Even though I'm grateful for these classes today, I still hated them at the time. I feel that I would have hated any coding classes just the same. I would have put in the bare minimum to pass, and would have forgotten everything I learned before I had a chance to do anything useful with it.
If I were to talk to my past self about learning to code, that person would have protested about already having too much homework and difficult classes. Where would coding fit within a typical workload? Would it have to knock something else off the schedule? Would it add more homework?
Would it burn out young brains who already have to sit through nearly a full work day of classes? I already had Math teachers calling me out in class to make sure I was paying attention and I could solve problems they were working on. The language (Spanish for me) instructors wouldn't leave me alone. Thank goodness, the science instructor let me kick back and chill out. Sorry, coding instructor, I have no more mental bandwidth to deal with you.
School started to feel pointless after 10th grade (sophomore in high school.) Maybe learning to code fits best in those last couple of years when students are closer to graduating into the real world. But that's not really teaching kids to code at that point. That's more like prepping young adults with a potential technical skill they could use when they get released. Good luck to them getting a job if they don't go on to graduate college.
I don't know that teaching kids to code is worth the investment. They aren't going to retain much if they don't do it regularly throughout school. It's not important enough to be part of the core. On graduation, you would still have kids with no college degree and rusty coding skills, who would have to learn a lot on the job. Or you would have those who would go on to college and do well enough without having learned to code before college.
> I’m talking basic math here, like the ability to do the 12× table in your head
No. That's not basic math, that's a memory trick. Being able to do simple arithmetic without the help of a calculator is marginally useful but will tend to come with practice anyway, in contrast understanding this idea is actually basic mathematics. Memorising 12 x 12 = 144 is no cleverer than memorising long religious texts (also something historically parents seemed oddly keen on having children do) whereas understanding why 12 x 12 = 144 is fundamental.
If a 10 year old understands that the successor operator, addition, and multiplication are the same idea at different degrees, that child won't have any problem when they're shown exponentials, because that's just the same idea again, and they will probably ask without being prompted if there are also super-exponentials (maybe under another name) which of course there are. Mathematics is a system of beautiful patterns, it's not about memorising a bunch of numbers by rote.
Anyway, this person's ideas about coding (why we teach it, why we should teach it) are bogus, and I guess what they tell me is that maybe there are better choices than the University of Guelph if you want to be taught CS by motivated academics who have their fingers on the pulse.
At the dawn of writing, you could do almost any job without it. Now, you can't sell lemonade without knowing how to write. Does that mean everyone needs to be Jane Austen? Of course not.
Coding will be necessary in tomorrow's economy and the sooner we realize that the sooner we stop screwing over our kids' futures.
70 comments
[ 1.8 ms ] story [ 131 ms ] thread"I bet there is many an undergrad CS student who doesn’t really understand the algorithm they are trying to write a program for. They read the requirements once, and then begin to code. Code it seems is the only tool at their disposal."
Also, if they don't understand the algorithm they're trying to write a program for, they missed the point of the lesson. This is an education problem, the student probably thinks they're not there to do anything other than get their degree in the easiest way possible, so they find an existing algorithm and copy/paste it. It's the whole reason why in math focused classes, you're instructed to show your work and that it will be part of your score.
In response to the article writer's point, how and why would you teach someone an algorithm without the modern tools to implement it?
A good topic for children is a turtle like in Logo. Make some nice drawings. Make smalls programs so you can repeat the drawings. Parameterize the function, so you can change the size of the drawings. Perhaps add some other tweaks, like customizable colors, or optional parts. Bonus points for making the turtle return to the original position and direction. Extra bonus points for understanding why that is useful.
Another good topic is solving recreational math problems. Some problems involve equations with small integer numbers and if they can nest a few `for`s and `if`s then they can bruteforce the solution. Bonus point for discussing the bounds, to ensure that all the options are considered. Extra bonus point for an informal idea of the complexity of the program, and guessing if it will finish instantly, after a wile, or never.
[1] I'd teach Fibonacci for kids if I were teaching them Excel, because you can see the whole sequence. Excel is a very powerful tool and is a gateway to programing. Remember to tech you kids Excel. (Not VBA, just plain cells, lot's of cells.)
Being visual and interactive is key, I believe, to engage with kids on what can be considered most of the times an abstract endeavour.
Not a kid myself, but I've never thought about implementing the fibonacci sequence in Excel/Libreoffice, so I just did it, and yeah, it's very easy to do it..
It is. It shouldn't. They are two different things.
edit: We had a teacher and special "after school class".
Of course, I'm probably biased because I learned programming before algebra myself.
In fact, it's much better to state this out loud to people learning to program, because statements like 'x = x + 1' added to the name coincidence make things very confusing.
"Don't teach kids to 'code.' Teach them to HACK."
Kids are naturally inquisitive and full of imagination. A pillow fort is just hacking the furniture and bedding. When I was young, we turned every street into a football court by marking some goalposts with our jackets. We didn't even need a ball, an empty soda can was enough sometimes.
Trying to force kids to keep inside an adult's narrow track does a lot of damage. They need guidance much more than they need fences.
The author seems to miss the point that "teaching coding" is "teaching problem solving" by proxy. Problem solving is not taught on its own, in a vacuum. There needs to be an adequate environment where feedback is quick, problems are manageable, and information is available. Appropriate coding exercises provide that environment. It's an excellent way to teach problem solving.
Finding problems and interactive experiences that'll motivate students is the hardest part IMO. Perhaps that's why some resort to Minecraft.
One can metaphorically sell to an adult that polynomials deserve study on their own and is internally applied all over mathematics, but IMO that is a very adult motivation and very few children buy that. What they do buy is that adults want it done and school says they have to. Children can also buy that math is important to STEM careers. What they might not buy is that math is sufficiently motivating by itself.
I think there's a reason why coding programs in general have gravitated towards the narrative of "programming is cool because" you can (1) make apps, (2) make games, or (3) make websites.
Story problems are very badly taught in the U.S. schooling system. Other educational approaches use them more sensibly as gradual motivation for complex reasoning about arithmetic, and eventually algebra.
A good review article on the subject: Persson, Ulf and Toom, André: Word Problems in Russian Mathematical Education, available at http://toomandre.com/my-articles/swedish/ULFENG.PDF (Word Problems in Russia and America http://toomandre.com/travel/sweden05/WP-SWEDEN-NEW.pdf a more detailed article on the same topic, may also be worth reading.)
Polymials are usually taught as being the functions of the form f(x) = a_0 + a_1x + a_2x^2... a_nx^n, which can seem arbitrary. Why functions of that particular form? It becomes even less obvious when you talk about polynomials in multiple variables.
But another way of putting it is that polynomials are the functions you can form from variables and constants using only the operations of addition and multiplication (a finite number of applications of them, that is, and including multiplication-by-self, i.e. exponentiation). Any such function can be expressed in the canonical polynomial form.
If you put that way it's obvious how general and interesting polynomials are, and how the concept applies to multiple unknowns, not just one.
Coding, on the other hand, is basically just English and is easy to conceptualize: if this happens, then do this. It's not necessary to know the abstract concepts of the low level environment to be able to apply the high level logic patterns to real life situations. I personally think this makes coding far more effective at leveling up problem solving skills.
The reality is that programming languages have historically been designed as left-to-right sequences of nouns, verbs and adjectives, in a way that mimics the sentence organization of English. Certain words may be replaced with special characters, but it still reads the same.
But thank you for acting like a classic HN elitist who thinks that pedantry for the sake of pedantry is more important than anything else in the world.
This is not a very meaningful or accurate statement. Perhaps one can better rephrase it as "coding is just logical reasoning", and it might turn out that exposing kids to coding does a better job of teaching logical reasoning than, e.g. the existing math curriculum.
Otherwise, it's just more math, which we've already established does not (on its own) provide a solid enough foundation to develop problem solving skills for most people.
That's the difference, and why it's both a meaningful and accurate statement.
By the way, our kids follow Python 101 in Minecraft Educational Edition, and have some fun with it.
Interestingly the idea that you can teach "problem solving" as a unique skill is, last I checked, not supported by the education literature. There is a great deal of evidence that you can teach concrete skills that may be widely applicable, such as how to form or identify a syllogism, but there's no evidence this translates into some greater "problem solving ability" except insofar as as the skills you are taught make more problems tractable.
- Math
- Any kind of experimental science
- Art
- Music
- Dance
- the list goes on basically forever
You teach kids step by step, like anybody else. And make each step fun.
Different kids will be motivated to learn for different reasons. Some will just want to do it, some need it attached to grades, others need a real life reason or peer encouragement. In the end, with almost any subject, you won't be able to pull all kids in. Some just won't like it, while others can't get enough.
This statement is completely at odds with how I view _coding_. I cannot think of a more powerful or free-form method of creative expression.
Knowing what I know as a software developer by trade. I would want my kids to know how to code. Even if that doesn't end up being their career I'd like them to have this ability. I think it would make their lives easier and allow them to achieve more. So given my thoughts on what I would want for my own children, I feel like it would be dishonest to say that other children should avoid learning to code.
That's not dishonest, it's just having a mind focused on your children. That does not mean you have a moral obligation to support a policy which generalizes what works with your kids to everyone else.
It was relatively simple and forgiving. It had an all-in-one IDE. It had comprehensive built-in help documentation. Most importantly, it had graphics and sound capabilities out-of-the-box.
By the end of one semester, we could build a multiscreen, singing Christmas card. A very tangible project.
I, uh, think I see the problem
Also, "coding" and "programming" by this point are intimidating to people, especially when we raise the stakes by tying them to high paying career. I might call it "computation" which is just using the computer to solve problems. You can start by just playing with numbers.
I'm about killing two birds with one stone: Making math and science more realistic, and getting kids into coding by the back door.
Use it to blend subjects together, for instance by trying to create art with the computer, or do a crude analysis of a literary text. Automate something. Nothing serious, but just getting used to "doing" things with the computer.
Show kids that the computer can be an empowering tool, not just the whip hand of social manipulation.
Also, the coding programs in schools have had positive side-effects in schools where it has been implemented, with students using the problem solving, logic, and debugging toolkits they have been taught to improve their academics in all subjects. It has taught kids to treat poor performance on tests as a problem to be solved, and not a personal failure.
That's just like, your opinion, man.
I think coding is amazingly fun, I've thought so for 25 years, as a teen, as a college kid, as a grad student, and as an industry professional.
I don't think that when people say "teach kids to code" they necessarily mean "teach kids to interpret descriptions of existing algorithms and write implementations"; it's a strawman argument.
But, anyway, coding someone else's algorithm requires thought. You have to adapt the description of the algorithm to the features of a programming language. You have to think about how that will fit with programs: the API, the naming and the manner of passage of data in and out and all that. It's not a bad exercise. It comes up in software development from time to time.
> Sure, you can use it to build games, but not exciting games at the level children are coding. Yeah these games would have seemed fun as a kid in the 1980s (when we were coding them in BASIC),
Games you were working on in BASIC as a kid "sucked" compared to the commercial games running on the same machine, yet were tons of fun to work on. Kids exploring programming positively don't think they have to produce a polished 3D title for a game console, complete with a huge world built of gigabytes of assets.
Just like people tinkering with woodwork don't think they have to replicate the Kiyomizu temple, and such nonsense thinking isn't the reason to cancel shop class.
I know its considered bad form to comment on something so irrelevant, but this is an example so bad that it makes the article unreadable and is therefore serious enough to warrant a comment.
If I were to talk to my past self about learning to code, that person would have protested about already having too much homework and difficult classes. Where would coding fit within a typical workload? Would it have to knock something else off the schedule? Would it add more homework?
Would it burn out young brains who already have to sit through nearly a full work day of classes? I already had Math teachers calling me out in class to make sure I was paying attention and I could solve problems they were working on. The language (Spanish for me) instructors wouldn't leave me alone. Thank goodness, the science instructor let me kick back and chill out. Sorry, coding instructor, I have no more mental bandwidth to deal with you.
School started to feel pointless after 10th grade (sophomore in high school.) Maybe learning to code fits best in those last couple of years when students are closer to graduating into the real world. But that's not really teaching kids to code at that point. That's more like prepping young adults with a potential technical skill they could use when they get released. Good luck to them getting a job if they don't go on to graduate college.
I don't know that teaching kids to code is worth the investment. They aren't going to retain much if they don't do it regularly throughout school. It's not important enough to be part of the core. On graduation, you would still have kids with no college degree and rusty coding skills, who would have to learn a lot on the job. Or you would have those who would go on to college and do well enough without having learned to code before college.
No. That's not basic math, that's a memory trick. Being able to do simple arithmetic without the help of a calculator is marginally useful but will tend to come with practice anyway, in contrast understanding this idea is actually basic mathematics. Memorising 12 x 12 = 144 is no cleverer than memorising long religious texts (also something historically parents seemed oddly keen on having children do) whereas understanding why 12 x 12 = 144 is fundamental.
If a 10 year old understands that the successor operator, addition, and multiplication are the same idea at different degrees, that child won't have any problem when they're shown exponentials, because that's just the same idea again, and they will probably ask without being prompted if there are also super-exponentials (maybe under another name) which of course there are. Mathematics is a system of beautiful patterns, it's not about memorising a bunch of numbers by rote.
Anyway, this person's ideas about coding (why we teach it, why we should teach it) are bogus, and I guess what they tell me is that maybe there are better choices than the University of Guelph if you want to be taught CS by motivated academics who have their fingers on the pulse.
Coding will be necessary in tomorrow's economy and the sooner we realize that the sooner we stop screwing over our kids' futures.