Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming Education

Should Everybody Learn To Code? 387

theodp writes "In July, the Association for Computing Machinery announced it was partnering with Code.org, with ACM contributing funding and its Director of Public Policy to Code.org in a push to 'ensure that every K-12 student in the US has the opportunity to study computer science.' Interestingly, joining others questioning the conventional Presidential wisdom that everybody-must-get-code is the Communications of the ACM, which asks in its February issue, Should Everybody Learn to Code? By the way, Code.org is bringing its Hour of Code show to the UK in March. The new National Curriculum for England that is to be taught in all primary and secondary schools beginning in September includes a new emphasis on Computer Science curricula, said to have been sparked by a speech given by Google Chairman Eric Schmidt in 2011."
This discussion has been archived. No new comments can be posted.

Should Everybody Learn To Code?

Comments Filter:
  • by Anonymous Coward on Sunday February 02, 2014 @09:25AM (#46133397)

    Sure, why not. They'll never use it anyway.

  • by Anonymous Coward on Sunday February 02, 2014 @09:27AM (#46133423)

    No.

    ensure that every K-12 student in the US has the opportunity to study computer science

    Yes.

  • by buchner.johannes ( 1139593 ) on Sunday February 02, 2014 @09:29AM (#46133425) Homepage Journal

    (1) Reading comprehension
    (2) Household economics
    then Coding.
    Everyone thinks that their profession is the most important in the world. But making everyone a programmer is not the most important task.

  • Re:clickbait (Score:5, Insightful)

    by Joce640k ( 829181 ) on Sunday February 02, 2014 @09:35AM (#46133453) Homepage

    Correct. We should start with learning to read/write before we move on to the advanced stuff.

  • Re:clickbait (Score:5, Insightful)

    by JaredOfEuropa ( 526365 ) on Sunday February 02, 2014 @10:09AM (#46133639) Journal
    The question brought to mind a nice quote by Oscar Wilde: "A gentleman need not know Latin, but he should at least have forgotten some". Coding is not for everyone. Neither are history, poetry, chemistry, or Latin for that matter. But it's important enough to be included in a broad curriculum. Show your children everything, and they'll choose the stuff that is of interest to them.
  • Re:clickbait (Score:5, Insightful)

    by turbidostato ( 878842 ) on Sunday February 02, 2014 @10:16AM (#46133691)

    "The question brought to mind a nice quote by Oscar Wilde: "A gentleman need not know Latin, but he should at least have forgotten some"."

    Absolutly right and, probably, in the same sense as Wilde tried to transmit.

    Should everybody learn to code? Absolutly not.

    Should everybody learn to think rationaly, not to be fooled by appearances, find the nut of a problem and then be able to decompose it into action items, set a path of action to solve them and finally check the intended result with the obtained one? I think so.

    And it happens tom that learn to code can be a fantastic tool, probably the best, to achieve that goal.

  • by bzipitidoo ( 647217 ) <bzipitidoo@yahoo.com> on Sunday February 02, 2014 @10:22AM (#46133727) Journal

    And it's a lot more fun than MS vs Linux, Java vs .NET, Nvidia vs AMD, or even vi vs emacs. Sorry "gcc or llvm", your grudge match will have to settle for a 3 AM slot on a low budget, obscure science light cable TV channel.

    The big language demolition derby is still hot and furious, like the annual playoffs of old sports that still excite fans, if you can see past all the smoking wrecks like Modula and the entire team of modular programming cluttering the arena. If only the Perl 6 team could sort out their engine troubles and get their car into the arena, replace that sputtering Perl 5 vehicle and challenge that JavaScript/CSS/HTML/AJAX monstrousity that was cobbled together from a dozen different brands of automobiles, and that C++ bug that still works after being run over and rolled over and which just got a fresh set of wheels. OOP sponsors must be wondering which teams are still proud to bear their logos. And where's Haskell? Oh yes, loudly honking their horns from atop the safety of their functional programming pedestal while the LISP car circles round and round as if they expect a ramp to appear at any moment. Python? Dancing around the LAMP pole with PHP's go-kart. In one of the darker corners of the arena are the excruciatingly slow horse drawn wagons of the Fortran and Cobol teams, just trying to hold their ground. Follow the oil slick to find C. Java is struggling to move under the crushing weight of their massive armor, spare parts, and the huge gas tanks needed to feed their too thirsty engine. The kids would still love those Logo toy cars they used to hand out last century.

    If coding is so universal, what language should everyone learn? We're nowhere near sorting that out. Shouldn't we be able to settle and standardize on the essential elements of a programming language? As it is, it's like arguments over mathematical notation. Multiplication works the same whether the symbol used is x or * or a dot or nothing at all because it's the default operation. But it's not so easy to tell what is trivial and what is important in programming languages.

  • by Anonymous Coward on Sunday February 02, 2014 @10:33AM (#46133765)
    And therein lies the... I don't want to say problem, but I cannot think of a better word.

    When you see "learn to be a plumber", you think the simple stuff. Others may think more complex stuff, like soldering copper pipes, determining the correct angle of decline for waste pipes, repacking a shutoff valve, and other things that, not being a plumber myself, I do not have the knowledge to even consider as something a plumber would do.

    Likewise, when people see "learn to code", some will think simple things like.. I don't know, how to grep a directory of text files. But others will think things like how to write an OS.

    Or for the car analogy, it's the difference between knowing basic maintenance and being a full-blown mechanic.
  • by Ardyvee ( 2447206 ) on Sunday February 02, 2014 @10:38AM (#46133799)

    Thus, we should say basic knowledge or advanced knowledge (basic maintenance vs full-blown mechanic). Everyone would probably benefit from basic knowledge on a number of things in today's world/civilization. Not everyone will benefit from advanced knowledge.

  • Re:clickbait (Score:5, Insightful)

    by emj ( 15659 ) on Sunday February 02, 2014 @10:54AM (#46133879) Journal

    Though for me Logic 101 was a lot better for my thinking than learning to code.

  • by DoofusOfDeath ( 636671 ) on Sunday February 02, 2014 @10:58AM (#46133895)

    (1) Reading comprehension
    (2) Household economics
    then Coding.
    Everyone thinks that their profession is the most important in the world. But making everyone a programmer is not the most important task.

    This, a million times over. I'm a good computer scientist, but I haven't been careful or thoughtful about household economics. I suspect that if I'd had some instruction in these matters, I would have been more disciplined. Now I find myself only being able to consider jobs which are high-paying, because I've financially boxed myself into a corner. This limits where I can live, on which projects/products I can work, and how much time I can have with my family. It turns out that spending one's mental energy only on computer science isn't always a winning strategy.

    If you're at the beginning or your career or still in college/high school, I implore you to find the knowledge and discipline to create a budget and to live within it. Even though your salary can rise quickly as you gain work experience in software development, it will never outpace your ability to over-spend it.

  • by Anonymous Coward on Sunday February 02, 2014 @11:10AM (#46133967)

    FYI I'm the OP.

    "You see, "lists" and "arrays" are words from common language because lists and arrays in programing are exactly that: lists and arrays."

    Did this make sense to you when you wrote it? Read it again.

    I realize that lists and arrays make perfect sense to you (and they do to me now too), but in the beginning when I was reading books on how to do all of this stuff, it was NOT intuitive to me. I would propose that it is only intuitive to a small subset of the population.

    " what it means is that you are not properly prepared to understand the world around you and your education has made of you a gullible person easier to fool than it should be."

    You are going to need to provide more evidence of this than you have. I understand all of those concepts NOW-- I do not think they have aided my critical thinking in other areas all that much. I would also argue that you are terrible at making your case, because you basically state your conclusion, then use it as a premise to back up your argument.

    "Do you think being a salesman is an easy task? "

    I was a "nerd" growing up, and am somewhat of a hybrid sales person/tech guy. I used to dismiss sales, but actually your response to me is indicative of why orgs like mine need sales people. You come off brash and insensitive, without even meaning to. You instantly put people on the defensive and even if you're technically correct (which you've also failed to demonstrate it), you lose your chance to demonstrate that with your tone.

    So we're clear you're pretty common in that regard. It's a common trait among engineers/the technically minded.

  • by ultranova ( 717540 ) on Sunday February 02, 2014 @11:10AM (#46133969)

    Everyone would probably benefit from basic knowledge on a number of things in today's world/civilization. Not everyone will benefit from advanced knowledge.

    The question is: is coding basic or advanced knowledge?

    I'd say it's quickly becoming basic knowledge. Information Age is just starting, and everything is getting automated - and programming is really just controlling automation. If you don't know it, you'll be more and more helpless as this age gets into gear.

    Everyone doesn't need to know C++ templates, but everyone needs to know how to throw together a quick script or mobile app, or will soon enough.

  • by FailedTheTuringTest ( 937776 ) on Sunday February 02, 2014 @11:11AM (#46133979)

    They don't need to code. They need an IT department that doesn't have its head in its ass and is supplied with enough resources to be able to afford solving user problems like that.

    Yes... but the other piece of the puzzle is that the user has to be computer-savvy enough to know, or at least suspect, that there is a better way to accomplish a task. Users who have very narrow IT training may think there is only one way to do a task, and may not bother to ask for help because they don't even know that an alternative exists. Only people with slightly broader training will even be aware that there are things like scripts that can automate tedious processes.

  • by jones_supa ( 887896 ) on Sunday February 02, 2014 @11:48AM (#46134197)

    Draw the line between basic and advanced at compiled languages.

    Well, C is a basic compiled language and C++ is an advanced compiled language.

  • by s.petry ( 762400 ) on Sunday February 02, 2014 @12:52PM (#46134481)

    All right, but let's expand that a bit. Should every engineer know calculus?

    Yes, every Engineer should know Calculus. This is different from what's in the subject "Re:Should Everybody Learn Calculus?".

    Now what someone could ask without such an extreme bias is "Should every student in high school learn what calculus is and what you can use it for?" to which the answer would be "yes".

    Learning "Calculus" requires a lot of precursory work which people in general don't in High School. A person could even ask "Should everyone learn the basics of Algebra, Geometry, and Trig to which that answer would also be "yes".

    I'm not saying you introduced the bias, the AC did.

  • by aaarrrgggh ( 9205 ) on Sunday February 02, 2014 @01:32PM (#46134665)

    I have over the years as an electrical engineer used many brute-force solutions to solve what could have been done more elegantly with a different tool: often Excel becomes the Swiss Army knife.

    But, without being able to use a little shell scripting, Perl and PHP, there are problems that can't be easily solved. If I was any good at C or a more modern language I am sure other things could be options.

    Unfortunately, the opposite is also often true-- Visual Basic created a generation of internal office applications that should have been dealt with differently.

    I like to think the best thing computer programming education teaches people is when they should hire a programmer. I still remember a problem 18 years ago where tens of thousands of files had to be modified, and my boss' approach was just to bring in 20 temps after hours and do it manually for a couple months. Fortunately we were able to hire someone to automate it instead, but that approach wasn't available to him as he had no experience in that area.

  • by Anonymous Coward on Sunday February 02, 2014 @02:32PM (#46134965)

    I think you're putting too large of a separation between the knowledge required to solve a calculus problem by hand, and the knowledge required to model a solution that requires calculus.

    From a practical standpoint, if you are solving engineering problems whose solutions end up using integral calculus, I'm not sure how you could avoid learning calculus. How could you model a solution for a problem in terms of something which you never learned? If I was never exposed to calculus the first time, I would have no concept of what an integral table was or how to use Mathematica/Maple/Matlab/etc. to find a solution. I'm also not sure how you would make it through upper division engineering courses that made heavy use of integral calculus.

    I agree that the lack of programming being taught to students in the sciences is a disservice to the students, but that's a separate issue entirely. Both programming and mathematics courses frequently become student filters, which makes them highly unpopular with students. In the case of engineering, it's easier to justify removing the hard programming courses from the curriculum given the vast amount of information that you need to learn. It's hard to remove the math without jeopardizing the content in the higher level engineering courses.

  • by Areyoukiddingme ( 1289470 ) on Sunday February 02, 2014 @02:47PM (#46135025)

    Yes... but the other piece of the puzzle is that the user has to be computer-savvy enough to know, or at least suspect, that there is a better way to accomplish a task.

    At last, the real value in this rather silly education push. No, most people are not going to actually learn how to code, even if they take a class with the ostensible purpose of learning. But they will, at least, get a grasp on what's possible. It's amazing to me, after 20 years of so-called Information Age, exactly how few people have this basic grasp. It's just not there. The possibility that the machine can do repetitious things for them never crosses most people's minds. People think what they want done can't be automated because one part is unique each time, if they even give any consideration to the possibility of automation at all.

    Primary school is about teaching people the basics, numeracy and literacy. Secondary school is as much about about teaching people what's possible as it is teaching any particular thing, and in this day and age, learning what a computer can do is at least as important at learning what chemistry can do.

  • by elashish14 ( 1302231 ) <profcalc4@nOsPAm.gmail.com> on Sunday February 02, 2014 @03:14PM (#46135169)

    Being able to do calculus helps you think critically and serves as a basis for study in many other important fields. There's a pattern of reasoning skills that you develop when you read a book, learn a method, apply it to solve a problem, verify your answer, and return to the problem to identify and correct errors.

    Being able to solve the problem without having to look it up gives you an intuition for solving complex problems without having to resort to such means. If I tell you the derivative of a value is x^{-1}, you shouldn't need to look up that it varies logarithmically. And being able to solve the problem yourself is what gives you the faith in the solution being correct. You could always look up the wrong value from the table, or provide the wrong input to a compute engine (side rant: Mathematica syntax drives me bonkers). You should always have multiple ways of understanding and verifying your solutions because relying solely on existing tools to perform the work for you without understanding where they come from turns this process into a black box which you have to rely on purely out of faith; I would argue that this can be dangerous, especially for mission critical applications. For basic calculus, linear algebra and differential equations, which every college engineer is expected to understand, I don't think this is an unreasonable requirement.

    Even while you yourself may have not been in a situation where you needed to understand these concepts, there are many fields in which being able to manipulate these equations is important: particle advection, comupter graphics and animation engines (manipulating ODEs and PDEs, linear algebra), or scientific and numerical computing and modeling (pretty much anything field of math). So I would say, if I were developing a comprehensive computer science program, I absolutely would have to include this in my curriculum, otherwise I would be shutting our students out of these fields. And if you're a mechanical, electrical, chemical, etc. engineer (or you're any other kind of engineer having to work with them), you need to understand these concepts to have faith in your results.

    The purpose of your college program was not to cater its curriculum directly to you, but to give all the students enrolled a broad set of skills that they could apply in situations that might arise. And understand that your program can only expose you to the skills that you should learn, but it's up to you to find a practical use for them.

  • Re:clickbait (Score:3, Insightful)

    by Anonymous Coward on Sunday February 02, 2014 @03:31PM (#46135283)

    I disagree wholeheartedly that learning to code is too specialized. We're in a transitional period right now where people specializing in computers are the ones writing code, but once society commits to the information economy fully, we'll start to see domain experts writing code for their domain rather than computer experts having to learn the domain (or collaborating with domain experts) to write the code.

    It's analogous to basic literacy. There was a time when specialists in various professions would seek out someone literate to do their reading and writing for them. Now, it's an expected skill for everyone to have. We're in that period for computer literacy. Eventually, everyone will be expected to write enough code to solve the problems they specialize in. There will always be computer specialists...the people who build the tools that everyone uses or people who's jobs require a higher standard of code. But we have that exact same situation today...journalists, writers, lawyers and many other professions are expected to have a higher level of proficiency with reading and writing.

    It's imperative that people understand this. We're entering a period where more and more people aren't able to offer any greater utility than machines, be they robots or simple software. First it was basic arithmetic where computers exceeded humans. Over time, we've added the bulk of our assembly line work. Even advanced tasks like playing chess are now best performed by computers. Google and others proving that human drivers will eventually be replaced. We'll soon realize that almost every job that doesn't involve some degree of creativity is on that list. Learning to code will be the primary defense against being replaced in your work by a machine.

I've noticed several design suggestions in your code.

Working...