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.
In industry, we need architecture people and people to code. This is not new.
The industry is shifting and will continue to shift to a model where there are a few high paid computer science guys and many cheap coders.
Gov't is doing what big business wants (shocker). Create a bunch of low wage people to do the work based on the specs of a few. If a company doesn't do this, they will be weaker than more cost efficient competitors that are doing this.
Thinking that this is odd is akin to thinking that you need to be a structural engineer to weld steel.
Programming is a multifaceted activity. Most of these teachers are probably not even qualified to teach programming and you end up getting this hard reliance on a textbook. Not knocking them or their abilities, but it's just the nature of what goes into good programming
"...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.
So they are using gui tools. Who cares? My first experience with programming was randomly modifying Oregon Trail and seeing what broke. It wasn't until I got a programming manual several years later that I discovered that chr(4) actually meant ascii character 4. I knew what it did by trial and error but had no idea what it meant. The point is they are teaching basic logic and problem solving skills. Not everyone is going to be a programmer but everyone can benefit from learning logic, problem solving skills, and collaboration.
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?
Dammit you're doing this all wrong! Can't you program in a way that costs me less than minimum wage?
Nothing posted to
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.
If you want to teach kids the problem solving aspect of coding, there are several video games that will exercise those brain muscles.
Infinifactory is the best example I can think off off the top of my head.
http://store.steampowered.com/app/300570/
Though really anything may by Zachtronics would be great.
http://store.steampowered.com/search/?developer=Zachtronics
If you haven't heard of these games before, Mark Brown at Game Maker's Toolkit made a lovely video on the subject.
https://www.youtube.com/watch?v=w1_zmx-wU0U
Getting kids to try out games like these, compare their results, discussing and collaborating on their ideas, would do worlds more for the next generation of coders and computer scientists alike than that 'pop computing' nonsense.
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.
I'd rather see general tech classes instead.
An hour a week in elementary school perhaps.
A quarter class in middle school covering basics such as operating systems, networking, history of the Internet, week-long course of programming, week-long course on keyboarding/typing, office software, hardware, Internet safety, webpage building. I figure 45 school days of 45+ minutes would be sufficient in middle school. Perhaps 6th or 7th grade. It doesn't need to be all-inclusive. It just needs to cover some topics so students know. About the hardware thing... knowing the parts and being able to take and put a computer back together might be useful knowledge for some students.
In high school, offering more electives probably would be useful. But also throwing in Mathematica and/or Matlab in certain math classes might be something too.
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.
It really does not matter anyway. Soon there will not be many programming jobs left in the US. It will always be cheaper to hire overseas where labor can be had for a fifth of US labor cost and have them install it over the intertubes. After all, what could possibly go wrong with the misunderstandings between cultures and no recourse because the programmers live in another country.
Teaching them coding at all is a mistake, not everyone is cut out to be a coder or engineer, and nothing is ever going to change that. What they should be doing is teaching digital literacy. A large number of millennials don't even know how their devices really work, let alone how things function under the hood. This whole coding initiative is one of the mist ludicrous and fascist ideas we've ever had in America.
Clearly this policy is part of a larger plan to produce incompetent American programmers so that businesses have yet another excuse to request more H-1B approvals.
Only Trump can fix this problem and Make America Geat Again!!!
Trump/Palin 2016!!!!!!!!
Can we please stop confusing coding with computer science? While one must necessarily code in order to pursue computer science, one must not necessary be a computer scientist to code.
It's perfectly okay to write code that does what you want it to do. It may not be the most efficient, most optimized algorithm, but hardware resources like memory and CPU are basically free and infinite.
Teaching kids to code is not wrong. Expecting high school graduates to be computer scientists is.
In math, you learn arithmetic before algebra, and algebra before calculus for a good reason. Each level is built on the prior and demands an understanding of the foundations before the higher level abstractions which are built upon them.
Computers are similar, but we are trying to short circuit the whole process and provide, as Harel puts it, the "fluffy" version. If you want a population who understands technology, rather than merely thinks they understand technology, you also need to teach from the ground up. One needs to understand hardware before assembly language, assembly language before high level languages, information theory and algorithms before "drag and drop" style "coding".
We're going to breed a nation of Dunning Kruger effect people, which may be more dangerous than not teaching anything at all. If nothing else, the population will severely underestimate the difficulty of building real world complex systems, which can lead to "punishing the weatherman for his mis-prediction".
We're even starting to forgo the ground-up approach in universities for our comp-sci graduates, and it shows. Painfully.
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.
I'm not sure who is to blame, but public schools (and most private) teach nearly every subject badly.
Math: obsess over memorization with vague threats of "you'll need this later in life"
Science: obsess over memorization with vague promises of it leading to better careers
English: obsess over sentence diagrams, stupid sentence diagrams
Literature: train the students to hate reading with many of the worst stories available, insist that they are all "classics" and that any cultured person likes them
History: demand memorization of a finite but excessive collection of date/name/event correlations with as little time as humanly possible spent explaining the significance of any of those events
Foreign language: how to ask for bathrooms and embassies, no attention to the cultures you can potentially experience with familiarity of the language (as an odd aside, I hate puns in english, but find them fascinating in languages I am much less-than-fluent in)
Gym: honestly, this one is usually fine unless the teacher is obsessed with a certain sport
Music, art, and shop varied heavily by the techniques of the day, which is probably why they are usually right after recess in the list of things for schools to drop in favor of hiring more non-teaching staff
As an aside about that, I've noticed that most of the people who claim the US isn't paying enough to schools are under the impression that somehow another $1,000 per student per year would reduce class sizes and improve the resources available to the teachers. The trend seems to be hiring more "administrative" staff whenever funding rises and cutting back on visible staff and resources whenever funding decreases.
Of course code.org think it's wrong - they pay teachers to teach girls only.
The sexist shits.
http://www.avoiceformen.com/misandry/the-misandry-of-code-org/
We need more ways to get H1B'S in by saying us workers don't have the right skills.
"American schools are teaching our kids how to code all wrong." -- perhaps incorrectly, even...
As someone who got started on programming back in the early 90s with QBasic, then moved through a VB and Java phase until ending up at C/C++, it's fairly obvious what has happened over the years. Basically ongoing abstraction and proliferation of scripting languages is making people forget about actual programming.
Where programming involves the actual manipulation of hardware, drivers and bytes, scripting merely involves being able to use pre-existing APIs proficiently. See for example applications which use C++ at the core and use Lua for automating or customising certain tasks in a dynamic fashion.
Having used scripting languages like PHP, JavaScript (Vanilla mostly), Perl and Python for well over a decade, and most recently having taught young children to create simple games in Scratch, it's not hard to see what has changed: we stopped teaching how to program.
When even CS courses at school involve nothing more than being able to glue the right Java libraries together (hello Apache Commons and Spring!), and 'JavaScript development' is basically more of the same, it doesn't take a genius to see that they are no longer writing in system languages (BASIC, QBasic, C/C++, Pascal, etc.) like students of yesteryear.
Real computer science and programming involves understanding hardware, knowing how to get reasonable performance out of limited hardware, understanding that hardware is not perfect and how to compensate for this, as well as resource management.
Or more succinctly: programming is being able to write the runtime, scripting is being able to write scripts for said runtime.
Site & blog: http://www.mayaposch.com
https://blog.codinghorror.com/please-dont-learn-to-code/
http://techcrunch.com/2016/05/10/please-dont-learn-to-code/
OTHER classes, such as Science, History and English also teach "doing critical thinking and analysis, and creative collaboration"
because those skills are not unique to IT, every good job requires that sort of thinking.
Never answer an anonymous letter. - Yogi Berra
Start with something simpler. Like an old 8-bit computer, or a simulation like core-wars. Some system where *everything* about it is comprehensible with no hidden magic.
09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
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.
This was my grade 10 computer science class in a nutshell although I don't blame the teacher; the curriculum was the issue.
Instead of learning how the computer actually works and how the different parts fit together, everyone one slapped with a bunch of disjointed terms to memorize without any context surrounding them. If only schools would drop this "one size fits all" approach and understand that there is more to learning than just "memorizing things". I did far better in the practical classes such as mathematics and the later computer science classes as they were purely programming.
Lastly, I am reminded of this:
https://pbs.twimg.com/media/Bh...
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.
/. wannabe 'experts' who can't show they've programmed a damn thing themselves on /. = all talk bullshitters. Seriously delusional blowhard bullshitters like raymorris who is stupid enough to think he coded the linux kernel when asked (and all he did was write a 2 line patch hahahaha which any dolt can do) is about the best you'll get for 'expert (not) advice' around this site or "web wallies" who THINK formatting text = programming (while using others' prewritten frameworks too). This is the last place anyone should come for advice on coding. There's very few REAL coders here. This comment does not however count for those who can show successfully done projects or commercially sold code here (not even 1% of this sorry site chock full of menials or wannabes). I'm sure this will be down moderated. Truth's not a big part of the agenda here. Especially truth that hurts the fake it till you make it losers here.
Let them code Perl and each time they make a mistake kit them on the head.
If you are about 'no kid left behind' hit ALL the kids on the head, except the kid that made the mistake. It works in the military, so why not in schools?
Don't fight for your country, if your country does not fight for you.
I've tried to start my kids on encryption w/ simple letter-substitution schemes, intrigue them w/ the idea that they can send secret messages--on paper-- to each other or their friends.
Later on, I thought we could write a simple program to encrypt and decrypt.
Trying to get them interested in the underpinnings rather than the fluff.
"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.
Introduction to coding is not important as education. Content is less important than motivation to learn, even if on your own. I got that from my 8 years of teaching, including coding. Some [few] students who are exposed to simple coding wind up discovering that it is what they want to get skilled at and do for life. Without such classes, they would miss out on that discover. So it's not all a waste, even though it's wrong to think of it as learning how to really program.
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.
American schools teach _everything_ wrong. Why would coding be an exception?
Let me preface this by saying that I taught 8th-10th grade programming for a couple years almost a decade ago. I was qualified to program, employed as a programmer, but not 'qualified' to teach on a full time bases. I was part of a program where they brought in real world people to teach a couple of skill classes for a semester. It was a nice 3-4 hour break in the middle of my day.
I believe programming and other skills should be taught to young adults. Every kid in the US education system should have access to programming classes if they are smart enough to take them. However, it should not be mandatory, nor should we force it on most students.
I just quickly glanced at the article and saw no mention of how old these kids are. Drag and drop programming is good for teaching logic skills to young kids. The same could be said with Chess, but drag and drop programming is a stepping stone into a career where as chess is not.
The problem with teaching young kids (elementary school) and most (50-75%) older kids (Middle/Highschool) programming is actually the same. Lack of reading and math skills. Programming is a job of reading. In my classes we used Small Basic, which has a Logo like object called Turtle. Each functions of Turtle is shown on the side of the IDE with 2-3 sentence descriptions on what does what. Plus this information is printed and taped to the desk.
If you lack a 5th grade reading level and can not understand that turnRight() turns the turtle 90 degrees to the right. Or that Speed is how fast the turtle goes and can be set between the values of 1 and 10. Where as 1 is the slowest and 10 is the fastest, here are examples: ... Then I'm sorry. You need to be in manual labor skill classes or have reading 6 class hours a day. Not programming.
Which leads me to the next issue. This one effects even the smart kids. It's how we teach math.
Leaving aside the kids who can't read, and the next level of kids who can't do algebra (which is pretty much a requirement for programming in a real language.) We have a major issue with how we teach 'smart' kids (by smart I mean B or better in algebra. The bar is set pretty low in education...) They learn to solve math problems. They're never taught how to create math problems to solve their problems. I've seen kids with A's in AP Calc get their minds blown by a simple loop which causes a Turtle to turn 1 degree every iteration... And don't get me started on writing a calculator or something.
I know this coming off as a bit of an egotistical rant. So I'll cut to the point. 1) Teaching very young kids logic through drag and drop programming is not a bad thing. 2) Teaching every older kid programming is a bad thing. 3) With limited pool of intellectual resources to teach programming, only a small subset of qualified students should be allowed to learn programming at every school. 4) Many more students lacking basic reading and math skills. Easily 50% range in the school I was teaching. Instead of trying to teach them programming, lets teach them to read. 5) Some sort of basic formula generation chapter is needed in advance algebra classes instead of purely focusing on 'solving' math problems. This would probably be a better introduction to compsci instead of making a Turtle spin around in circles.
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.
This is Wimp Lo, we trained him wrong.....as a joke.
Wanna buy a shirt?
https://www.redbubble.com/people/stealthfinger/shop?asc=u
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
Hey, you have to start somewhere. I'm by no means a programmer, but all of those "wrong" teaching methods (That game where you "programmed" a frog to do various tasks, Carnage Heart, etc) did give me at least a semblance of the process and some of the mindset needed to handle a little HTML and VB coding. Its like giving a child a picture book with a few simple phrases on each page, they're not going to be able to read Macbeth right they finish, but it will give them the skills to incrementally improve their understanding if that's where their career/hobby choices take them.
The current "Learn to Code" movement is not (or at the very least, should not be) about turning everyone into a Professional Developer.
Rather, I think it is an understanding that most of these students will pursue other professions, but will need to interact with developers.
They'll need at least a passable understanding of what code is, what debugging is, what testing is, because they'll be associated with it to some degree.
The goal is to end managers who believe that a "Debugger" is a program that fixes your bug for you.
Or that "Testing" is "it seems to work, lets ship it!"
Very few people will end up professional programmers, but everyone else needs to be somewhat familiar with code.
(In the same way that very few people are mechanics, but everyone should have a vague concept of an engine, gas, oil, gears, etc)
"Building an app, for example, can't be done in a couple of hours, it "requires multi-dimensional learning contexts, pathways and projects."
While this is complete gobbledygook, apparently nobody knows the difference between Computer Science and Software Engineering.
You can study computer science and not be able to write a line of code.
Conversely, you can be a software engineer, and know almost nothing of computer science.
They are separate discipline. And it's not clear of the value of learning either for most student.
You were mistaken. Which is odd, since memory shouldn't be a problem for you
What's "Idit" Harel's real name, eh? I'll bet he's one of them transsexuals! He's a misogynist bigot who thinks he can tell women who can make Elsa ice skate that they're not programmers! He just wants everything to be too technical because he thinks women shouldn't program computers!
We should be teaching kids the very basics such as focus and concentration through meditation, then add on the ability to adapt and learn. We continue to try and "skate to where the puck is, instead of to where it's going to be" (stealing a line). And in order to go to where it's going to be we need a highly adaptable society with the ability to quickly learn as they may have have 4-6 careers in their lives.
Along with those very basic also teach reading, writing, math, logic, problem solving, art, music and phy ed, then as they get older use personality, aptitude and interest tests to develop more specific skills.
In 10-15 years coding "may" be a niche job as AI rises.
Evidently
CS can be taught academically, in worse or better versions. Coding cannot really be taught at this time. We do not know how to do it. Like most advanced skills it needs about 10'000 hours of practice to become reasonably good at it, and most of that time people need to spend in self-directed study by themselves, practicing on a variety of projects, tools and languages. The "learn coding quick" bullshit-meme of today is really "learn some very restricted form of coding very badly" and it harms a lot more than it helps.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
They don't teach coding or computer science in k-12 schools. They teach scripting. The thing is you can't make coders. You have to be born one, or pretty close. Its not about language or syntax. Its about logic and breaking down complex systems into simple actions. You have to think that way or you will never be a decent coder.
...Elsa isn't a princess, she leveled up and became a queen.
Um, kids are expert at all those things. Notation, there's something they can't do, but theoretically understanding the concepts is a requisite for learning to walk or speak.
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
Most school districts will complain that they don't have enough money to buy supplies and/or reduce class sizes. But there's always money for building a new football. After my parents retired to Sacramento in the 1990's, my father drove me around the county and showed me all the new football fields that the schools were building. It was so shameful.
So you mean watching Masterchef won't turn me into a kitchen god?
The whole point of these things is to get people into something, not to teach them everything there is about it...
...on a hand me down TI 99/4A connected to a portable black and white television set back in 1986 and looking through the big binder full of Basic examples and type copying/modifying the listings. Just sayin..
Paraphrasing: "Because kids can't code an OS from scratch after playing around with a computer for an hour, we are teaching them 'all wrong'." Seriously?
Yes, the general public frequently confuses the writing of code with Computer Science, but that does not mean that schools are doing anything "wrong" by starting out with some simple toyboxes for kids to play with.
Is the objective "computer literacy on steroids" where people can cobble together toy programs and they can cobble together really useful programs from a small handful of "large blocks" in the same way you can "build" a PC from a motherboard (pick one of many), a power supply (pick one of many - but make sure it's beefy enough), a case (pick one of many - but make sure it's right for your motherboard and other parts), a keyboard (pick one of many), a mouse or trackball (pick one of many), etc.?
If that's the objective, then "watered down" is the way to go.
Is the objective to use programming as a way to teach people to think logically? Well, you'll get some of that with the watered-down approach, but it's not a substitute of 2 years of real computer-science/programming classes that force you to learn logic and teach you to make "deep" choices between various libraries that superficially do the same thing but under the hood have different efficiency- and other trade-offs. On the other hand, you don't *need* to take a computer-science approach to teach logical thinking. We've been teaching kids to think logically (with varying success) since way before the invention of the modern computer.
Is the goal to make professional programmers out of the kids? Sorry, there's no substitute for doing it the hard way.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
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.
American Schools Teaching Kids To Code All Wrong
Am I the only one that thinks we should be teaching IT and business applications first and foremost. Teach a kid how to use excel (or whatever FOSS spreadsheet) of your choice to compute simple but real world problems with what-if analysis, or how to plot numbers and see how that changes when you change the variables.
Show how much money you will get in 20 years if you change the interest rate on a referenced cell. Or how much money you need to spend in building a fence if you change the cost of lumber per yard, or the cost of delivery per unit. And so on and so on. Right there you will be teaching kinds important lessons on how to use software realistically.
Teach a kid how to put a LEGO robot together. Or how to put a computer together, or go even further down into the basics with a focus on shop class.
The future is not going to be dominated by software developers, but by integrators, machinists and service people for whom custom coding will be a secondary (important, but secondary) activity.
The approach we are taking is like teaching plumbing apprentices casting and forging metallurgy to create their own plumbing before teaching them actual trade of plumbing.
My kid is taking a programming class in high school. The curriculum is more geared to covering topic bullet points than in learning via experimentation.
When I took BASIC in high school way back "then", we got to noodle around with fun graphics. I made a minimalist version of Space Invaders, for example.
I learned the value of subroutines by seeing the mess made by not using them. That's far more concrete and direct learning than "you should use subroutines because the book says so".
Table-ized A.I.
1. Meet the tools
2. Learn how to use the tools
3. Learn how to answer questions
4. Learn how to ask questions
Roughly: High school, Bachelor's, Master's, Ph.D. Experience and the right work substitutes and moves you ahead, as well. In music, a nice correspondence is: play the recorder/violin in school, form a/play in a band, compose music for your band/in genre, write compositions that extend/break genres.
It seems the author is bemoaning the existence of step 1 (and possibly parts of step 2). The author is jumping ahead quite a bit. The initial part of learning a field is learning the basic vocabulary of the field. The initial part of learning the JOY of a field is learning a field in the context of other things that bring you joy.
Sams Teach Yourself C++ in 24 Hours In just 24 lessons of one hour or less, you can learn the basics of programming with C++–one of the most popular and powerful programming languages ever created.
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.
You were doing just fine with Python and PHP, but Pascal is soul sucking in a different way, perhaps more so. You teach kids to program in a language like Pascal saying here's the fundamentals--everything else is syntax. But when they try and do something in a different language, like Java, C#, or C++; they find themselves woefully unprepared to the nuances of those languages and discover that it isn't just syntax. Every language has it's quirks, paradigms and syntactic sugar so teaching students one language with the expectation that learning a different language will be much easier is just setting them up for failure.
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.
Who are you quoting here? It sounds to me like a mad scientist. I remember from my elementary school days seeing kids able to calculate surface of a circle given its radius or get radius from diameter when asked for it but not able to use diameter to calculate the surface. Equally not seeing a difference between 22 and half horses on a farm and 22 and half horses per farm. My final point is that smart kids are expected to be able to find smart content on their own (like many games require some sort of exploration) and forcing the stuff through their throats may have the opposite effect. And of course during a software engineer career most of knowledge you have to acquire on your own time.
I have two CS degrees and am not working at all.
At over age 50 I gave up looking. It's a dead-end career. should have been a lawyer or a nurse. Or just about anything else where you are considered employable after middle-age.
Your misunderestimation of the complexity of human beings and human interactions is so mind-numbingly staggering as to make your bloviating pointless.
The kind of empirical studies and 'data' based conclusions you demand are impossible. We can barely do something similar in medicine. People are not chemicals or simple physical objects you can subject to formulas and natural laws and expect to get meaningful results.
So many comments, but no one seems to care. Programming is not "coding".
Federal Dept of Edu combinded with progressive control of most EDU departments has been an unmitigated disaster for America's youts.
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.
Maybe not a terrible analogy, but perhaps the wrong conclusion being drawn from it. You can become an excellent musician even if you only ever play what somebody else has written. You can be a great actor by only ever memorizing the lines somebody else wrote for you. You can be a coder without ever becoming an architect. There are pairs like this all over society: soloist/composer, actor/writer, programmer/architect, fabricator/engineer. You don't necessarily have to be good at one to be good at the other. You can be good at both or bad at both, too. No correlation necessary.
Hell, over half the coding community doesn't code all that great but I don't think it's because of what they were taught in high school. A lot of times an artistic people can write cleaner, better functioning code than a person that has just done code all their lives.
Its probably true that more people should understand how programs work, but coding is not computer science.
...parents postings above yours. Hi, i am Anonymous Coward and youve seen me in such popular films as Hydrogen Bonb Suitcase Drmolition Service and Freeway Debris Cleanup and Blaze Orange Fassion.
No. Seriously guys. Teaching computer codeing has more to do with understanding the jobs of a secretary and a filing cabinette and the remote control commands that commands that secretary. Conputer Science is statistical post-production library alienations that generate results of breaching original code library support to perform and receive offsite results. My point: every CS major is working outside of spec, trying to get access to hardware and subvert privilege to gain results. CS class does more to replace core libraries so they are taught offstandard biased classes lobbied by a hardware architecture company or software firm, suchas Intel vs AMD, IBM vs Apple vs Motorolla. The pillar of coding is actually anti-competitive propriary libs, and bit ordering is what was used to abbrogate CS from deviating from our original File Cabinette and Secretary standards. Who in Hell needs more than 640KB?
by the time they graduate there won't be any programming jobs in the usa
Sheesh, evil *and* a jerk. -- Jade
Already this morning I have built 3 fully functional apps for both iPhone and Android. It is so easy. LOL
>there must be a distinction drawn between "coding tutorials" and learning "computer science."
Don't you mean, getting a degree? There already is a distinction.
The only thing I can make out of this article is "We are doing a disservice to kids by assuming that they can't grasp industry-standard languages, complex computer science topics, and applications."
Yet there is a whole generation of professional programmers who started with BASIC, which is not an industry-standard language (not now anyway), is a very limited subset of computer science, and frankly teaches some fairly bad programming practice.
What I got out of BASIC was that programming can be enjoyable and fun. I have seen some people taught K&R C as their first language, and it appeared that had far less enjoyment and fun with memory allocation errors, etc.
BTW "pop computing" isn't really new, remember the educational programming language Logo, designed in 1967 by Daniel G. Bobrow, Wally Feurzeig, Seymour Papert and Cynthia Solomon.
GIven that so many of us came up through the "Hello World" Basic route, it's a little difficult to imagine that making children do the less pleasant tasks or very hard ones is a good way to get more kids into coding.
She might be form Israel, but she has a distinctly Calvinist outlook on things.
The shepherds did so well protecting the flock that the sheep no longer believed that wolves existed.
How about we let parents choose, how and where their children study?
Whichever approach public schools take, it will be a single one — certainly so per state and, with the increasing power of the Federal Department of Education, for the entire nation.
At best, it will be the right one for a majority of pupils, but even that's a lot to hope for. And, when the government makes a mistake (such as declaring "fat is evil"), it makes the same one for all of us.
Slashdot used to be very cautious against monocultures — why are so many people here able to recognize its dangers in technology, but not in education, for example?
In Soviet Washington the swamp drains you.
I saw a guy pushing a broom in a hospital the other day and I found myself jealous of his job.
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
I was just wondering what the heck that is?
And what do they code?
Let me get this straight - Idit expects us to start kids out to be masterful programming composers??? Not everyone is geared to be a coder. Great coders won't always start by being gifted overnight maestros and magically crap out golden apps one day.
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.
We are doing a disservice to kids by assuming that they canâ(TM)t grasp industry-standard languages, complex computer science topics, and applications. 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
At the same time, kids can perfectly well have great fun kicking and throwing balls in the air, hitting hoops or scoring goals depending on the situation. All of this can of course be described by differential equations, calculus and linear and nonlinear optimization, but it's not necessary to play football :-)
not everyone who picks up a guitar needs or wants to be a virtuoso. sometimes you just want to sing a ditty for your friends or charm your girlfriend.
the more the merrier.
i could live a little longer in this prison
I learned in America!
10 PLINT "Yo Mama!"
20 GOTO L
30 DROP MIC
Wheres my stock options bit!@#s
Infants learn language by immersion -- listening to adults. At first, they have no comprehension. After a while, they understand a little. After a year, they understand quite a bit. Pretty soon, they start using the language. Learning by immersion works so well that the CIA uses it to train people in new languages.
People improve their reading and writing by PRACTICING reading and writing. Coding works the same way. Immersion works well for beginners. They can start with simple algorithms; critical thinking and analysis can wait. Until they have a language to work with, they don't have a foundation to build on. People just have to remember that learning syntax is not the end of the journey, it's the beginning.
This is absolutely correct, but the headline writer is a maroon (per Bugs Bunny). There is a huge difference between "coding" and "programming".
"Coders" are a dime a dozen (and worth exactly that).
"Programmers" are significantly more rare and good ones are worth their weight in gold and platinum.
I cannot comprehend why anyone would aspire to be a coder. Being a garbageman pays far better.
Don't forget Deterministic Finite Automata. That class knocked my ass out of the computer science degree path I was on...
It's no different than making a bird house in shop class. Can you build a skyscraper? No but you learn the basics and it lets you decide if you even like that kind of thing.
I think it was Edsgar Dijkstra who said that computer science has as much to do with computer hardware as astronomy has to do with telescopes.
"You're coding it wrong."
- Someone Famous
Comment removed based on user account deletion
Everything needs to have a payoff.
The pay off is that you get a better job, can manage you finances more effectively and generally have a better chance at a good standard of living. Part of the education process needs to teach students that although summer jobs somewhere like McDonalds would be an effective, but not fun, way to do that. See you can learn something valuable even while not having fun! ;-)
I'd rather a dumb kid have fun with math and learn something...
That's a great ideal but the problem is that the smart kid who would like to learn more maths and science does not because of the song and dance required to entertain the less gifted kid (I assume you actually meant 'dum' and not that he had a disabling speech impediment). The problem with this is that the smart kids are the ones who grow up to be doctors, engineers, scientists etc and are the ones more likely to have amazing ideas and innovations which improve everyone's lives, including the less gifted kid's. They can result in better medical care or even provide nicer, better paid jobs.
If you insist on treating them to a song and dance routine the smart kids are likely to end up being the ones who tune out and think school is a waste of time. So if you are going to have one lot tuning out of school the question is which one is the least damaging for society? I would argue that it is very clearly the smart kids which you need to teach and keep engaged. The less gifted kids are not likely to end up with jobs that need an education as much as the smart kids, well except for those who become politicians but that's a different discussion.
It would certainly be beneficial for society to educate everyone as much as possible but that requires streaming and every time I suggest that there are a series of posts declaring how unfair it is....and yet people are still happy to allow streaming for school sports and not insist that the level of sports education is kept low enough that even the most sport-inept student finds it fun. So if streaming is bad lets at least apply it fairly everywhere and when the standards of professional sport teams starts to decline perhaps then we can have a sensible discussion about differing educational needs.