Code.org Disses Wolfram Language, Touts Apple's Swift Playgrounds (edsurge.com)
America is changing the way it teaches computer science. "There are now 31 states that allow CS to count towards high school graduation," according to an announcement this week by the White House, while a new Advance Placement course "will be offered in more than 2,000 U.S. classrooms this fall...the largest course launch in the history of the AP exam."
But what's the best way to teach coding? theodp reports: Tech-backed Code.org, one of the leaders of the new CSforAll Consortium that was announced at the White House on Wednesday, took to its blog Thursday to say "Thanks, Tim [Cook], for supporting the effort to give every student the opportunity to learn computer science," giving a shout out to Apple for providing "resources for teachers who want to put Swift Playgrounds in their classrooms. (A day earlier, the White House said Apple developed Swift Playgrounds "in support of the President's call to action" for CS for All).
Curiously, Code.org CEO Hadi Partovi argued Friday that "the Wolfram Language has serious shortcomings for broad educational use" in an EdSurge op-ed that was called a "response to a recent blog post by Stephen Wolfram" on Wolfram's ambitious plan to teach computational thinking in schools. Partovi's complaints? "It requires login for all but the simplest use cases, but doesn't provide any privacy safeguards for young children (required in the U.S. through legislation such as COPPA). Also, a serious user would need to pay for usage, making implementation inaccessible in most schools. Lastly, it's a bit difficult to use by students who struggle with English reading or writing, such as English language learners or early elementary school students."
The submission ultimately asks how should computer science be taught to teenagers. "Would you be inclined to embrace Wolfram's approach, Apple's Swift Playgrounds, Microsoft TEALS' Java-centric AP CS curriculum, or something else (e.g., R, Tableau, Excel+VBA)?"
Curiously, Code.org CEO Hadi Partovi argued Friday that "the Wolfram Language has serious shortcomings for broad educational use" in an EdSurge op-ed that was called a "response to a recent blog post by Stephen Wolfram" on Wolfram's ambitious plan to teach computational thinking in schools. Partovi's complaints? "It requires login for all but the simplest use cases, but doesn't provide any privacy safeguards for young children (required in the U.S. through legislation such as COPPA). Also, a serious user would need to pay for usage, making implementation inaccessible in most schools. Lastly, it's a bit difficult to use by students who struggle with English reading or writing, such as English language learners or early elementary school students."
The submission ultimately asks how should computer science be taught to teenagers. "Would you be inclined to embrace Wolfram's approach, Apple's Swift Playgrounds, Microsoft TEALS' Java-centric AP CS curriculum, or something else (e.g., R, Tableau, Excel+VBA)?"
everything else does. in public schools in USA
If you want to program in Mathematica, you have to buy it. Most use is geared towards annual fee. There is no open source version of Mathematica. This greatly limits its appeal, regardless of the languages merits.
Some coding can be, but even that should be limited to those that really want it. It is not even remotely similar to reading, writing and basic math. Most people do not need coding, will never be any good at it and trying to tech it to them is a complete waste of time. Might as well teach bridge building or how to sew up a cut to everybody. Sounds stupid? That is because it is.
Some things are jobs for specialists that have the aptitude for it, because anybody else will never be any good at it. Coding is such a thing. CS even more so.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
The main problem I think we face is that we appear to be very near the tipping point where "programmer" won't be a job -- it'll be the result of an expert system.
These neural-like-systems are already picking the right thing out of an image, out of speech, out of all the go moves possible -- with training. How long do you really think it'll be before one of them is trained on a metric shit-ton of code, and then asked to pick the right code to solve the problem... and then succeed?
Driving, lawyers, customer service, fast food... and more. Those are all looking very iffy right now, human-employment-wise. I think programming is a pretty solid target for exactly this kind of system already; the training is probably all that has to be managed. And yes, I write software, among other things. A lot of code (and particularly a lot of the code most people would learn to grasp in a high school environment) is really pretty simple, once you know how. So the only question is, how long before one of these systems knows how? And how far might they go?
Smells like social and economic change to me. Really does.
I've fallen off your lawn, and I can't get up.
What's simpler than programming Turing machines? Start with zeros and ones and then introduce Gödel numberings for string computations. There are online Turing machine simulators. THAT's teaching computer science.
Wolfram should not be considered as a starting language worthy of being taught to entry-level students OR considered to be a mission-critical language until there's an open source version of it. As long as the language remains a monopoly, it is useless for all intents and purposes. Having finally transitioned to a fully open architecture for apps, what LOON wants to go back to the proprietary lock-in days? Next thing you know people will be trying to run their businesses with copy-protected diskettes and God help them when they wear out.
Interesting topic, but my initial reaction is that they seem to approaching the topic sideways, focusing on some weird trivialities of the current implementations. Is there a label for a Hobson's choice with two options?
There are lots of good first languages for programming, and the focus should be on the outcomes. Actually, that would probably mean that different first languages will help different kinds of students become better programmers, and the apparent premise of one and only one as a standard first language is already fatally flawed.
My Subject: promised a defense of Python, but I'm not really qualified to give it... I like it and see it as a good first language, but I've been around for a long time and I've seen so many first languages come and mostly go over the years. Is anyone still starting with BASIC these days? I'm pretty sure that Fortran and Pascal have mostly faded into the mists of time, and I'm sure there were others that have faded so much I can't even remember their use as first languages.
Freedom = (Meaningful - Coerced) Choice != (Speech | Beer^2), and sad sock puppets' bad mods avail them naught.
a new Advance Placement course "will be offered in more than 2,000 U.S. classrooms this fall...the largest course launch in the history of the AP exam."
Are they still teaching Pascal for AP Comp Sci, by chance?
Now, get off my lawn!
Seriously, though, I don't remember anything that I learned my high school AP Comp Sci class (which taught Pascal), aside from discovering that I really enjoyed tinkering with computers to make them do different things.
Choose none of those named above, nor any other proprietary language or platform. It is quite incredible and irresponsible that someone would recommend bringing up children into a form of corporate mental slavery and proprietary dependency.
Give your children freedom. There is no shortage of unencumbered free and open source programming languages that will serve their educational needs very well indeed. Once they are young adults armed with some knowledge and experience, they can choose their own proprietary chains if they so wish.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
I normally never answer Slashdot questions, but I feel the urge to answer this one.
What would I teach? C.
You heard me. C.
As you may have guessed, I learned to ride a bicycle without ever having training wheels. The first language I learned was C. Kids should learn C. The ones that can't should never be programmers. The ones that can will be able to handle any high level language ever invented, including whatever wankery the Apples and Googles of the world come up with next. Teach them C. At the command line. All else is puffery.
I also feel obliged to respond to the blithering idiocy of the Code.org CEO. Early elementary students? Wtf are you babbling about you drooling moron? Coding has prerequisites. A student who wishes to learn code must read and write at least one natural language well and must know not only arithmetic but also elementary algebra. A student's first coding class will teach Boolean algebra. The combination of those three things is what coding is. Written language combining Boolean logic with algebraic equations. If you're not doing that, you're not coding.
Computer science is no more about computers than astronomy is about telescopes.
-- Commonly attributed to Edsger Dijkstra.
Most people do not need coding, will never be any good at it
Actually that is very, very wrong. Most people DO need coding.
Yes they are bad at it, but look how useful just knowing how to work excel is to tons of people.
Also over time, look how many personal database products have come and gone... in their time, each of those was very, very useful to a lot of people that did no other programming.
Each of those classes of products can do amazing things even in the hands of people who stumble around computer operating systems.
That's why learning some basics of programming is a really good idea for everyone, because everyone really can benefit from knowing some simple programming concepts in conjunction with task-dedicated tools. Even just for hobby, or home finance use.
Most people will not be doing programming with general purpose languages as we know it, but on the other hand those that are good at it may never discover they enjoy it if we don't try to teach it to everyone, and the value one good coder can bring is so substantial over a lifetime it's worth testing 1000 people to find - and in the meantime the other 1000 trying it out may learn basics that help them in other ways.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
At the "University of Waterloo" we like Python and JS... So we built [https://opencs.uwaterloo.ca] so students can learn programming... Seems some high schools are starting to use it.
Where do I sign up for my free Mac or iPad to use the Swift Playground? And of course, Windows and Linux are second class citizens for all Apple products and services so any kids without access to Apple products are treated like shit.
No they didn't. I was around at the time and it was like being a phlebotomist or a help desk technician today. Short vocational training and they let you loose to do your job. Because all three were rote tasks and required zero creativity.
HBI's Law: Frequency of calling others Nazis is directly correlated with the likelihood of the accuser being Communist.
(with apologies to Jackie DeShannon and Dionne Warwick...)
What the world needs now, is more shitty code
Lame developers throwing systems into safe mode
What the world needs now, is more shitty code
Javascript used to push out a fecal load
Lord, we don't need any more PHP
There is broken code, strewn enough, for us to fix
There is Python, and VB, and Ruby shit
Let's rewrite it all in Perl 6
I'd be ok with your viewpoint if we could have them all develop in Logo.
HBI's Law: Frequency of calling others Nazis is directly correlated with the likelihood of the accuser being Communist.
the semantics of the languages change (C++, Swift, Java) — but the type of thinking you need to see the effect of logical interactions is best introduced by getting students playing CHESS. it offers the ability to teach logic independent of individual language semantics which i would see as fundamental.
2cents
jp
The answer depends on your goal.
If you want to teach kids so they can get a job, any popular coding language will do.
If you want to teach kids what programming is about, any teaching focused language (such as pascal) might be appropriate.
If you want to teach your kids how to incorporate math, electronics, robotics, and computing into the rest of their lives...than I think a computational computing focused language and tools such as Wolfram Framework and Mathematica makes sense. The problem will be that there are very few teachers or parents able to teach it properly.
I'm homeschooling my kids and I've bought Mathematica for each of them. I'm reading the various howto guides and textbooks now to figure out how to teach it properly. We will be incorporating arduino type coding and using mathematica to supplement their math and science classes too.
I really hope you are kidding. While it is true that C teaches some very important low level concepts... those can be taught on their own, without the mess that is C programming. Pointers alone would present a major challenge for kids, adults who know how to program in other languages have problems with pointers, much less kids.
Not even a little bit. Pointers are precisely what I was thinking of when I recommended C. Pointers are fundamental to how the machine works. Learning them learns the machine. If you do not know how the machine works, you are a bad programmer.
As for teaching abstract concepts... Nope. Humans learn by doing. There's a reason there are exercises at the end of every chapter in a math book. In order to understand the machine, you must program the machine, and you must do so in a language that does not insulate you from the machine. You can be told about stacks and heaps and the von Neumann architecture, but until you scribble all over your stack with an out of bounds write, you don't understand it. Are pointers hard? Yes. Difficulty is necessary for learning. Does C's almost total lack of a standard library mean you're going to reinvent the wheel a lot? Of course. Students always reinvent wheels. It's how to learn.
I'm not saying that newly fledged programmers will be writing a lot of C. They won't be. I'm saying C is an appropriate, if not the appropriate teaching language. Their third class can be in Python. Their first and second classes should be in C.
[...] any kids without access to Apple products are treated like shit.
This is so true. I found in the 7th grade in 1983 that I came from a "poor" family because we didn't have an Apple ][ computer to do my homework and cable TV to watch MTV. My childhood was ruined. Damn Apple!
Maybe some kind of simple programming language elementary dealing with turtles? A command based system where you tell it to go 5 spaces, draw a line and turn and have the students predict where it goes?
Seriously, high-school= C. Maybe stripped down without any of that pointer stuff or, make that a separate class, and that covers the basic syntax of every other major language out there. I learned fucking pascal off a Mac LC and it nearly failed me in programming 101 in college cause no one used that stuff. But elementary students who can't spell and you want to teach algebra? Go with Logo. I might not remember much about pascal (till recently at-least) but I sure as hell remember spending hours in front of an Apple 2, trying to draw little people, then running them over with my turtle.
And YES. Strip out all that pointer stuff. To pass references, tell students to use &. I KNOW its not in the C spec, but anyone who as ever sat down and actually tried to teach someone programming realizes that people have problems with what a pointer is. I don't know why, but peoples eyes just glaze over. Its a complicated subject especially when you start throwing operator presidence in there like like *ptr++ or *(ptr-4). Those are just the basic examples. If you can get them to comprehend what a references are, then you are half way there.
If you can just get them to sit down and program something because they wanted to and not needed to, then they will learn themselves. Getting to that point is what everyone is trying to do. Just don't try to teach people flavor-of-the-month languages.
It's even worse, it won't run on Macs, and it's only for newer iOS devices running iOS 10.
Well, there's always the educational Microsoft Small Basic (too bad is not C#) and QB64, a remake of QBasic/QuickBasic (even the IDE...) for those who want to see Gorilla.bas and Nibble.bas running in Windows, Linux, Mac and even Android.
What is code.org and why should I care what its CEO thinks? Who gives a shit?
Code.org is a non-profit organization promoting the teaching of programming. They have wealthy benefactors, and are very influential. Whether or not you agree with their goals and methods, you should "give a shit" about who they are and what they do. You should also give a shit in general about STEM education. It is important.
Young english learners have the choice of learning Computer Programming using a Programing Language that closely resemble their native language: Livecode. It's Open source, Multi-platform (Linux, Windows, Mac, etc,) and Free for education and non-commercial uses. I just hope that, someday, people who speak other languages could have this choice too.
You are talking about learning the fundamentals to provide a solid baseline to support a thorough understanding of how machines work, and thus how code actually runs.
That's not the topic here, because it will prevent most people from learning. The opposite of the goal here.
I agree that C and assembly should be studied and learned, but your goal is winnowing out anyone who doesn't yet have the spark of interest, or who hasn't developed the kind of logic processing you can teach through programming.
Your plan will produce 99.9% non coders and .1% rock stars. Not the goal here.
If "most of the best" programmers you know only know how to create websites and mobile apps, maybe you just don't know any good programmers... Which would also explain why they have no clue about CS.
Quite correct
You should give a shit about who finds/owns code.org and what their motives are.
And if you think it is the betterment of children then you are not thinking critically.
Code.org is about to things.. Ownership of hearts and minds as early as possible, and the attempt to reduce software development/software engineering to a blue collar function.
This is quite clear by the mutual ego stroking of the members over their proprietary closed 'solutions' for education rather than a focus on simpler and freely available solutions that already exist.
Teach kids Python.
It's what you use to make computers do what you want, especially for user-facing tasks.
In 3 hours kids can go from knowing nothing about how code commands work to downloading all the pokemon art from a website with a simple .py program run from the terminal.
Thank you Dave Raggett
No student should ever learn a language that they'll never use again, period. It is just a fat waste of time, when they could actually be learning a language. You don't get any additional skills by learning a teaching language, but odds are you will learn some bad habits.
The Wolfram language fails this test pathetically, so anyone who suggests that we use it for teaching should come down off their ivory tower and see how the other half lives before making their arrogant pronouncements of superiority.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
I have a lot of various concerns. First, there is no shortage of programmers today. Their pay has remained relatively flat since 1995 or so when out source became the solution to all of U. S. industries woes. Sure, most of the employees are coming from other countries or being out sourced but having cheaper programming labor home grown may or may not help. If there is a glut, those people will be susceptible to abuses, low wages, and long hours.
"writing a programming" is not the same as computer science or even "programming" as a skill. I'm frustrated where I work. I have a BS and MS in CS. Some of the people I work with don't even have a high school diploma, some have trade school backgrounds, a few have a random college degree. Yes, they can "write a program" but they create more problems than they solve because they don't have enough depth. Good quality maintainable code isn't written by someone who writes a program. Its done by someone who really cares about the craft. I'm not arguing that a degree makes the difference but it is a first indicator of the depth of a person's interest. Creating a new set of low trained people who can write a program or two but are not actually interested in the art and craft of programming isn't what the world needs.
To that end, what the world of programming needs is a method of judging and grading the skill of a person who writes programs -- a management technique that works. Currently, the guy who talks the most gets the most promotions and usually they are the least talented. Tragically, this is also true for managers themselves.
As far as which language, it doesn't make any difference at all. I started with TI programmable calculators. What is needed is a magic spark to create an interest in a person. Most people believe that that magic spark is "fun" but I'm very dubious about that belief as well. "fun" lasts for a weekend (ala Pokemon Go). The person needs to find it "interesting" -- somehow, someway. Making it "useful" to them is even better. I don't think a given language will spark a higher percentage of people than any other given language. A few will find GUI bullshit useful, some will find it fun. But some students actually are curious what three dimensional conic sections look like and don't care the least about GUI clicky things.
What I'm finding a shortage of is basic diagnostic abilities... debugging methodologies. People today simply do not know how to narrow down and find where a problem is. They can not differentiate between problems and symptoms. They don't know to change only one thing at a time, keep careful notes, and methodically eliminate various sources of an issue until the real root cause of the issue is found. I'm not talking just about programming but basic life things like when a car or a smart phone acts up.
Indeed, I would say that the current push for more people who can write a program is a perfect example of treating a symptom rather than fully understanding what the problem is. What exactly is the problem that will be solved when everyone can write a program or two?
When I was in school, around 8th grade or so, everyone took an art class. Did that make us all artists? I would say not. Did that even create a basis where all of us can appreciate good art? I would say no to that as well.
Free for Education:
Total cost to school?
Can kids download for FREE to their home PC/Laptop?
Does Swift Playgrounds run on Linux or Android? [FREE for Education?]
What type of Hardware is needed for Swift Playgrounds && How much does it cost? [$350/hardware?]
How much does Rasberry Pi3 or Odroid cost? [Hardware && Software? $25 - $35?]
1. What type of programming tools is available for kids?
2. How do kids do extra credit/Homework, can they bring the Hardware Home, Download for Free, Run in emulator?
What if my kid is more interested in CS class than FootBall? Do they have to wait til they go to school the next day for their CS class?
3. Does Code.org looking for a FREE Solution for kids to learn or does it create HUGE dents in the school's budget?
4. Is it possible for Schools to partner with Linux for a Cheaper Solutions for CS Classes? [Exampe: Red Hat, Suse, Ubuntu, Linux Foundation, etc]
5. If Governments are deploying Linux, should Schools partner with Linux so kids can find a job after graduating?
6. Is there another Organization that can provide a better solution in reducing pricing for Education like FREE.
What is important is to teach how to create the algorithm, the logical steps, in the first place. Not the actual language that was used (C was just starting to get rolling when I was learning languages, and Pascal was huge). Teach algebra and geometry. Teach trig. Use word problems. Have the student learn how to take a stated problem, break it down to steps needed to solve, and then implement the solution in any language - even pseudocode.
It is this process that enables all programming; learning a specific language or toolset is irrelevant. Learn how to think logically, to analyze a problem, and how to create a flow for the problem is what matters. And that can be done with simple high school algebra, geometry, and trig.
Browsing at +1 - no ACs, I ignore their posts. So refreshing!
the attempt to reduce software development/software engineering to a blue collar function.
What's wrong with that? A blue collar machinist who can write g-code for a CNC lathe, is going to earn a lot more, and be more productive, than another machinist that can only operate it manually. Plenty of blue collar workers could benefit from knowing how to code.
Nailed it.
Having done both, there's a lot of difference between gcode programming and C++ programming. gcode is normally used to write very specialized programs which directly control physical actions. Many gcode programs are just cryptic-looking transcriptions of manual operation, and the difference between the machinists you mention is basically if they're literate in gcode. C++ is used for much more general programs and has a lot of facilities to handle abstraction.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
But we aren't talking about C++ programming, just the most basic concepts of coding in general.
The gcode programs I've seen are basically recipes for moving stuff around in the mill. A casual knowledge of cooking will give someone enough experience with the ideas behind programming gcode.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
That you create an analogy of "recipes" doesn't mean casual knowledge of cooking will mean people understand how to write gcode. But it's not even just that, if you're a mathematician, physicist, chemistry researcher, visual effects designer, CAD/CAM/CAE experts and even CAD designers these days you will be coding to some degree so learning the basic concepts early is most certainly advantageous.
You were claiming that there's a significant difference between someone who can write gcode and someone who has to manipulate things manually, and I don't see it. Milling is complicated, and even if you understand the gcode you won't necessarily understand what's going to happen inside the mill. If someone can operate a mill manually, they can almost certainly write down what they're doing in gcode with a little training. Obviously knowing how to cook and knowing how to use a CNC mill are very different skill sets.
Your list of jobs that may require programming isn't all that long, and the jobs aren't all that common. They aren't very diverse either, most being in STEM fields. For someone who's going to be a physicist, I would recommend learning something about programming. For someone who's going to be a chef, I'd recommend skipping it in favor of something else.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
You were claiming that there's a significant difference between someone who can write gcode and someone who has to manipulate things manually, and I don't see it.
Well I don't think I was but I would say it is true, if you can automate it rather than having to do it manually there most certainly is a significant difference.
Milling is complicated, and even if you understand the gcode you won't necessarily understand what's going to happen inside the mill.
Nobody said you would.
Your list of jobs that may require programming isn't all that long
It's not all that comprehensive either. Do you actually have so little exposure that you think that list really is everything? Surely you're not going to pretend you're that ignorant now are you?
For someone who's going to be a physicist, I would recommend learning something about programming. For someone who's going to be a chef, I'd recommend skipping it in favor of something else.
There are a lot of things you learn in school that aren't applicable to every field of work. The point is coding is becoming a part of more and more jobs as time goes on - which is obvious if you've been paying attention - so saying "no no no we shouldn't expose people to coding in high school because they might choose a career where you don't need it" is pretty short-sighted.
What I'm saying about the CNC mills is that the step from being able to do things manually to being able to write basic gcode is very small, and doesn't need exposure to programming.
Also, while being able to do some sort of programming is important in quite a few jobs, there are plenty of jobs where it isn't. Computer science should be made available as an elective, to expose students to programming and give them some idea as to what computers can and cannot do. I don't think it should be required.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
Also, while being able to do some sort of programming is important in quite a few jobs, there are plenty of jobs where it isn't.
But as we have seen the list of jobs where it is important is growing, in some jobs where it previously wasn't used at all it is now commonplace.
Computer science should be made available as an elective, to expose students to programming and give them some idea as to what computers can and cannot do. I don't think it should be required.
Computers themselves are used in far more places now than ever before and coding gives a basic understanding of how they work, it's a very good way to get people familiar with computer use. Like I said, just because you learn it in school doesn't mean it is going to be applicable to everybody's life or job, coding is no different to those other things.