Slashdot Mirror


Drag-and-Drop "CS" Tutorials: the Emperor's New Code?

theodp writes: Teaching kids computer science is a great movement," writes HS senior David Yue, "however, to overly dilute the magnitude of the difficulty in regards to the subject area of coding and to create the illusion of mastering a 'superpower' (Code.org) is a huge mistake. There are many videos and articles on the Internet these days that have demonstrated positive support towards computer science education. Below these articles, one can find many comments, left mostly by parents and supporters. These people usually express how proud they are that their children have an opportunity to learn computer science or how proud they are that computer science is being integrated at a more substantial level into the education system." But Drag and Drop Doesn't = Coding, argues Yue. "Parents and teachers today who aren't technical need to be aware that the drag and drop code or the candy-coated learning process does not effectively teach children programming but eventually causes a huge amount of shock once they are immersed in real code." Yue's Emperor's-New-Code warning comes days before President Obama — a graduate of Code.org's drag-and-drop Disney Princess coding tutorial — asks Congress for $4-billion-and-change in the upcoming budget to fund his "Computer Science for All" K-12 initiative.

23 of 158 comments (clear)

  1. Visual vs wall of code by Anonymous Coward · · Score: 3, Informative

    It shouldn't matter how the code itself is created. You can code the same thing in any number of languages in any number of code types.
    If the kids don't know what loops are, what case statements are etc, then they'll still suck at "coding" even if you are dumping a bunch of text based functions on their head.

    1. Re:Visual vs wall of code by mh1997 · · Score: 5, Insightful

      It shouldn't matter how the code itself is created. You can code the same thing in any number of languages in any number of code types. If the kids don't know what loops are, what case statements are etc, then they'll still suck at "coding" even if you are dumping a bunch of text based functions on their head.

      You are correct. Not only that, the learning objective with drag and drop might be colloquially called "coding" but in reality it might be to teach the logic of problem solving and the logic of coding using graphics, yet still having something that either works or does not work at the end of the project. Thinking logically before putting fingers to keyboard is a skill that needs to be learned - seeing the working project at the end is motivation.

      Lego Mindstorms is an example of this. Drag and drop the objects, have the robot do something and then troubleshoot why it did not work (both hardware and software). Then build on success. As you become more proficient, you can solve some pretty complex problems. When the problems become too complex, you can move into a variety of actual languages to either solve a previously unsolvable problem or solve the problem in a more efficient manner.

    2. Re: Visual vs wall of code by BonThomme · · Score: 2

      unless you learn SNOBOL

    3. Re:Visual vs wall of code by SNRatio · · Score: 3

      Lego Mindstorms is an example of this. Drag and drop the objects, have the robot do something and then troubleshoot why it did not work (both hardware and software). Then build on success.

      Any thoughts on Labview? My only experience for using it to build a simple robot (albeit with lots of levels of nested structures) was that I would have spent a lot less time learning Arduino's cut down version of C to do the same thing.

    4. Re:Visual vs wall of code by 0100010001010011 · · Score: 2

      You are correct. Not only that, the learning objective with drag and drop might be colloquially called "coding" but in reality it might be to teach the logic of problem solving and the logic of coding using graphics

      I use Simulink for a living. This is exactly what it it is, the buzz word is "Model Based Control". It doesn't mean I spend any less time trying to figure out the logic of how things work. Our whiteboards at work are covered with sketched block diagrams on how we need to implement a strategy.

      Almost every company I know of has moved on past C for their engineers and just has them design and implement algorithms in Simulink. It's why the are a lot of positions open for Simulink across the country.

      It writes better C faster than I ever could. Including C that meets ISO® 26262, IEC 61508, EN 50128, and related functional safety standards such as IEC 62304 and it's cutting development time in half

      I got an Arduino Robot the other day and I spent more time messing around with C than I ever have with Simulink. I can make a control system to run a 16 cylinder engine in a half an hour. Drag and drop an engine speed sensor, drag and drop injector block. Toss in some PID control and it's done. Right now I would kill for a Python equivalent of Simulink but nothing comes close, I'm about ready to just make an Arduino mako template so I can teach python to write my C for me.

      Not that people that need to know C disappeared, they're just the ones writing our 'device drivers' for Simulink. When I drag and drop a "Digital I/O" block into the model I trust that they made it so it works. (And sometimes it doesn't, but that's all code). It validates the datatypes. Does fixed pointing in a straight forward manner. I know most people think autogenerated code is big and scary but I trust it better than I trust some guy that took a few C courses in college.

      Additionally it's much easier to let engineers do stuff how engineers do them and programmers how programmers do things and not make the engineers learn programming or the programmers learn engineering. (Not that we don't exist, but we write the device drivers)

      It's why a lot of dev boards also have Simulink libraries. It's not that I don't know C or assembly it's that I'm tired of dicking with it and just want to make a controller. I can take the same Simulink model and compile it for multiple vendors and even different devices for that vendor.

      I can swap dev boards without changing any of my model logic in a few seconds. Even compile it for FPGAs and PLCs.

      Further reading:

      1. http://papers.sae.org/2013-01-...
      2. https://www.mathworks.com/tagt...
      3. http://www.mathworks.com/compa...

      [Meta: Speaking of taking a lot longer to write. This post took an extra 5 or so minutes because I had to format all of the HTML. Please switch to Markdown or Restructured text. There's a reason we use it in industry, it is faster.]

    5. Re:Visual vs wall of code by KGIII · · Score: 2

      As a guy who's working on a robot, with C, you might be on to something. His name is Rex. He's meant to come when he's called. He's meant to bring me a remote. No, it's not a serious project, I'm just trying to avoid wet-ware bit rot as my age is increasing at a seemingly faster rate than normal.

      Oh, he has a sister. Her name is T but she's not a robot and she's not meant to move. She's ready. She's able to play media like she's supposed to. She's smart. Rex, her brother, is a lazy bastard. He actually came when I called. Once. Entirely by accident. He does, technically, try to move when called. However, he's retarded and goes any direction that he damned well wants. So far, that's been in my direction exactly once. Someone has to have a voice following library but I've not found one - I did see one that might work. It's in Java. Rex is getting murdered in his sleep. I'll probably wake his sister up and force her to watch me murder him just in case she gets any ideas.

      On a serious note, it has been fun and I am so rusty that it's almost like learning anew. When/if I get the code squared away *and* looking presentable, it'll be the first C code that I've given away since about 2003. However, I might end up scrapping it and going with Java. I don't know a damned thing about Java but I'll be damned if there isn't a library for *everything* out there. Want to mix a cake with a dildo and have it play a jingle and flash LEDs? There are three libraries and two of 'em are able to be hosted remotely and support Twitter, Facebook, and a toaster.

      --
      "So long and thanks for all the fish."
  2. I disagree by MiKM · · Score: 5, Interesting

    The Hour of Code isn't supposed to actually teach Javascript or other "real" languages. Instead, it's designed to give students an idea of how programming works in general and maybe pique the interest of students who might not realize that they'd enjoy programming. If the CS-for-all movement is to happen, then using a "dumbed-down" language with easy rewards is a good decision: most students would be bored to tears and turned off to programming if their program wasn't working because they mistyped a word or forgot a semicolon somewhere. A drag-drop interface is also great because students can easily experiment without having to worry about making syntax mistakes; instead, they focus on the big picture of how to make the robot do what it is they want it to do. After all, nothing is stopping schools from offering "real" programming classes to interested students or bright students like the author himself from learning how to code independently.

    1. Re:I disagree by Hognoxious · · Score: 3, Insightful

      Of course you're right. The problem is that a lot of these courses are hyped to a laughable extent - equipping tomorrow's workforce with the marketable skills to compete in the information economy, gubbins gubbins gubbins....

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  3. Assertions without evidence by Anonymous Coward · · Score: 3, Insightful

    So many assertions. So little evidence. Maybe drag and drop helps. Maybe it's worthless. If you're not referencing a study, hush. The plural of "anecdote" is not "evidence".

  4. It is code; the clue is in the name. by roystgnr · · Score: 2

    I program by writing in text files too, but that's just important for interoperability with other tools, it's not the definition of coding. Everyone knows that our CPUs don't execute ASCII, right? If it's Turing-complete, then it can be interpreted or compiled (i.e. "decoded") to do anything you want to execute.

  5. Re:What's the viable alternative? by mikael · · Score: 3, Insightful

    Parents just want to make sure their children "get into computers" because that is where the money is (working in IT compared to working at McDonalds). Computers are programmed, so therefore their children must learn "computer programming".

    With high school education with BASIC, the teachers would start from scratch, introduce variables, arrays, strings, input and output, arithmetic, for/while loops, conditional logic, and each of those topics would be covered in a week. At the end of the course, you would be lucky to have got onto drawing graphs in ASCII. At the same time, the business community would make sure that you got to learn about mainframes, batch processing, punched card, magnetic tape and databases.

    At home, the programmable toys in the past were BigTrak\and some robots you could build with technical Lego. With computer software, there was Logo and printer/plotters. The first thing anyone did was to run the supplied tutorials or copy some code in from the instruction book. Then they would combine bits from the different tutorials to make their own programs. Eventually, they could write an entire program from scratch once they knew what all the different commands would do. Local newsagents would have racks of computer magazines with guides on sprite programming, MIDI sound programming, generating mazes, player-missile graphics, how to connect sensors, weather stations and just about anything else.

    It would make more sense to give students a catalog of home learning kits and let them order a couple for free. Anything taught in schools at a regimented pace is going to bore some students, and others still won't be able to keep up.

    --
    Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  6. That's drawing. Neither CS nor code, which are dif by raymorris · · Score: 2

    > In Flash you can make a cartoon

    Yes, just like you can make a cartoon with colored pencils. That's called drawing. That's a left- brain, artistic activity. At my last job we had two people who did that.

    Those two people would then send the Flash file over to me, the right-brain guy who did the math-like process of programming (coding) those cartoons to do something useful. I couldn't do their job and they couldn't do mine because the two require fundamentally different ways of thinking. Not just different skills, but almost opposite skills.

    As I did the coding, I would code to function interface appropriate to the frameworks each of those Flash objects were embedded in. I would code in the ActionScript language to pass data back amd forth with the larger framework project.

    Designing those overall frameworks to hold any needed module and control the interactions between modules required some computer science understanding. The computer science part was language- neutral. A module could be written in any language. The computer science part was mostly about designing systems that are flexible, robust, expandable etc, totally unrelated to any specific language, whereas coding is all about expressing an idea in a particular language.

  7. Re:If it was easy by TheRealHocusLocus · · Score: 2

    If it was easy everybody would do it. Like engineering, like medicine, like pro football, like many other things.

    It CAN be easy.Just click the EASY button. Let's begin.

    Now click on the Think button. Tomorrow we're going to show you how to click and hold an actual Idea and drag 'n drop it into the Brain.

    Then we'll introduce the Wizard Wizard. Ever went looking for a Wizard only to find that what you're trying to do has never been done? Wizard Wizard to the rescue! There's even a Wizard Wizard Wizard that can help you decide what needs to be done, and a W4 that does this automatically. It is advised to run W4 and up in a secure virtual machine. After a period of self-assembly they invariably set about to exterminate mankind.

    Next you'll learn how to click on things that are outside your computer. Like this cat. The problem with visual IDEs is that too often the stuff inside the computer does not give you the tools necessary to drag anything useful anywhere --- or you just wind up with things on top of or inside other things. We'll experiment with pillows, freight trains and Russian Dolls and of course, cats.

    Then on the last day you'll learn how to splice DNA, which is derived from the ancient threaded Forth language. You'll meet the members of the 'DNA glitch' community, who jack around and patch DNA to see what those hilarious fucked up creatures do.

    Then when the world has been destroyed and everything is on fire and foul mutants hunt humans, you will receive your Certificate of Completion.

    --
    <blink>down the rabbit hole</blink>
  8. Re:If it was easy by PolygamousRanchKid+ · · Score: 4, Interesting

    Well, the problem is that a lot of politicians don't really understand what programming is all about, and they truly believe that programming is a simple, rudimentary skill. So simple that anyone can do it. All you need is couple of hours of online education, and hell, you can write a telecommunication billing system from scratch. The Obamacare website was the best example of this: the politicians and civil servants did not understand enough to manage the contractors.

    Too many of these folks think that programming is like changing a spark plug in your car. All you need is a wrench, your "Tool", and your "Education", clockwise is "in" and counter-clockwise is "out". Presto, you are now a fully qualified Ferrari mechanic!

    Hey, I have a Black & Decker drill, and a can of furniture spackle. I can now work as a dentist!

    --
    Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
  9. Coding *is* Easy. by pugugly · · Score: 2

    Coding is Easy.

    Coding in the workforce, with a company guide that specifies language X in coding environ Y, remembering to put in remarks for the guy that has to maintain it that are both useful and not in iambic pentameter, with an object-oriented styleguide for a functional program that was determined by a middle manager who last coded in Basic and thinks "Goto" is bad without ever having understood why (and occasionally why not) and once suggested simply using an un-returned function instead ... is hard.

    But yeah - Coding is easy.

    Pug

    --
    An Invisible Entity of Vast Power whose existence must be taken on faith alone: Liberal Media
  10. It's similar to learning a spoken language by RogueWarrior65 · · Score: 2

    Sure, I can go take a class on a foreign language but that doesn't mean I can write great literature in it. You'll know the mechanics of the language but it's a different matter to be able to express yourself so that a native speaker understands you. It's the difference between a button that says "reset" and one that says "overcharged"

  11. Depends on the grade by jader3rd · · Score: 3, Interesting

    I don't think that CS should be introduced until 7th grade. But other Slashdot users have mentioned that this drag and drop stuff is useful for the K-6 students. So hey, maybe it does help. Perhaps the drag and drop teaches some abstract logic skills that will help the students become a better thinker instead of a below average code monkey.

  12. Toggle switches by mcswell · · Score: 2

    And I say it isn't programming if you're not throwing toggle switches to set the bits.

    BTW, I once had a job running a CDC Cyber 170/750 whose boot-up instructions were actually set that way.

  13. Article summary is rubbish by goombah99 · · Score: 3, Interesting

    Empirically, things like Scratch are great learning tools. I taught my kids with it and then they went on to writing code. But they had all the mechanics worked out along with understanding of things like event dispatch, arrays, conditionals, string parsing, algorithms, the X-Y coordinate systems of the window. SO saying this is just sugar coated fruitloops is nuts.

    At the other end of the spectrum with things like Labview many scientists can go a whole career without having to code. it's a fantastic language once you accept it's constraints. Extremely good for both rapid prototyping and embedded instruments. It is the only language I would trust to edit in the middle of an experiment. You won't be writing a word processor or accounting system in it but it's not meant for that. But it's not sugar coated in what is meant for. The results are not a Toy.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  14. It's never been better. by shess · · Score: 2

    When I was in school, a typing/keyboarding class was a pre-req for the computer classes. It was not at all necessary, I did not _actually_ learn to touch-type until a decade later, and at that point I did it because I decided it was stupid to be looking at the keyboard when I should be looking at the code. But, you know, thank goodness I got to waste that semester on something which was basically useless and which was trivial to learn once I decided I needed it.

    Later, the "computer" classes in school had a strong dollop of learning how to use a word processor of spreadsheet. Which may be valuable vocational skills, but they were like a "Math for Living" class when the people forcing everyone to take them thought they were getting "Algebra II".

    Even later, it was how to create a webpage. Because HTML is certainly the future and we'll never have WYSIWYG tools to do the heavy lifting to let consumers build webpages easily.

    And that's in primary and secondary levels. You can get college-level "Computer Science" degrees having only demonstrated the ability to wire other people's code together. Again, a valuable vocational skill, but _not_ computer science.

    I'll give you two opinions about why this happens. First, being able to write code is no more nor less useful than being able to fix plumbing - when it's useful, it's wicked useful, but if that's not your job, you'll probably never develop enough expertise to solve problems you actually see, as opposed to hypothetical classroom problems. Second, the instructors at the primary and secondary level generally don't themselves have enough understanding of the topic to be able to successfully teach it. Which isn't a bad thing, because as I said, it's not a worthwhile thing for most people to develop an understanding of the topic.

    Of course, in the end this isn't really much different from many other topics taught in schools. Most people don't ever need to analyze a work of fiction, or calculate the remaining angle in a diagram from the given angles. A big difference is that geometry in 2050 is going to be very similar to geometry in 1750, so you can productively teach the skill based on hundreds of years of doing it, and insofar as it is useful at all, it will continue to be useful. Most of the vocational computer-related stuff they teach today didn't exist 10 or 20 years ago, and much of it won't be useful in 10 or 20 years. The decades-old stuff which is still useful to me as a professional is the esoteric knowledge, not the applied knowledge.

  15. more than text files by OrangeTide · · Score: 2

    Coding doesn't have to only be about editing some text files and running them through a compiler. This isn't the 1970's.

    I've built my entire career on C and Linux. So my workflow is about editing text files all day, but my way isn't necessarily the only way or even the best way.

    --
    “Common sense is not so common.” — Voltaire
  16. Glue it, internet it, breach it by raymorris · · Score: 2, Insightful

    > on one side of he scale and bits and pieces that require just gluing

    Some gluing together projects are useful. People did some good stuff with HyperCard and shell scripts. Shell scripts are a great way to glue pieces together.

    What has changed is that now almost all software is on the internet, where they are attacked 1,000 times per day by script kiddies with tools that automatically looking for gluey buts. So shell scripts are now called "remote code execution vulnerabilities ". This is a real problem.

    In many fields, including electronics, hardware, pyro, etc there are two classifications of materials and technicians: standard and "life safety". Standard equipment is labeled "not for life safety applications ". Sometimes I think software (and programmers) need a similar distinction: "can hack together some code" vs "internet exposed ".

  17. why isn't drag and drop coding? by superwiz · · Score: 3, Insightful

    More importantly, why isn't it learning to code? Who said that text is how instructions have to be given on how to generate compiled code? And anyway, typing is not really coding. Only putting holes in punch cards is real coding. It's even more effective and has more reuse than text. You can use the same card or reorder cards around if you want to create a new algorithm. Oh, but, the historical coincidence of the widespread typewriters and emergence of electronic controls existing at the same time is what "programming" must be? Well, I learned to program from comics which had lessons and posed challenges. I wrote programs by hand on paper long before ever seeing a computer. Was that "coding"? Because most people around me thought that not writing a program out on paper and checking it before inputting it into a computer created bad habits in programmers. It made them too lazy and impulsive. It produced programs which had too many bugs. Sounds familiar?

    --
    Any guest worker system is indistinguishable from indentured servitude.