American Schools Teaching Kids To Code All Wrong (qz.com)
theodp writes: Over at Quartz, Globaloria CEO Idit Harel argues that American schools are teaching our kids how to code all wrong. She writes, "The light and fluffy version of computer science -- which is proliferating as a superficial response to the increased need for coders in the workplace -- is a phenomenon I refer to as 'pop computing.' While calling all policy makers and education leaders to consider 'computer science education for all' is a good thing, the coding culture promoted by Code.org and its library of movie-branded coding apps provide quick experiences of drag-and-drop code entertainment. This accessible attraction can be catchy, it may not lead to harder projects that deepen understanding." You mean the "first President to write a line of computer code" may not have progressed much beyond moving Disney Princess Elsa forward? Harel says there must be a distinction drawn between "coding tutorials" and learning "computer science." Building an app, for example, can't be done in a couple of hours, it "requires multi-dimensional learning contexts, pathways and projects." "Just as would-be musicians become proficient by listening, improvising and composing, and not just by playing other people's compositions, so would-be programmers become proficient by designing prototypes and models that work for solving real problems, doing critical thinking and analysis, and creative collaboration -- none of which can be accomplished in one hour of coding," she writes.
How about we leaving the teaching to the teachers and the armchair quarterbacks can go fuck themselves? I like that approach.
No, there won't be "high paid computer science guys". The only way to get a high pay is to have anything to do with finance or management. Anyone who actually creates a product is paid pebbles, only pushing numbers counts!
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
"...would-be programmers become proficient by designing prototypes and models that work for solving real problems, doing critical thinking and analysis, and creative collaboration -- none of which can be accomplished in one hour of coding..."
That's why the same approach she criticizes, if applied music, produces students that can play a paticular piece or pieces of "hard" music very well, but cannot meaningfully compose or even read music.
When it comes to coding, I prefer being introduced to the basics, then letting the student discover on their own why things work the way they do. I learned this way using Visual Basic.
I now have coded several applications in VB for people who had no idea Excel for example, could be run fully fledged business applications beyond simply adding up numbers.
Of course, the advantages of using a language that non-programmers can "pick up in a weekend" are mostly lost because you'll be working with programmers who learned to program in a weekend.
Exhibit A: Python. Exhibit B: PHP.
You want to teach coding? How about do it holistically - teach CS, and use a language like Pascal and/or Basic to teach the CS. For teens, perhaps teach from SICP.
I'm a minority race. Save your vitriol for white people.
They want cheap, easily replaced and just barely adequate coders.
Of course one computer science class is not sufficient to turn students into programmers. Their history class is also not going to make them into historians. After all, there is nobody forcing kids to search archives for original documents! By professional standards, everything taught in school is fluffy and watered down. Harel noticed that only now, and she's outraged?
When I was in high school, (25+ years ago) we had computer programming classes. The languages they covered were BASIC, Pascal, and LOGO. Sure, you could drive a little turtle around on the screen and make pretty Spirograph pictures, but nobody used it to play chess or do their taxes. Of course, many of the students in that class went on to take university classes in computer science.
Lesson: Rudimentary programming classes are not the end-all, be-all of computing. It's just a stepping stone to let you know if you want to continue your education in that field.
It's called "hour of code" and the idea is to get kids interested in computer coding. Kids already have exposure to music, they can bang a drum, squawk a plastic recorder from the dollar store. They have exposure to sports, they can throw a ball around easily. They don't have exposure to coding in the same way. So give them an hour. It's not a PhD, but have you heard the noise those plastic instruments make?
Learning multiplication tables doesn't teach kids how to solve the REAL problems they'll face in multivariable calculus. Kids don't learn REAL chemistry by following lab exercises in their science books.
Kids don't need to learn how to make apps in third grade any more than they need how to build graphene. But I would like to see them learning things such as conditional execution, recursion, and abstraction of problems. Unless you've programmed in your spare time, when you get to college, you are going into computer science completely blind. Having exposure to these concepts in a structured way at an early age allows you to make a better assessment of if that career will be good for you since you'll have said "I really enjoyed that class where I programmed Elsa to walk in a spiral using a for loop with an increasing counter, maybe there's something real I can do with that".
Maybe they won't be successful! That's OK! I wouldn't be successful in real life at all the things I did well in elementary school. The important thing is giving them a chance to learn skills that might be useful and determine what it is they enjoy at an intrinsic level in order to encourage them to study it in their spare time, in college, and in their careers.
Also, bullshit on that "musicians don't learn by playing other people's music". Yes they do.
Why is it that these tight corporate tie-ins are permitted for education? I certainly would hope that the schools wouldn't allow "Luke Skywalker and Belle teach American History", so why is the equivalent permitted for CS? Is it the fact that this is a "new" educational subject, where they're seizing the uncharted void of curriculum to get us warmed up to the idea?
If your theory is different from practice, then your theory is wrong.
At the very least, these programs could help highlight the children that have natural ability and/or interest early on. This way, once identified, they will have the opportunity to get the deeper education they need to go on and be successful in a CS related field.
https://blog.codinghorror.com/please-dont-learn-to-code/
http://techcrunch.com/2016/05/10/please-dont-learn-to-code/
So she's suggesting that a discipline that requires an (obsessive) focus on procedure, logic, math, and detail *might* not benefit from being addressed as the "flavor of the month" educational issue and magic-bulleted by an "hour of code" every week using what amounts to dumbed-down simplistic tools taught by general-ed instructors who aren't really familiar with what they're doing anyway?
Maybe we should just leave it as a profession to people that actually enjoy it and choose to do it, instead of trying to stampede kids (particularly ones with vaginas!) into it with t-shirts, media attention, and shiny prizes?
I'm going to go way out on a limb here and suggest that the kid attracted to a profession because there's balloons and cake at a few school events, is going to be pretty fucking disappointed when they realize that much of the job involves sitting for HOURS AND HOURS, alone, and thinking really hard about stuff.
-Styopa
Most of these teachers are probably not even qualified to teach programming and you end up getting this hard reliance on a textbook.
That's the kind of teacher that made it possible for me to learn how to perform a DDOS. It was highly motivating to see her wonder why her computer had severe network problems during class, while nobody else seemed to be affected. And when they upgraded her computer to a (omg) multimedia machine and I figured out how to eject her cdrom remotely, I was hooked. And those were dos and Netware years, mind you, none of this fancy linux thing.
I don't think I'd have become interested in computers if instead of her my teacher had been an elegant coder who really jnew the importance of design patterns and DRY and was talking about multifaceted this and polymorphism that.
So what I'm saying is, keep this kind of thing going on and let the horse figure out by himself if he wants to drink. If coding becomes a dull school subject it will attract the wrong crowd, and god knows we don't need any more dullards in this industry.
lucm, indeed.
I don't think there's really a wrong way to show kids how to code. The only wrong way would be not to show anything. (Well, it might be a bit wrong to over-complicate things, since we don't want to make them uninterested or scare them away.)
:) I was already interested enough to care about it :)
:)
I know you're mostly not interested in some john doe's life story, nevertheless, I'll give you my example, since I also was taught coding before knowing anything about CS or higher level math.
The first ever line of code I wrote was about 25 years ago in 6th grade. There was a computer club or something at our school, after classes in the afternoon, where we - a group of ~6 - were shown/taught coding in some sort of Basic on some really junk machines. I started learning CS when I started high school (in a math+CS-specialized class - meaning we had extra classes of math, phys, CS, and extra coding labs) and I never felt it a problem that I only started to know things deeper at that time. On the contrary, when we started the more "boring" part
I know some people who started this way and turned out quite OK
Point is, start early, start at a level that makes kids interested, and continue to teach them deeper stuff according to their age, gathered knowledge, and of course, interest (if there's any, not everyone has to be a CS+coder guru).
However, after a while CS needs to kreep in, since even if most companies need "normal" coders more, my unsurprising experience is that more knowledge really produces better results.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
"Just as would-be musicians become proficient by listening, improvising and composing, and not just by playing other people's compositions."
That's exactly what introductory musicians DO in the current public school environment. They play other people's compositions. Only those with the means and time actually go further than that into writing their own music, and they do it at home or take additional class work outside of their normal curriculum.
You aren't a musician because of the High School curriculum, you aren't a mathematician, you aren't a political scientist because of your government class. I think the problem here is that people like this article writer are expecting HS graduates to be able to jump into a profession with no additional learning/training. That's not realistic, and it's not what a HS curriculum is designed to do.
The one "watered down" CS element that I would like to see taught in elementary schools is the art of drawing flow charts. Now, that's something that can be useful across the board, as a tool for thinking,
But, as for the rest of it-- let the teachers figure out how to best teach.
running else into walls is really fun and you can get kids to spend hours learning stuff with a pay off like that. It's about setting the hook. Later on programming becomes fun for other reasons like the feeling of a flow state or the accomplishment of a product or the edorphin release of grocking a new algorithm that does something you thought was impossible. But you can't get to those in one step. We let kids read captain underpants before we expect them to find reading Arthur C Clark any fun. It's about progression and self motivation at an appropriate level. Not all kids will be coders but letting the ones that are find out they are is fine.
Some drink at the fountain of knowledge. Others just gargle.
There ARE musicians that are considered proficient who in fact did nothing but learn other people's music. Pavarotti did nothing but learn other people's music and in fact did it by ear because apparently he never learned to ear music (at least not in the beginning of his career). The great pianist Glen Gould never really became proficient in composition (he had a SINGLE work, which wasn't really a great accomplishment shortly before he died). Now are there rounded musicians, certainly. Leonard Bernstein would be a great example. Point is, the analogy given to us is flawed. Also, in programming, although we have many generically labelled "Developers" there are low level coders (generally juniors starting out who just do simple assigned tasks), UI Designers, Software Architects, Database Modellers, Data Architects, DBA's, Network Administrators, and many in between. Most start-ups have general "Developers" who are basically expected to be "Jack-of-all-trades" with the experience and rounded exposure to handle "whatever is needed at the time", but few people with less than 5 years of experience can handle that well so generally these are intermediate-senior level experienced people. While I agree to do software (or music) professionals SHOULD have a wide rounded set of skills to see the big picture and accomplish more, not every successful IT person is well rounded and these will be limited to small scope roles (although the real world doesn't always meet this idea). So I wouldn't say kids in school taught the bare basics of coding aren't taught to code "wrong" as much as in a way that will limit their advancement.
"Imagination is more important than knowledge" - Einstein
We are doing a disservice to kids by assuming that they can't grasp Differential Equations, Calculus, and Linear and Nonlinear Optimization. By limiting them, we undermine their capabilities and stifle their creative and inventive potential.
Knowledge = Power
P= W/t
t=Money
Money = Work/Knowledge so the less you know the more you make
Teach kids how to use about 6-8 instructions for x86 assembly. Give them a template to start with to modify. Then have them build up simple sequences of the handful of instructions that they know to do something basic (like add up a list of numbers).
My suggestion may seem boring, but it is rewarding to take something that was initially hard and at the end accomplish something that you are now an expert at doing. (expert in adding numbers in assembly language)
Why assembly? The basics are very easy, it only gets hard if you want to do complex things. Honestly after you taught the kids those few instructions you can stop there and never mention assembler again.
Repeat with a handful of operations for another language and a good template to start them off. Python, Ruby, JavaScript, etc I don't care. It could be Lisp or Pascal for all it really matters.
Teaching concepts and trying new things is the whole point. It should never be about training children to be a professional in a particular industry. (which is why I don't think the language matters)
“Common sense is not so common.” — Voltaire
Watered down CS classes is exactly what most people need.
Even my wife's job, an attendance clerk for a elementary school, takes some significant IT understanding to do.
The software the district uses requires the end users to create their own reports, in dumb downed version of SQL.
"Real" IT people need more detailed courses, but the current system geared to make office workers needs to be upgraded to produce IT savvy workers.
In that case, don't teach watered down CS (whatever the fuck that means). Teach IT. You don't take some crap and call it watered down calculus when all you need to do is teaching the basics of math and, I dunno, understanding the differences between simple and compound interest, do you?
It is understandable when the general population conflate CS with IT (in the same way they conflate Zoology with Botany.). It is not OK when people who should know better push such an invalid notion.
My experience agrees with you. It's management that gets the pay, while the actual gruntwork of producing code gets squat.
Unless you get to sit in the C-suite, management pay over grunt pay is marginal once you count the number of hours and responsibility involved (not to mention that middle and above-middle management are the first to go during an acquisition).
You can be smart about being a grunt and make a good salary not far from base management salary without all the grievance involved in managing people.
Its probably true that more people should understand how programs work, but coding is not computer science.
It's about progression and self motivation at an appropriate level.
True but it must also be educational at an appropriate level of rigour. The problem with a lot of school education today is that making it fun becomes the primary goal and maintaining educational standards comes in second. This leads to the erosion of educational standards very rapidly - just look at the appalling level of maths education in schools in the UK, Canada and the US today. The correct order of priority is to determine what needs to be taught and after that determine how to teach it in the most engaging way possible: this last part is where the teachers are the experts. If you can't come up with an engaging way to teach it then you just do the best you can.