Who Will Teach U.S. Kids To Code? Rupert Murdoch
theodp writes "For all of their handwaving at Code.org about U.S. kids not being taught Computer Science, tech execs from Microsoft, Google, and Facebook seem more focused lately on Plan B of their 'two-pronged' National Talent Strategy. So, who's going to teach your children CompSci? Enter friend-of-the-Gates-Foundation Rupert Murdoch. Murdoch's Amplify Education is launching an AP Computer Science MOOC this fall (Java will be covered), taught by an experienced AP CS high school teacher (video). An added option, called MOOC Local, will provide additional resources to schools with students in the CS MOOC. MOOC Local will eventually cost $200 per student, but is free for the first year."
Some of the subjects that will be included are:
* wiretapping for beginners
* how to put up ineffective paywalls
* how to run a thriving social media network into the ground
Of course, being a "computer science" class (by which I'm sure they mean "ICT for dummies"), there won't be some of Rupert's other specialties. Such as:
* How to influence people by a coordinator national campaign by the newspapers and other media you own (and thus ensure a victory for the side who promised you the most in the next election)
* How to lie, cheat and steal your way out of trouble
* News? We're not a news channel, we're an entertainment channel. And we'll take it to court to ensure we can lie while pretending it is news.
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
When are people going to realize "coding" != "computer science"? (or <>, or ! .equals(), or ne, etc. depending on your flavor). Nothing against Java devs, but IT needs a little more than programmers in language X. There are millions speaking English, Spanish, etc., but not that many of them churn out bestsellers, or even mundane but usable prose. You're certainly not going to make good or even adequate writers by (only) teaching a language. You're not going to improve the IT industry by training a million more monkeys to (only) tap away at a million more keyboards.
But perhaps Oracle does like to see an increase in their user base.
[OK, rant over]
Free, as in your money being freed from the confines of your account.
Let them teach themselves. That's how many of the current generation of programmers got started. And it's even easier now than it was before. There are so many free resources on the internet to get you started. If there is any direct teaching, it should be in programs outside the regular school curriculum. More free day-camps and stuff where teachers can teach without having to worry about state imposed curricula. Students are free to be there or not to attend so you have kids who (mostly) want to be there, which creates a better learning environment for all. Most people I know who are good at anything aren't good because of what they learned about it in school, but rather what they did outside school to further their own learning.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
As the profession of software development matures, I increasingly question the value of teaching coding first. That gives the illusion that once you know how to code, you are ready to be a developer.
In my opinion, that approach is what has led to the pervasively vulnerable infrastructure of today. People think that because they can make something work in PHP, that's all there is to it.
I'm suggesting that teaching kids to attack and exploit vulnerable systems first might be more valuable. Once you understand the basics of that, you become powerfully motivated to avoid writing vulnerable code. And as you probably know, you need to learn some programming anyway to be an effective attacker.
I realize this will never happen. There are lots of people who would say, "Oh, noes, we can't teach kids to hack! They'll do something evil!" I would reply, if you are seriously afraid of having your systems compromised by high-school kids, then you should agree with me on the importance of teaching defensive programming early!
[Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
Computer science as much about coding as astronomy is about building telescopes ...
When are people going to realize "coding" != "computer science"? (or <>, or ! .equals(), or ne, etc. depending on your flavor).
I think it'll happen when you read past the Slashdot title to the summary, and realize that the article is talking about computer science and that the whole "Who Will Teach U.S. Kids To Code?" this is a fabrication of the submitter/editors.
Nothing against Java devs, but IT needs a little more than programmers in language X. There are millions speaking English, Spanish, etc., but not that many of them churn out bestsellers, or even mundane but usable prose.
This is probably the most elegant argument I have ever seen for teaching algorithms, big O notation, and other theory topics, instead of languages, which is a switch most U.S. universities made after the decision was forced by the accreditation change in the late 1980's.
And it's absolutely, totally, completely wrong.
A craftsman must know his tools.
You need to learn at least one language deeply enough that you have a feel for the calculus of the language, and how to force it to represent any CS concept you want it to represent. Ever since they stopped teaching languages as a subject because they could no longer offer credit hours for doing so, the U.S. has been mostly turning out crap coders, except at schools like Brown that have self-directed programs where you can actually still learn a language from an expert practitioner.
A secondary consideration is that, when programming in a high level language, you should know what's happening under the covers. Java and other "pointerless" languages are an incredibly poor choice for doing that. So I agree on your condemnation of teaching the Java language, but it's for a reason other than the one you cite. The best way to understand what's going on under the covers is to use a high level language which compiles to assembly, and stop after the compilation to assembly; "cc -S" does this, although C isn't the only language in this category. Which brings me to the second point: apart from learning a single high level language to a great depth, it's also necessary for the student to learn an instruction set for a particular architecture, which, given prevalence, is going to mean either x86 or ARM these days. If you can't look at the high level language and know what assembly is likely to be generated from it, you do not understand your high level language. Without a grounding in assembly language, you are never going to have an intuitive grasp of memory layout or pointers, and if you learn "pointerless" languages, particularly ones with garbage collection, you may be able to program them, but you aren't going to be able to write a runtime for them yourself, with no intrinsic idea of memory layout, reference, or management.
Which leads us to our third consideration, and the one that gets in the way of problem solving using computers as a tool, which is really what we are trying to teach when we talk about teaching "computer science" or "coding": You need to repeat the process with a second high level language that also does not target a virtual machine. Only by being able to contrast the two calculus of the different languages are you going to be able to generalize in terms of an arbitrary computer language being able to be applied to a problem set. There's a reason that mathematics courses teach both Newton and Leibnitz style calculus to students, and it has nothing to do with not being able to solve problems with one that you can with the other. It has everything to do with the ability to generalize theory across systems.
The fourth and final consideration is algorithms, big O notation, and other topics, and how to represent them in your high level language. Yes, you need to learn this, but you need to learn it in a context of a language calculus, since throughout your career, if you end up coding, you will be called upon to translate these concepts to the
Bingo. Big Business doesn't like it when supply and demand works against them. Developers are in-demand, and usually when something is in-demand, the price for that thing goes up (in this case, salary and other compensation). They hate that. Money is for the executive golden parachutes, not the people who do actual work. So, by increasing the supply, you tend to lower upwards salary pressure. It's the same reason why they love H1-Bs so much; they'll accept lower pay, which has the effect of downward pressure on salaries.
However, it's all kind of based on a false premise anyway: the impression that they want you to have that there aren't any workers with the required skills to fill the jobs. This is bullshit. The problem is that there aren't enough workers with the required skills that are willing to accept the money the employers think they're worth (which is waaay below market). So, Big Business whines to their (wholly-owned) elected representatives to get more H1-Bs, and in addition they sponsor programs like this to give the students the impression that they "owe" them something in the form of taking a lower salary. It's all just about money; there's no philanthropy here.
Yes, and no. It's important to them that you have the debt that usually accompanies a college degree; the degree itself, as you indicate, is meaningless. People with huge non-dischargeable debt are more willing to put up with poor treatment by their employer. If you're debt-free, and your boss tells you you now need to do the work of three people, you can much more easily tell him to fuck off as compared with someone who owes $60,000 in student loans.
The concept of the 'worker as interchangeable cog' meme is not specific to the tech world, as you probably know already. Case in point: The nurse population is rapidly greying in this country. Nurses that have four decades of experience tend to be at the top of their salary range. Hospitals look at that and say "Why are we paying this one person so much when we can hire three CNAs to do the same work?" The difference is that CNAs are intended to be assistants, which is what the A in the acronym is (Certified Nursing Assistant). They're not intended to provide care themselves; they're trained to do things like clean toilets and rooms in a care-ready way. But all management sees is dollars and cents; at the vast majority of hospitals, the administration has put patient care on the permanent back burner in order to focus on what they really care about: money. Hospital administrators typically are lawyers and accountants, they have no ethical responsibility to the patients. They also see nurses as interchangeable; they see nothing wrong with a nurse that's worked in oncology for twenty years being told to fill in in the ICU. After all, a nurse is a nurse, right?
Never underestimate the power of stupid people in large groups.
All the amazing programmers I've ever known started out self taught. They all have a back-story about how they had "this old machine.." or they would "go into computer lab on study hall.." or "..spent hours typing in the code out of the magazine..".
I don't think you can effectively "Teach" programming as a large portion of it is right-brained, but making some sort of CS syllabus available is a great idea for kids that actually want it. With all the action to abolish public education, I am dubious about any suggestions founded by capitalist juggernauts.
Join the Slashcott! Feb 10 thru Feb 17!
I took AP computer science in high school, myself, and it really wasn't programming, it was pretty much the same as a college data structures class (arrays, linked lists, trees, sparse matrices, searching and sorting, etc.) Going straight into that without some earlier programming foundation doesn't really work so well. We need to start kids earlier to really get proficient.
The logic skills needed to code can be developed, too, but it needs support much earlier, including in elementary school math. I remember in 2nd-4th grade, our textbook was called "sets and numbers," and we did a lot with set theory, which my son's school hasn't. There are tradeoffs: he was into algebraic equations in 4th grade, which I never did until at least middle school. But overall it seems like he's had less emphasis on logic and discrete math and more on general/continuous math. My wife and I have tried to supplement it, but it isn't really standard anymore, where we live.
Anyway, if kids get enough practice with sets and set operations in elementary school, then logic operations a bit later (which and teach them how it's really the same, AND = intersection, OR = union, etc.) and throw in a few other concepts like variables, then they should be ready to start getting some early programming classes in middle school, which will stick with them a long time.