Hacker News new | past | comments | ask | show | jobs | submit login
Code.org – Dedicated to growing computer programming education (code.org)
509 points by sethbannon on Feb 26, 2013 | hide | past | favorite | 181 comments



Still with the learn to code meme? In addition to all the reasons that @codinghorror raises in http://www.codinghorror.com/blog/2012/05/please-dont-learn-t..., I have a one more to add.

The altruism of it all stinks. The meme is being pushed by parties (non-profit or not) looking to gain from teaching people to program (after convincing them that they absolutely should). While it's true that learning to code is beneficial to some (I don't doubt that) no one talks about how these friendly, helpful, code tutors might be exaggerating the demand for reasons of their own. While you might be trying to help people out, you're also trying to push your startup or non-profit.

I like the idea of better aligning education with job demand; something I don't think higher education institutions are particularly concerned with. That's practical and I wish we did more of it. Similar to these learn-to-code websites, colleges could care less what you do with yourself after you've paid your tuition.

What I liked about the code.org celeb video were the recollections of first programs. Like a first kiss, you never forget your first program. No matter how simple it is, that feeling is awesome. And if you're made for it, you want to do more, you want to make it better. That's the spark that, if you have it, puts you on the unending journey to being and becoming a coder.


"The meme is being pushed by parties (non-profit or not) looking to gain from teaching people to program (after convincing them that they absolutely should)."

I believe Douglas Rushkoff was pushing it at least a year before any such parties existed, in his book Program or Be Programmed: http://books.google.com/books?id=SB474JCHewcC


Yeah. I enjoy coding, although there is zero financial incentive for me to do so. It's just something I happen to find pleasure in.

Would certainly be nice if others similarly inclined can experience it, but the whole "literacy" meme is simply annoying at this point.


I wonder if children will watch this video and think that if they learn to code, then they'll get to work in swanky offices with free salad and skateboards...


We should also encourage HCI and usability design sensibilities as a technical vocation kids can pursue if optimizing sorting algorithms and the like isn't for them. Making things easier to use, why things are a pleasure to use and why things aren't is a stimulating field that is very applicable to a computerized future.


100% agree. There is a lot of value in understanding usability design that I wish I had been presented with younger. I really wish I had the opportunity to choose some form of technical skillset as an elective in high school. I was only offered a choice of visual arts (photography, art, and ceramics).


This. Even as a guy whose main interests lie in theoretical aspects of computer science, I need to learn of this stuff.


I'm making www.codehs.com which is one of the sites featured in the video (the one with the dog). It would be awesome to get some feedback on what people think of it if you get a chance to try it out.

We're focusing on making it really fun and accessible to learn to make really cool programs really quickly while learning the fundamentals and getting a strong programming foundation.

One of the keys to our site is that tutors look at and give feedback on all the code thats's submitted by students, so if you're interested in helping kids out, it would be awesome if you wanted to help tutor.

We're currently testing out and building lots more tutor features, so your feedback and ideas would be greatly appreciated. Go to http://codehs.com/tutors/ to sign up if that interests you at all.


I see you guys are charging students a monthly fee for "unlimited help" from the tutors, but I can't find any info on your site about how much the tutors will be making from that income stream for the value they're providing to your site and the students. Can you elaborate?


Yeah, we're still working on exactly how tutors get paid. For now, it's still in beta, so we're just asking for volunteers and getting feedback and figuring out a fair way to pay people.

One thing we are planning to do (in addition to just paying cash) is to give students credits to continue learning and getting help from tutors when they help students who are further behind than they are. That way, students can help each other.


That's a neat idea. Just please be aware of the danger of extrinsic motivation crowding out intrinsic motivation. People help each other on the internet all the time without any reward apart from doing The Right Thing.

Giving credits for getting more advanced help sounds like a good idea, though.


Thanks! yeah, we're hoping that professional software developers will help out just to feel good and help people. The extrinsic motivation is more for the students who can either learn more by helping others or make some money as a high schooler working flexible hours from anywhere.


To be honest I really don't see much value add from these online teaching centers. All that's needed is the desire to learn to code, once someone has that, I think it's pretty easy to get the help and info you need (for free) already.


you'd be shocked at how many ways people who don't code can get stuck when trying to learn.

Many times, they can't even form their question any better than "My code is broken. What do I do?"

Having someone human there both gives them the answer much better than they can find themselves and gives them the knowledge that someone is there to help them, so they don't give up.

Yes, some people will be able to figure things out themselves, but having someone to help the rest of the people can be invaluable.

I've taught intro CS for three years at Stanford, and even there, most students get stuck and need help to get through the intro class. The reason they have been able to (the intro CS class is the most popular class at the school. About 90% of all students take it) is that there is an extensive support network of student TAs that are there to help them.

We're replicating this online for all the "normal" kids who can't just "figure it out" themselves without any direction.


> Having someone human there both gives them the answer much better than they can find themselves and gives them the knowledge that someone is there to help them, so they don't give up.

Yes. Even if the human doesn't actually give you the direct solution to your problem, but just reassures you that you are on the right path and with a bit more thinkingn you will overcome the current obstacle. (Or points out to you when you are blatantly wrong.)

Having confidence that there is a solution is often half the battle to finding one.


It isn't. I taught my self how to code, and have a 100 field array class for ints to prove it. (Literally, public int a1, a2, a3, ...)

Don't underestimate the utility of a teacher.


I am mostly self-taught, but I benefitted massively from having some programming friends when I was in my initial stages of learning.

Later I had been on the other side, too, having acted as a mentor for some learners. There is value added in connecting people. Just instilling the right values, and culture, and giving people pointer to the right resources. (E.g. friends don't let friends start off with PHP.)


Could you tell us more about your business model? Because I don't like this very much: http://codehs.com/pricing

What do you think about the Khan Academy CS stuff?

It is a tricky business you are in, but could work out very well if you can harness the power of community. You should focus on this idea "give students credits when they help students who are further behind than they are".

I would suggest a slight change in the term "credits" to distance yourself from the money=knowledge associations. Think more "pay it forward" economy where you earn points by helping others. Seeding the economy with a bunch of paid Tutors could get the economy started. Tutors will just earn "help points" in the system like all other students but they will sell them to you.

To get an exchange economy going you will probably need to move away from the crippleware approach(http://codehs.com/pricing). You should offer the real service (answering questions when you are stuck), and after users use up their free points ask them to help others.


Yeah, we are definitely planning to switch to more of that system for a pricing model, and we are not happy with our current pricing. It was kind of an MVP for pricing to get something up there that is fairly reasonable as we're getting going. Thanks for the ideas!

In terms of the Khan CS stuff, I think their editor is really really cool. They have a lot of cool real time features and number scrubbers and color pickers. I think it's just a very different approach to teaching than we have, where theirs is very much based on tinkering, which I, personally, don't think is as good. Definitely a really cool tool though. We've gotten a lot of ideas from it for how to improve our editor.


I looked at the video; did not register for it. I've been working for a while at a very similar idea (basically porting rur-ple, another Karel clone which I wrote 8 years ago, to the web) ... but I intend for it to be free. Kudos for you to want to create a business out of it, but my aim is simply altruistic.


My grandfather took the time to teach me some BASIC back when I was around 7 years old, and it led to my career. I've been working at teaching programming to my kids as well, but the video here inspired me to give the same chance to other kids...

I contacted the principal at my kids elementary school and offered to use my expertise to help any way I could. We get so caught up in what we're doing, it's easy to forget that just a small bit of effort can have a significant impact on peoples lives.


The video is worth watching.

I like this initiative. For some reason it brings up a lot of cynical responses, but if you really think about it, it's a pretty good thing to encourage young students to learn at least some coding.


I think it's a good initiative as well, but the video over-glamourises it a bit I think. Particularly the bit about how awesome the offices are. That's not what the typical programming job is like, that's what working for Dropbox is like. Plus the wishy-washy metaphor of a blank wall and opening doors, comparing it to sport, NBA players and Will.I.Am promoting it...it downplays the technical skill requirement ("you don't need to be a genius"), and emphasizes too much the creative aspect of it.

As elitist as it sounds, there are lots of people who simply just can't program [1], and promoting programming as this lucrative, creative endeavour that doesn't require much skill might misguide people into career paths that don't suit their skill set. Not to mention introducing a bunch of terrible programmers into the workforce.

[1] http://www.codinghorror.com/blog/2006/07/separating-programm...


While I agree with your point, Code.org could make a lot of strides with a group you did not acknowledge in your comments: those who could be programmers if they were shown the interesting parts of the field and industry, not the overly-academic side.

For as many people that might be brought into programming who can't actually do the work, the goal should be to bring in just as many if not more people who never realized they could do the work and enjoy it.


One possible reason for the cynicism is that an increase in programmers results in an increase in competition for lower pay.


I don't think this will result in a flood of for-reals programmers any more than math or writing courses result in tons of mathematicians or writers. What it could/should result in is a future generation of people who even if they don't seriously pursue programming are at least able to hack together scripts to automate tasks that are important to them, just like they are now (hopefully) able to do enough math to get by or enough writing to communicate ideas in whatever field.

So I'm in support of the idea fully, though like barbs I think the video is fluff marketing bullshit that paints an inaccurate picture of most software development.


There is quite a bit of focus on the jobs aspect here, which will inevitably push people towards the business.

When I was a student, there was a similar push for teachers (a field also having a shortage of people at the time). The result is that I have several friends who are fully qualified to be teachers that haven't been able to find work in the industry for many years now.

I agree that simply having programming in school isn't going to see everyone becoming programmers. Programming has been offered in the schools here since at least my father's time – though there does seem to be a disproportionate number of programmers come from my region, for what it is worth. However, code.org specifically does seem to come with the purpose of trying to bring more people into the industry.


If the US were to integrate coding into the school curriculum, our K-12 schools could rise to the global ranks that our university system currently occupies. But it can't just be an addon elective, it needs to be integrated across many subjects. So much of learning that's considered to be dull or boring can be made fun with programming. Write a program to simulate a ball flying through the air and aside from giving students the building blocks to make their own games/animations, they've also learned about gravity, projectile motion, and maybe even calculus. Add some wind into the mix to learn about resistance. Write a simple program that simulates cells dividing and you've got some biology and math happening. Creating some basic tones and sounds with code is a frighteningly tiny distance away from learning about music theory.

The software platform could be open sourced. Maybe even written in the programming language that students work in so students could modify it and submit patches, but also to mess with their little minds and get them thinking about self-hosting compilers.

And how much would this cost if done correctly? It's probably a terribly small figure per student over the course of their education. It may even save some money on textbooks if it's a tablet device to double as an e-reader. Maybe even more if those textbooks were open sourced and not sold at laughable prices... It's amazing how far we are behind at present.

My fear is that people assume (good or bad) that every student will come out a programmer, which is just missing the point. EE/CS degrees would be worth even more in such a world.


Your examples of dull and boring subjects seems like a list of interesting and exiting projects.

Newtonian physics (generalized from projectile motion): Using with these 3 obvious facts (maybe a historic tangent on how they are not obvious), we construct new rules that describe the way things work. Don't believe the results? You agree with these 3 assumptions right? Is their any flaw in your work? Then your result is correct, is their a way we can go about testing it?

Good job working with Newtonian physics. Now, say that their is wind blowing 5 mph east, how does this effect our results? Well, the coefisiant of wind resistence for sufficiently slow speeds are _. Wait, we already know how to do this, this is just another force, moving on...

If you take a code first approach, you routinely miss the good stuff.


Why are Javascript CRUD apps more interesting than learning how the world we actually live in actually works? I don't know, seems subjective to me.

Most of this "math is too boring for anyone to want to learn" stuff is a cultural issue anyway. It also might be a mass education issue. Either way, programming is not some special snowflake subject to solve such issues.


We need to push two major initiatives in education: the ability to code and the ability to manage finances.


America has a problem where if students were taught about proper financial management and making proper financial decisions the college system would fall apart, because students are expected to commit to huge debts that are often very questionable decisions. The system relies on students never understanding the magnitude of the debt they're committing to, spend 10 minutes reading the personal finance subreddits and it's shocking to see the $200,000 commitments 18 year olds were allowed to make for fluff degrees.

England lacks proper financial education too, it wasn't until I was 18 that I found out how taxes worked, up until 18 I thought the taxes paid were flat rate (eg: 20% on everything or 40% on everything, vs. 20% on the first x...). Recently the company I work for offered me a pension plan, after talking to a financial advisor I discovered just how valuable starting a pension young is, up until that day I thought a pension shouldn't be a consideration when young. Super simple and super important things, completely ignored by education.

Thankfully for England there is a really great consumer rights person called Martin Lewis that does a bunch of consumer finance things and recently he's been pressuring the government to introduced compulsory financial education to schools and it very recently was confirmed there will now be compulsory financial education in British schools: http://www.moneysavingexpert.com/news/family/2013/02/financi...


I don't think the college system will "fall apart". Great universities existed in the US even before the recent education bubble.

I do hope more young Americans realize the magnitude of obligations that they commit themselves into though. I've heard many stories of students enrolling in an expensive arts degree and then dropping out later as they realized just how much they would owe at the end of 4 years.


I don't even think the system would fall apart as is. We'd just see people looking more seriously at community colleges and other options that have better value for cost.

Or at least they'd be looking at different ways of financing college that didn't leave you with an incredible debt burden that prevents you from establishing a reasonable rate of savings.


"Great universities existed in the US even before the recent education bubble."

Great universities are a tiny minority, and you're right -- they'll likely be fine. Likewise the local community colleges that focus on teaching and job skills.

The Southeast Directional States, on the other hand, are in big trouble.


Coding is probably the easier one to achieve. Very few people have an interest in making sure you never learn to code.


It's not financial management that is the core problem. It is the notion that money is just an inconvenient formality that comes with getting whatever one is told one wants by relentless corporate pressure. It's a positive feedback loop that pushes prices higher and higher as demand is pumped harder and harder which makes people take up more and more debt to keep up.

What needs to be taught is delayed gratification, not needing everything and anything that will just get discarded or disregarded five seconds later. That, that right there, is corporate America's nightmare, Americans that stop squandering their money on inconsequential things. Could you imagine what would happen if Americans even started..... dare I say it.... save money.


I think that delayed gratification IS a fundamental part of financial management.


Sounds like an idea for summer camp. Add how to cook, and you'll take care of 80% of adult life!


Figure out how to train social skills too and you'll not only have 99% covered, you might even stand to be the next corporate giant. :)


Does anyone have a suggestion as to the K&R of managing finances?


Elizabeth Warren and Amelia Warren Tyagi's _All Your Worth_: http://books.google.com/books/about/All_Your_Worth.html?id=S...

(Yes, that's Senator Elizabeth Warren.)

The Balanced Money Formula they present in the book is the most realistic and least gimmicky financial management system I've ever encountered. The book is a quick read -- I finished in a few hours -- and when I was done I had a very clear picture of what things were putting my finances out-of-balance and what I needed to do about it.

For me, the answer was to pursue better paid work in a more affordable city. I have since achieved those goals, and as of last October I am pretty well in balance -- I still have some debt, but there is enough room in my monthly budget to both pay it down and save for the future, while at the same time having enough money for my must-have expenditures and a healthy budget for "wants". IMO the wants budget is one of the best parts of the Balanced Money Formula -- Warren and Tyagi assert that financial asceticism is counterproductive and that everyone deserves to have a wants budget, no matter their income.

There are a handful of books I've read that I consider to have changed my life, this one is ranked #2 or #3 in that list.


Considering how old K&R is and who its intended audience was, how about The Wealth of Nations by Adam Smith?


I think, The Intelligent Investor would fit the bill better. Or just read everything by Buffett and Munger.


Where's the group pushing "everyone should learn to": be an accountant, doctor, engineer, electrician or a plumber. And on and on and on.

Not everyone needs to learn to code. I agree that exposure to it and a basic understanding of it is good, just like other disciplines. But this is already happening! I learnt LOGO in primary school and then mindstorms, VB and HTML in high school. And so did everyone else, they weren't electives.


First, that's not nationwide in the US. I'm not aware of it being nationwide anywhere. In my school, there was a computer programming course on the list of choices. It disappeared when the time to actually register arrived. There was a web design course. We used dreamweaver. No one knew HTML. I spent the majority of my time in the class helping the other students do things they couldn't do in dreamweaver. The situation is less than ideal. In fact, I once presented a slideshow describing various programming languages. When I finished, my teacher asked if there were any questions. A handful of people knew programming was used to make games. Everyone else had blank looks. One girl actually said "I didn't even know this existed" with a look of shock.

Second, learning to program doesn't have to be the same as learning to be a software engineer. It's vaguely akin to basic repair skills. Knowing how to automate aspects of your work on a computer is extremely useful. Programming is applicable to almost every remotely technical career path.


Here in NSW Australia there is a Year 11/12 subject "Software Design and Development". This has been there for at least a decade if not longer. It's offered at a majority of high schools. http://www.boardofstudies.nsw.edu.au/syllabus_hsc/pdf_doc/so...

Also in the 7-10 high school syllabus there are options for projects that include: AI simulation and modelling, multimedia authoring, database design, website development, networking, robotics and software development and programming. http://www.boardofstudies.nsw.edu.au/syllabus_sc/pdf_doc/inf...

In years 7-10 I found myself helping other students in the class just like yourself. Even though our teacher had formerly held a programming position. That doesn't validate the need for it though. That just shows that it is a very alien topic to most people and that you can't have a single teacher give personalised help to a class of 30 kids.


We don't have nationwide standards for curriculum in the US.. shocking, I know. Most schools do similar things, but there's a wide variety of quality and content of education.


I did Software dev in year 11/12. We did vb6 back then (03/04) god I hope that has changed, but I can't help but think it helped me get where I am now


Then you're lucky. Not everyone has that opportunity. Everyone uses computers pretty much every day. Knowing a little bit about how computers work can make it 1000x easier to use computers. If you believe it's all magic, you can't properly figure out problems by yourself.


Accountant/engineers/electricians: Maths Doctors: Biology Chemists: Chemistry Programmer: Erm... ICT where you can learn how to use word and publisher.

It's just not the same. There is no base subject to springboard into the rest of the subject like other subjects do.


All of those professions have a lobby pushing their agenda. From the first one on your list see https://www.thiswaytocpa.com/.


Hear me out.

I was full for this 'teach kids how to code' thingy. But I think we have got this all wrong. Heck we don't have the right kind of tools to teach kids how to code. In fact I have now realized that you can't and should not teach kids how to code. You rather must teach them how to solve problems. Math was supposed to deal with that, but unfortunately that turned out to be complicated symbol manipulation if not for anything else.

My niece here in India is around 12 years old, and she is being taught C programming back in school(She is in 8th standard, or 8th grade as per US terms). No she generally comes and stays with us in the summers. So last time she came over for a month's holiday she bought her laptop with her and wanted me to teach her to program in C.

The net result is disaster. I tried everything possible. Every other trick in the trade. Even tried to start with Python first and not C. But I figured the nature of problems is something else. Kids view programming very similar to the way they see math. They find themselves manipulating things/symbols/stuff without understanding why, for what, or even why its even relevant to them. They struggle to understand where or why should you use an if/else/switch statement, or a for/do/while loop. Its difficult for them to map solution patterns to a code pattern.

Its not their fault. Its ours. Better luck trying to explain a kid why they are being asked to write a program find greatest of three numbers, find factorials, or sort numbers. To them it very clearly looks math in a different language. Its that boring math thing all over again.

Much complication starts when stuff like pointers is pushed down their throat. Or something like bit shifting. Oh and yes, they start asking things about the process of compiling, linking etc. Or why they need to put a #include at the start of a program. You can't honestly explain all that without explaining them some underlying stuff.

Beyond all this it needs to fun, which it very clearly isn't.

What kids need to be taught is how to solve problems, even if it means repairing a mechanical watch. Instead what they are being given is math in a different dose. And trust me at that age, they don't really like doing that.

And oh, by the way. Next year they are about to be taught Java. I can only imagine the horror, the way kids of going to deal with the text walls full of verbosity, API dance and the XML mess. And the last time I heard they don't really use IDE's.

One thing that I'm convinced is, after this episode due to all this trouble and trauma of having to learn this, she clearly doesn't enjoy, she will hate programming and hope she never has to deal with it again.

Because last time I talked to her, she told me she wants to be a journalist. That's how much damage 'Teach kids how to code' has done.

I'm now glad no one ever introduced me to coding when I was a kid.


Parent is clearly missing the forest for the trees. Lets not talk about cs for a second- say you are a mason and you want your kid in the construction business. He says- so what have you done with masonry? So you say- I built the house in the next block. I built the bathroom for the petersons...bedroom for the smiths...closet for your mommy...stepstool for your granny... this shit isn't going to fly even though you are 100% honest. It isn't about what you have done in your particular pathetic life due to circumstances peculiar to your economy. It is about what can be done. So you should take your kid to the Golden gate bridge. Sears tower. Central station. This was built by masons ! And this!! And this!!! Then you don't need to sell masonry... the kid will be starstruck and learn on his own. Kamaal chose to dispense with the pomp and ceremony and abandon razzledazzle for brass tacks. Here let me teach you C programming with preprocesser directives and predicates and for loops and pointers- I would have run for the hills! Even though I was as old as his niece, I had written some 5k loc in C purely self taught to make pixels flock...weird infatuation with cgi at that age. Because somebody had told me star wars and tron were made on a computer by people just like me- so I took that literally and ran with it. I was not a genius...just another driven kid who didn't give a flying fuck about hash include stdio and mallocs as long as he could make pixels fly. Inspire, don't preach.


You make a lot of assumptions about how kids have to be taught coding.

> I tried everything possible. Every other trick in the trade. Even tried to start with Python first and not C.

> They struggle to understand where or why should you use an if/else/switch statement, or a for/do/while loop. Its difficult for them to map solution patterns to a code pattern. Its not their fault. Its ours. Better luck trying to explain a kid why they are being asked to write a program find greatest of three numbers, find factorials, or sort numbers. To them it very clearly looks math in a different language. Its that boring math thing all over again.

There are so many other ways to introduce students to programming. This is the main part of the problem. So many people think this is how you have to teach programming. I am in full agreement that you need to teach problem solving, and you can do that with programming.

We start teaching with a simplified language called "karel"--where you have a dog who can only turn left, move, and put down and pick up tennis balls. That's it. There is no overhead of python or C or java. It's just a few commands and a dog. And there is no question on why you should do it.... people do this because it is immediately fun. Printing "hello world" for most people (especially younger kids) is not immediately fun.

Try our demo on the code.org page http://www.code.org/learn/codehs

I have started thousands of students in person with our karel the dog demo. Everyone can do it. Almost everyone finds it to be really fun. Because karel is a simplified language, it is all about problem solving. How do you get a dog to find the midpoint of his world when he cant store variables, but can only ask questions about the state and put down tennis balls?

I contend that you can teach problem solving to students through programming--but it is so crucial how you make that initial experience feel.

There is no

    public static void main(String[] args)
to get started.

Try this out at http://codehs.com. We have schools using it all over the country, and young students can get if/else, and for/while.

> Beyond all this it needs to fun, which it very clearly isn't.

Find a student who didnt like programming, and have them try our karel the dog starter for 10 minutes. Let us know what they say. I bet they think it's fun.


I think both you and the grandparent are making a mistake. He assumes children dislike math. You assume children will like karel. I think the truth is that children have different interests and that you can only bring them to programming by latching on to those interests. Many children like math. Many other children will not like karel.

The result: to engage as many children as possible, you need several introductory tracks: one that uses math, one that uses puzzle solving, one that uses drawing, one for another common interest, etc. Also be aware of the way interests change with age.

Teaching is hard and almost every approach invented seems to rely on yet another silver bullet.


Nobody assumes that children inherently dislike maths. They can't dislike something they don't even know.

The point is that children start to dislike maths once they go to school. And they do - all kids in my class either already knew basic maths before going to school or were completely bored by it.

The same will happen with programming once it will be "taught" in schools as well.

Think of it this way - if you want people equally competent as you to teach your child in school, you have to pay them 1/n of your salary, where n is the number of students in class. If you pay them less, they will find a better paid job elsewhere like you did. And you don't want n to be large since it's hard to pay attention to more that a dozen of kids at a time.

Hence, school must either consume 5% to 10% of your salary per child, or be ran by people less competent than you. It seems that usually the latter is the case.


I appreciate your math, but it is slightly flawed.

You can get a bigger n, not by increasing class sizes alone, but also by letting teachers teach for longer per day than children learn. I.e. use you math per hour taught, not for salary.

What this means in practice is, use teachers for higher value added work, but let computers (or somebody less qualified) oversee other parts of the learning process.

What seems to work fairly well (I remember a study about it), is to let students read material at home, but solve problems in class. That's the opposite of the traditional getting lectured-at in class / exercises as homework approach.

Khan academy is another vector for leveraging teachers. It does not replace a good teacher, but it can augment a teacher.


The problem is that if you tell schools to implement "computer supervised" coding learning, they will tell the students to write a factorial implementation and then they'll test it for bit-perfect match with some "perfect" solution.

This way they will verify correctness, good indentation, meaningful naming of variables and so on. Because somebody in the school/government heard that this is what professionals care about.

IMO launching a media campaign which pushes schools to "teach" every child to program, without any plan prepared by professional teachers and developers and then permanent, ongoing support from such professionals, is asking for disaster. And the grandgrand...parent provided an example of such disaster.


Oh, I was merely talking about the possible. If you are cynical enough, you will always find a way for teachers to screw it up.


I think this is a good point, but I'll take it a step further. The kid that likes drawing doesn't have to be a programmer, so stop trying to teach it to him and let him draw without the constraints that programming brings. We don't all have to be the same.


The point you make here (and one made by many others) is a straw man/reductio ad absurdum argument.

People who advocate that everyone should learn to code (like myself) to not advocate the absurd conclusions that are used by others to refute this standpoint.

I do think people should learn to code. This does not mean I think: 1. Everyone should be a professional programmer. 2. "Everyone should be the same"

You can make similar arguments to a person who says "everyone should learn to read," but then you misunderstand the spirit of the discussion.


I'm not interested in logical fallacies. I don't think this is a particularly logical subject. When you say "people" should learn to code, do you mean everyone? I posit, completely illogically, that some people will contribute greater good to society without ever having their brain trained to solve a problem via algorithm. Even without contributing any good, maybe they'll just be happy. Of course I'm not against making things more interesting for those who do have an aptitude or drive for it, so please don't misunderstand that.


> I'm not interested in logical fallacies.

Careful. That may make you vulnerable to them.

> I don't think this is a particularly logical subject.

Are you sure advocating a solution that's not based on logic is the right thing to do?

> When you say "people" should learn to code, do you mean everyone?

First we must define what "learning to code" is. I (and, certainly, most others) do not advocate kids should learn Java (or Python). But I think kids should learn how to decompose complicated problems into simpler parts. I also think kids would gain a lot if they could make computers do what they want (going beyond "start WoW", for instance).

As for drawing, you can always draw with a pen and paper. I prefer to do it that way. However, if I decided to draw a fractal curve, I'd probably do a few sketches on paper, to grasp the ideas, then fire Emacs and write code to actually draw it.


> I do think people should learn to code. This does not mean I think: 1. Everyone should be a professional programmer. 2. "Everyone should be the same"

First of all, why we (adult) do programming? to automate something? to make repetitive tasks easier? or just for fun? and I don't see any good reason, why we teach kids programming. If it's to train their logical thinking, we can make a game for them, give them a basic set of rules, each rules have consequent, with their imagination they can make other rules based of basic rules, with one condition that new rules can't contradict with basic and other rules, I know it sounds like math, but they will get the basic idea of logical thinking, when you do something there is a consequence.

Programming is just a tools or way, if you prefer. Not to mention a new trouble when they have a solution but can't apply it with programming, because the technical barrier they had, even you use easy programming tools like Alice, certainly there will be technical problem for them.

I agree with, why we should learn kids problem-solving skill, because they just need their brain and basic tools like pencil and paper, maybe to scratch something, to visualize what they think.


Meanwhile, the kid who likes programming will probably be drawn to it naturally, as well. I know I was, a long time ago. I can appreciate wanting to lower the barrier to entry for such kids, but I honestly don't think it's excessively high to start with.


Friends of my age who were drawn into programming did so probably because when you turned on the (8bit) computer it was waiting for you to write a program. It was the default action. How would an iPad user be naturally drawn into coding? If you don't have friends around you who do it and serve as an example (or a classroom where you are presented with that possibility), I think few would come up with the idea of writing programs themselves.


It's dated, slow, ugly, and poorly-supported, but in my experience, Alice is the easiest introduction and call to action for a 7-10th grade proto-programmer.

You create 3d animations using an OO syntax. Like Karel, you build up from basic methods, but you get to animate a scene, rather than have a robot/dog pick up and drop stuff.

My students have really enjoyed it, and it let me get to deeper concepts far faster than other instruction.

edit: http://www.alice.org and it looks like development has actually woken up. The blog is active and there's a new version out. Big improvement over last year when I went there.


haha yes, you make a good point. I do think that including several ways to try to connect with beginners is important, and that is what we hope to do. I really like the logo the turtle approach as well.

I think my main concern with the previous comment is that the dominant method for introducing programming is too syntax-heavy, math-heavy, starting with a language with a lot of overhead for beginners, so ours is an alternative.

Not everyone will like our intro, as you note. But I think it has a very different feel than the way many students are introduced to programming in school (see AP Java class).


There may be no `public static void main(String[] args)`, but there's still a lot of `();`

We can do better! Why not just `move`, `turnLeft`, `putBall`, and `takeBall`?

Better yet, camelCase is kind of weird. Why not `turn left`, `put ball`, and `take ball`?


OT and I don't know if you'll find this useful but http://codehs.com/ looks like an absolute trainwreck to me, layout-wise. I'm using Firefox 19 on Ubuntu.


Thank you Hacker News reader for the very Hacker-News-esque constructive criticism. We are trying to improve our site, so if you have specific constructive feedback for us, we would appreciate it.

Thanks! :)


Apologies if "absolute trainwreck" came off as harsh or unspecific. My specific, actionable feedback is:

Check how your site looks in multiple common browsers (IE, Firefox, Chrome...) while you develop it.

Check how your site looks on screen sizes smaller than your own, by resizing the browser window.

If it looks fine to you, then maybe the problem is on my end. But there is definitely a problem on my end, as I assume you did not intend for the "Why CodeHS?" text to overrun on top of the photo of the classroom.


Looks OK to me using Firefox and Chrome on Ubuntu.


I tried in Chromium on Ubuntu, and Firefox and IE on Windows. It looks trainwreck-y on all of them for me.

By the process of elimination, I believe it's because I'm using a T-mobile wireless dongle. The upstream proxy attempts to reduce bandwidth by doing things like coalescing external CSS and JS inline. I've seen this break one other site (LinkedIn profile editing, which seemed to be a bit fast and loose about its use of ajax) but every other site I've used has been fine (even e.g. Asana, which is rather intensive.)

I looked at the source of codehs.com (insofar as I can figure it out, what with all the CSS and JS put inline...) and I'll change my actionable feedback to:

Try to keep it simple.

That seems like far more stuff than you'd actually need on a landing page.

I also noticed that, when loading on IE, it pops up a message saying:

    You are using Internet Explorer, an unsupported browser :(
    You should download Google Chrome so you can get started!
It's a pity that the site doesn't support the browser with the largest market share -- that's probably something you should work on.


It does. Google Chrome has the largest market share.


Thanks for the feedback. These are all things on our to-do list.


working fine for me. I think it might just be an issue with ubuntu.


> We start teaching with a simplified language called "karel" ... It's just a few commands and a dog.

Off topic, but curious: why does the language have semi-colons?


Because it's Java.

Also, significant whitespace is a pain in the ass.


It seems to be JavaScript, not Java.

Semi-colons are great for real programming. They help deal with ambiguity when you want to split something over several lines yadda yadda let's not have the debate here.

But I don't see it's utility in something like this. It becomes one of those "just because" answers if someone asks why you need to put a semi-colon at the end of the line.

I could understand it if it was pitched at an "almost ready to write real code", but from what I've seen, and looking over the chapter headings, that doesn't seem to be the case.

I guess really I'm trying to look at the balance between using a DSL in a real language and using a toy DSL with a simple syntax when introducing basic concepts and shaping how people think about problems.

I use "real" to mean anything written outside of the CodeHS playpen.


It looks like there are many, many implementations of Karel the Robot.

I first saw Karel watching the Engineering Anywhere CS106a videos provided by Stanford. That course was in Java but used Karel at the beginning to get students used to writing programs, in this case instructions to the robot. If things like why ; and what is this `public void` had to be introduced before the groundwork for understanding what they were doing, it was done with a 'do this and we'll be able to explain why shortly.' Which to me, is a perfectly valid way of introducing things.

Because the Karel implementation there was Java, controlling the robot was just Java. You learned Java syntax as you played in the sandbox. You used that syntax as you moved out of the sandbox.

FYI the semi-colon at then end of the lines, if I remember correctly, was explained with this is how you tell the computer in this language we're done with a statement. No different then us using periods in English at the end of a sentence, its just the rules of this language.

As an aside, I really liked the Stanford CS106a course videos. I think the instructor did a very good job introducing Java and programing in general.


I have a hard time understanding why on earth anyone would have semicolons and parentheses in a programming language for kids!

A comma, instead of a semicolon, would be much more natural for kids imo and the parentheses are just there to confuse it seems.

Just keep it as simple as possible and have the syntax as close to natural language "rules" as possible then kids might start to understand things better.


Clicking "Learn to code with CodeHS!" on http://www.code.org/learn/codehs results in the link being opened within the iframe.


Ah, that's a problem. Thanks for letting us know about that.


And the top navigation disappears if screen width is less than around 970 px. (Chrome, Windows)


I have a very similar experience with "Teach the kids to code". When i was in 5th grade our school bought a couple of computers and started teaching Logo(http://en.wikipedia.org/wiki/Logo_%28programming_language%29). It was simple little language, and all of us were excited cause we could make computer draw something for us.

After that the curriculum for the higher standards moved more towards the MSOffice, Lotus123 stuff which really bored me out, so i moved my interest to physics.

Incidentally i was drawn back to computers for playing games(not programming), students exchange lot of pirated games. My curiosity with the computer was back when one of the games was not working on my dads PC. I had to learn about exe, dll(apparently games needed many of these strange little files), Direct X, opengl, screen resolution, and lot more stuff.

Before i knew it, many of friends needed my help to troubleshoot their PCs, which game me lot of PCs to do my hardware/software experiments with :). And i gradually moved myself to programming again.

My final year CS projects was a warehouse management system using RFID and Java. From Logo to Java it took me 10 years, it may be a slow growth according to HN standards, but teaching kids the wrong stuff will really turn them away.


I have a similar background, with my earliest programming experience in Logo, drawing fun shapes. I then got into PC games, dealing with batch files, config.sys, and HIMEM to extract extra KBs of conventional memory.

I got back into programming when a friend and I built a flash card program to help us study vocabulary and memorize Chemistry equations. Programming is fun when it has a purpose!


> When it has a purpose

I think this is the real key. It's one thing to teach kids programming, but you cannot teach them why its useful in the same way many engineers discovered why it was useful.


I cannot agree more. Too many students find the subjects they are studying "pointless." Who will take the time to learn something they think (quite possibly rightfully so) is pointless.


Same here.. We had logo and a sheet of commands to help us draw shapes. I got into trouble because within 5 minutes I'd binned the paper and was writing my name. I was amazed by the keyboard and the interaction. I was making "Something" happen and I could see it. Straight away. Really got me hooked. Never looked back, I do programming for career / hobby. Just so happy really I had access to that sort of thing as from what I read, it isn't that common!


I love Logo; it's one of the things we added to Hackety. Before you start "Ruby," you do a lesson with Logo. (shhh, it's actually just a DSL.)


> I'm now glad no one ever introduced me to coding when I was a kid.

I wouldn't throw out the "learn to code" baby with the "poor rote education" bathwater. Clearly that's a bad approach and is pervasive throughout schools around the world, and we need to stop it. There are many ways to learn how to code, and we're constantly developing better ways to educate millions of kids (I hope). But asking programmers today the best way is survivor bias -- many/most of us are self-motivated and had to learn large portions of what we know on our own.

I wouldn't give up on your niece, either. Different people are motivated differently, and timing matters, too. She needs to find the right itch, and she'll soon learn to scratch it.


> There are many ways to learn how to code, and we're constantly developing better ways to educate millions of kids

Making it a compulsory part of education does not seem to be a "better" way to do it. Let's not push things that will be useless to most kids until they develop some interest for it, or for solving problems in general. Then you can bring programming as one tool to help solve issues, in a better/faster/cheaper fashion. Programming for the sake of programming has no meaning, just like we are being taught Math for the sake of Math. Education needs to be way more tangible and down-to-earth, at least for younger children.


> Programming for the sake of programming has no meaning, just like we are being taught Math for the sake of Math. Education needs to be way more tangible and down-to-earth, at least for younger children.

I think we're agreeing. I don't think it's useful to teach computer science at early ages, but rather using programming as a practical application of critical thinking, logic, problem solving, and mathematics. Completely agree that it needs to be tangible, with instant, visible results that they can relate to. I think the MIT Scratch project is a great approach (code.org features this).

If @kamaal's niece is drowning in pointers, they're doing it wrong. But I don't think that programming should be universally excised from the curriculum as a result.


> If @kamaal's niece is drowning in pointers, they're doing it wrong. But I don't think that programming should be universally excised from the curriculum as a result.

Teachers cannot be expected to teach everything well. I was also part of the 80s experiment in my country to have mandatory computer training as soon as primary school, using BASIC and the crappiest hardware available at the time (Thomson's !). The assignments were stupid, the teachers incompetent, and the students bored by what they were asked to do. If you want to teach programming to young children, you will find most of them have geniuine interest in video games and would probably enjoy learning how to program one from scratch, but no, Education is a top-down thing in most countries and the programs are elaborated by people who have no understanding of computing, of education in general and no interest to serve the students but rather show off how "progressive" they are vs other countries or other governments. How could positive results come out of it ?

I am rather for the accessibility and the awareness of good materials to learn how to code online, made to demonstrate how to build actual projects with it that can be useful in some way. In the garage programming days of the 80s what was missing the most is the ability to meet other folks like you who loved programming and to learn from them. Now, with the internet, that boundary is more or less gone and the sharing of up-to-date, re-usable, practical information does more good that all the training you can implement in schools, training which will go obsolete in a matter of years.


Agree completely about Scratch. We have a love/hate relationship with it--it gets about 80% right but it isn't pretty and onboarding is a struggle. Scratch 2.0 will be coming soon with some improvements but still in Flash (!!)

The great thing about visual programming languages is that kids can focus more on the concepts and less on bugs due to syntax/typo errors. We're working on one for the iPad called Hopscotch - gethopscotch.com.


Its not that we don't have the right tools to teach kids how to code, its that (as usual) we don't have the right teachers. I taught myself/was taught by my brother when I was in 6th grade. In high school, I took the compSci AP (and spent about half the time taking a nap). The year after that, I took the 1 programming class my school offered, which was a project based intro to programming (with an awesome teacher who made sure I got something out of the class).

What struck me about the class was the way it was taught. We used Java (actually, Processing [1]). In most of the early lectures (which there weren't many of), he would say 'for now, this is just syntax, it will make sense later' instead of explaining the more advanced concepts needed to understand why we write certain things. The main flow of the course was (I am inventing the details): Calling a function tells the computer to do something. Here is a bunch of drawing functions, make a picture. Then, using that he would ask students to make minor changes, like shift the entire thing 5 pixels. Then he would introduce variables and assignments. Using that, he would ask them to draw parallel lines. Then, he would introduce loops. Then he had them make a bouncing ball simulator (just 2 balls) Then he introduced objects

Every time a new concept was introduced, its use and benefit was clear because people had already seen the code duplication that it solves. After the initial lessons (which only took about a month), the class was pretty much entirely project based, where we were given (loose) guidelines and had to design and code a program.

Most of the time spent in that class was problem solving. Because math is an incredibly powerful problem solving tool, much of that time was spent doing math. But it was spent using math as a tool to solve a larger problem.

After (and during) that class, many of the other students (whom had never coded prior to taking the class) asked me for advice on programs they were writing that were completely unrelated to the class.

So, it is quiet possible to teach kids how to code without scaring them off. It generally helps if you don't show them pointers, or bit shifting, or linking, ETC until they are ready.

[1]http://processing.org/


This is a very valuable point of view. Everyone understands that coding is only going to become more relevant to the world as a whole, and those who understand coding remember how empowered they felt when they first began to think about solving problems from the point of view of a program. It seems obvious that we should teach programming skills as early as possible to capitalize on the "magic capacity for learning" that kids have. We know this works for language. But does it work for abstract thinking?

No one remembers how they learned things at an elementary school age. I think the reality is our understanding of concepts was very muddy at that age. Thinking about abstract concepts still requires a lot of context that kids don't have. I'm not sure kids can really grok the importance of the abstract concepts in programming, and I'm not sure that importance can be taught directly. I think the ability to grok those concepts comes from a bank of general world knowledge that must be slowly built up to in adolescence.

Teaching programming early on may give kids a few worthwhile mental tools, but I'm not sure we can expect kids to get any magic "fluency" benefits the way we can with language. The risk of turning kids off programming by forcing them into it early may outweigh the benefits.


Math was supposed to do everything that you talk about. Yet it hasn't. Despite people seeing some influence of math in Physics. Except that Math hasn't and probably never will.

If I tell you I'm going to teach how to play the piano, you may love it. I can also probably teach you some boring music theory along the way. But if I teach music theory for the next 10 years, without ever making you hear the sound of a note you are likely to end up hating music. Even later if you see or hear some playing the piano you will live with a assumption that music is all about boring stuff so will never develop a liking for it.


You really should look at http://codehs.com

We don't force feed anything, and everything is motivated because it's fun. We teach problem solving through coding, but it's really simple at the beginning, so you don't get intimidated.

It's motivated by teaching you that programming a computer is like teaching a dog how to do tricks, which kids can identify with.

Seriously, actually try out CodeHS because it's not what you think it is. It's actually fun, and I bet you'd wish you learned it when you were a kid.

And if you don't want to try it out, that's fine. Just know that when people say we should teach kids to code, we don't mean symbol manipulation or boring math. It can be fun, and we're doing that.


> And oh, by the way. Next year they are about to be taught Java. I can only imagine the horror, the way kids of going to deal with the text walls full of verbosity, API dance and the XML mess. And the last time I heard they don't really use IDE's.

> One thing that I'm convinced is, after this episode due to all this trouble and trauma of having to learn this, she clearly doesn't enjoy, she will hate programming and hope she never has to deal with it again.

School sucks.

It's ironic how people passionate about some subject immediately want this subject to be taught in schools, even though most of them likely learned this subject outside of school and they should know better that compulsory schooling doesn't work.


> My niece here in India is around 12 years old, and she is being taught C programming back in school(She is in 8th standard, or 8th grade as per US terms).

I have been in those Indian schools, and it's not what you think at all.

Did you check the portion/syllabus that is to be covered in 8th standard?

In my experience (7 - 8 years ago): Max they'd go is loops, preprocessing directives. I doubt they'd even write a function (not complex ones that return stuff anyway, forget call-by-value, call-by-reference)

> And oh, by the way. Next year they are about to be taught Java. I can only imagine the horror, the way kids of going to deal with the text walls full of verbosity, API dance and the XML mess. And the last time I heard they don't really use IDE's.

Teachers here are fans of "do it in text editor, so that you don't have autocomplete to guide you" (where normally text editor is Notepad (Windows)). I can assure you they aren't going to deal with anything like APIs, XML.

Java courses in India are a lot like "Rewriting this piece of code we wrote in C++ last sem in Java".

Also, computers in schools (state boards at least) are not a marking subject where you score out of 100 or 50. It's a graded subject (falls in the domain of physical education, crafts: generally ignored academically).

Indian education system has bigger problems anyway. Be assured this course is not what these guys at code.org are talking about.

EDIT: I am not being negative, but you'd rather take opinions of a person schooled in India (Mumbai, not Delhi, but more-or-less the same thing leaving out subtle differences) than an uncle of a student who only knows the name of the subject (analogous to courses in college).


The real issue here is that they are trying to teach a subject which is by itself already very abstract, with poor tools. C may be a fine language for doing low level work, but in this case low level is exactly what you should be striving to avoid.

I started programming at age 8 - and didn't know that it had a name. All I had was a Basic manual, then assumed that's how the computer was supposed to be used (no graphical interfaces at the time).

By age 11, I had moved from Basic to Turbo Pascal and was writing my own 'units' in Z80 Assembly.

However, despite several attempts, I could never grasp C for some reason, until university. And then it just clicked. It is as if some very important part of my brain was not ready yet for it.

I am not too fond of logo-like languages, except to teach the very young. I believe it is best to get them an environment which is already bootstrapped and ready to work, but that won't hold them back if they decide to do some exploring on their own, so it should be a 'real' language. But a simple one, such as Python or Lua.

The fact that they are starting out with C is borderline criminal and will backfire.


Absolute hogwash.

I'm fourteen. And I code C++ and understand everything flawlessly.

If somebody isn't learning how to code (or how to do anything, really), it's either because of one of two reasons:

a) they don't want to learn how to code b) they're unintelligent

I'd say ~90% of kids fall into the former group. Coding is not something that you can just pick up a book and learn; it's something that takes time. It takes a hell of a lot of dedication, practice, and failure to master. Compare it to learning a spoken language; conventions of that language are likely different from English or whatever the learner's first language is, but the structure of the sentences, unless you're learning Hebrew or Yiddish, is more or less the same.

With coding, it's a mess. Nobody knows how to relate block structures to anything they've learned previously. It drives you insane for a while, but you warm up to it. It took me 3 years to finally understand many concepts that were presented to me in the many books, manuals, and docs that I perused throughout my learning experience.

And even then, I'm not done. New things are constantly to be learned, and everything I've learned I have to constantly apply to something else. If I want to learn to write GTK+ programs, I'll have to go back to a reference guide to see what several function calls actually mean.

Coding isn't impossible for kids to learn. While it is hard, it's not impossible. Start out with something like FBC or Scratch, and then give them more control through Python, which will guide them towards more complex languages like C/C++/Java. Anyone who starts teaching an 8th-grader how to code C/C++ with no prior experience, is frankly an idiot. Interest in coding is never ephemeral iff the learner is introduced to it properly.


Did you even look at the resources on Khan Academy they have? They're STUPID simple and really useful. Heck, I learned some stuff!


No Khan Academy resources are not going to help. Let me tell you why.

If you try hard, you can teach some one 'how to code' but no matter how hard you try its not possible to teach some one 'what to code'. Or in other words, 'what problems to solve using coding' else everyone would be a Nikola Tesla.

Its easy for us to solve problems like 'Parse this XML and do X', for kids its impossible to even understand this, or why this should be done. The other stuff like sorting, factorials etc math stuff is the least they are interested in. What else, 'make this cat go around the well 5 times' kind of problem that MIT scratch deals with is a little interesting to small kids, beyond this age- teenagers or kids around who are trying to prove to the world they are not kids find it intellectually insulting to even look at it.

But there are problems kids like to solve. Consider things like Lego, or Origami. Or building an amateur radio by assembling stuff. Or learning to repair a device X. Kids see adventure in such things and a very visible physical product they are working with or towards. There they see a problem, and method follows thereby. In coding you focus on the method and not the problem itself.

As programmers we think our profession is the greatest(Just like every one else). The fact is you could say the same about nearly every job out there.


I don't think the issue is either explaining to kids "how" to code, or "what" to code, but rather "why" to code. We all know why, because it's super awesome and rewarding. The problem is that it's also extremely frustrating, and maybe not everyone is a natural born programmer, that's ok.

I think the reason I always loved programming is because I love computers, a lot. I think kids these days are growing up with technology at their finger tips, computers are second nature to them, and they like technology because it's cool, and yea you can play games on computers. I wonder, how many people in this thread got into programming because they wanted to make a computer game?

When I was a kid I hated math, it felt like nothing more than an exercise in taking orders and doing something for no reason. Every year I would ask my math teacher, "why are we learning this" and no one had a good answer. I really wish someone had been there when I was younger to show me how amazing math can be if you have the right attitude about it; and when I was teaching I always tried to be that person for my students. I know I was able to get through to a few of them at least.

Computer science classes literally make people hate computers, and that makes me sad. I mean why on earth do they make you learn java in school, are you kidding me!!? It's like not enough to ruin math for generation after generation, now they are ruining computers too. What a shame.

When I was teaching physics I used to tell my students "look, you like south park right, well imagine if 200 years from now you had to study south park in school, but instead of watching the episodes and laughing your ass off, you had to memorize a list of every characters name and random facts about them, and then you had to take a test that quized you on how well you had memorized those random facts, and if you didn't do well you got punished by your parents. Well that is exactly what has happened with math and physics."

We don't need kids who know "what to code", we need kids to want to because they think it's interesting and fun. Lots of kids these days already love computers and technology, it's up to us not to let the way programming is taught ruin that for them.

Khan academy for sure can help, if the video's are done right.


I really agree with what you are saying. Not every person will have inclinations to do programming for a career or have it be their passion.

I would say that the goal of any of these initiatives should be to expose the kids at a young age and let them see that it is out there.

I fully starting engaging in software development in University. I know that if I had been exposed to learning programming in a more fun way earlier, it would have been something that I would have really enjoyed and continued.

If a young child has the inclination for it, it would be such a privilege to have them start their journey of learning at a younger age. These are the kids that I want these initiatives to catch. For others, it would be great to have them exposed to it right away too and realize its not for them. There is tremendous benefit in knowing what you don't want to do so you can quit and try something else.


I think your misconstruing the purpose of these initiatives.

The purpose is not to turn the kids into programmers at a young age. The purpose is to EXPOSE them to the world of programming.

You're not going to make coders out of them in elementary or middle school. But you might make them more INTERESTED in pursuing further programming education in say high school. Mission accomplished.


Agreed. The fact that I could be a programmer clicked for me only because I made pretty complex TI-89 calculator programs and games in HS. I thought I was just dicking around, but later I was like "wait, this is programming? I've done this before!"


Kids don't need to learn C or parsing XML. In fact nobody needs to learn to parse XML because either put that data in JSON or GTFO.

But seriously, no it's not concepts like that that matter. That's syntax and strategy. It's "here's how to talk to computers, and here's some aspect of problem solving".

Teaching kids to solve problems and how to think is part of every single subject in school. 100% of them. Coding should have this as a part, history should, english REALLY should, etc. But the primary function is to introduce how to talk to computers to kids, the secondary is how to talk to computers to solve problems.


Kids view programming very similar to the way they see math. They find themselves manipulating things/symbols/stuff without understanding why, for what, or even why its even relevant to them.

Indeed if young people have that kind of mathematics education, then they are likely to find programming boring and off-putting. But some young people learn math as something to play with, all along asking themselves why the math "rules of the game" are the way they are. Such experiences in math help young people learn and enjoy programming at a younger age. It's all problem solving--that is, it's reaching a higher level in a game. For some people that is a lot of fun. I've seen this kind of educational progression in someone who first started learning serious programming in a C course

http://epgy.stanford.edu/courses/cs/

at about eighth grade age. It can be done.


Do you think a simplified assembly language would be better? I think a high-level language is generally good for teenagers or older. But maybe starting with assembly is better. It's actually a really simple language to learn (if you focus on a small subset) when you just want to do simple things. And it removes a lot of the magic that higher level languages have which could confuse things for kids.


This is one of the reasons I'm interested in http://0x10c.com/ , when it ever comes out. The assembly language for the game's DCPU-16 is fairly simple. Currently it does take a bit too much to get output on the screen, but with better tooling it could be a viable first language.


0x10c is such an awesome concept. Shame the last activity on the blog was November.

You might also be interested in Core War, a game where you create assembly language programs and battle them with other programs.

corewar.co.uk


When I was your niece's age, RPG Maker, FKiSS and LEGO Mindstorms were all plenty of fun, and very accessible. I think a big part of the problem is that many adults aren't aware of all the options, or they turn up their noses at certain kinds of programming. Like it's somehow less valuable if the language learned is domain-specific or visual.


Has anyone tried starting a kid with vim-adventures?

I remember playing zelda and mario with harder problem solving (including some injected just to make you call the nintendo hotline). Vim-adventures is fun, it would teach abstracting and building combinations, and it would provide a useful skill that gives them a 'magic power' in other people's eyes.


I love the addition of Chris Bosh! After coding being hard, in general, I believe that our industry's biggest challenge is it becoming "sexy" or having role models that a vast amount of people can connect with!


All we need is for LeBron and KD to take a summer class in JS or python and tweet about it. Maybe they can do some tasks like analyze their own stats.


At Khan Academy, we have a series of videos with LeBron asking science-related questions:

https://www.khanacademy.org/science/lebron-asks


Yes, I love these videos! The first one I saw was LeBron asking Sal about the likelihood of him hitting 10 free throws in a row.


That would be awesome


I am generally enthusiastic about teaching people to code. That said, I am ambivalent about the backing organization, "Code.org":

Every single person on their advisory board (http://www.code.org/about) has a vested interest in there being more programmers competing for jobs.

I feel like they are misrepresenting the nature of most programming jobs to the general public.

They prey upon people's fear of unemployment and cite numbers about there being fewer programmers than jobs. Nearly every single person in that video has explicitly said they only hire the very best. My guess is that we'd still end up with legions of unemployed people that happen to be mediocre-to-awful at programming.


They're backed by software people, because most software people think coding is awesome and want more people to do it. Also, it's really hard to find good programmers, so they want more people to start doing it, yes.... but teaching 10 year olds to code isn't going to get them any benefit for at least 12 years. I highly doubt they're thinking that far ahead.

I think it's much more likely exactly what you see - they want more people to code because they believe everyone should code, and many people will like it once exposed to it.


I hope you are right. That said, I think the points I raised are worth considering.

FWIW I'd expect many of the featured people to be thinking much further ahead than 12 years.


> My guess is that we'd still end up with legions of unemployed people that happen to be mediocre-to-awful at programming.

Probably true. For all the hype around the job market today, generally speaking only talented developers find employment.

The rest tend to end up in other fields or unemployed. I can only imagine what the market will look like when the talent pool expands.


Really? I've worked with enough substandard developers that are still happily employed to believe that could be the case.


I like this because instead of saying "everyone must code" it says "everyone should have the opportunity to learn to code".

There are always going to be those that are not interested in coding. Forcing anyone to learn something they aren't interested in is just a waste of everyone's time.

If you give kids the resources they need to get started and a good environment to experiment in they will take care of the rest.


I think teaching students to program is a wonderful idea. Most people use computers every day-- be it work or leisure. Knowing how to automate your workflow in whatever career you choose would be a wonderful asset.

However, I'm concerned that this isn't the goal. Lots of the video refers to a great need for programmers. It sounds like lots of the interested people are more interested in preparing students for a career in software engineering,


"It sounds like lots of the interested people are more interested in preparing students for a career in software engineering"

That could be the case. Programmers are expensive because there isn't enough to meet demand. If you can get a lot more people interested and entering into the market, the cost will go down. I would imagine an employer would prefer programmer's salary to be more in line with what a typical employee's salary is. If there is an end goal, it would probably be to make programming an expected skill set in addition to a specialty, rather than a specialty in of its own.


The issue is that schools are not a place to learn, they're not the right place for people to actually develop skills.

Because schools suck at teaching (because they feel like glorified prisons and lack resources due to ignorance and bureaucracy) we must fix/replace schools before “teaching” kids to code, otherwise we will fail.

Also, this illusion that low-level languages like C are any less suitable for introduction than other languages is yet another barrier, I learned in assembly, and I would probably prefer to learn in C, since it's very simple, clear-cut, and consistent. No namespacing, very little context, very little syntax.

The best way to teach any skill, is to provide resources and motivation for the completion of real, practical tasks. In software we have the unique opportunity not to break anything real when we build something equally-so.


Speaking as someone who is currently taking his first programming lessons in school at the moment, this seems great. What I really need though, is great tutorials in the languages I'm using.

Codecademy and Khan both do a great job, but neither has any/proper support for Processing or Java, which is what the courses at my university revolves around (there's a bit of drawing on Khan, but in no way enough to make me anything close to comfortable with the language).

In short, what really prevents me from speeding up my learning is content. The will is there, and I believe it is for a lot of other people as well.

(btw, yes, i can look up double arrys on processing.org but trust me, it can very difficult to implement their content when it does not relate to your own project. That's why guides are so good. This is not good: http://docs.oracle.com/javase/tutorial/getStarted/intro/defi...)


One of the simplest and most accessible forms of coding that most people will encounter in their working lives is the spreadsheet.


In my professional life I haven't found spreadsheets to be a "gateway drug" to programming for people I work with. Spreadsheets are generally used to get something done and then take on a life of their own until they are so critical to a business that their failure can cost enough money to materially damage a business. However, there does seem to be something accessible spreadsheets that perhaps can be used in a slightly modified way to get more people excited about learning to code in a structured programming language.


This isn't about growing computer programming education, it's about the basics for people with poor computer literacy.

Google search and PHP.net documentation have done more for growing computer programming education than any project like this.

We need more great documentation resources, and less "let me hold your hand" tutorials.


An old math teacher friend of mine has introduced his 7th grade students to "programming" through Lego Mindstorms. The kids work in teams to build the robots from kits and then program them to navigate a maze/obstacle course using Lego's software. I don't think its that close to "real" programming, but it does get the kids thinking about how to break down problems into logical steps. And it's enough like play that pretty much everyone gets into it, and the ubernerds in the group race to see who can finish the course in the best time.

I'd like to see more things like this happen in schools, but it's hard to find the time and money for ~10 mindstorms kits in every classroom.


I completely disagree with this. The world doesn't need more coders, but BETTER coders.


Most challenges faced across the global are cultural and linguistic in nature. The heavy dependence on English is a huge barrier to most children and young adults out there. All my attempts to introduce young cousins and nephews to coding failed because they are at the stage where anything not in their own tongue is unfathomable. I looked into making a small ny-own-dialect-based mini language but it seemed that a better approach is to simply translate existing well designed and well maintained efforts such as Alice. Any idea on how to begin doing that or whether a similar translation project is underway?


> All my attempts to introduce young cousins and nephews to coding failed because they are at the stage where anything not in their own tongue is unfathomable. I looked into making a small ny-own-dialect-based mini language but it seemed that a better approach is to simply translate existing well designed and well maintained efforts such as Alice.

If they are young, its the optimum time for language acquisition. So, it may be easier (and have more side benefits) to teach them English and then programming rather than creating a customized programming environment catering to their native language to use to teach them programming.


Logo is one of the few programming languages that has been translated into other languages, you might look for a dialect in whatever your native language is.


While it's certainly possible to learn programming without knowing English (millions of programmers have done it!), if your cousins don't speak English or another foreign language then you should probably consider that a priority, instead of programming.


They do speak foreign languages, but not English.


Just having the documentation translated might be enough. I remember using MS QBasic very early on; the language itself had English keywords and function names, but the online help was translated into German.


As cheesy as this video is they're right. My kids do not learn coding in school. Our area high school teaches kids how to use computers but there is no coding classes. When I went to school in the late 80's we have a program that allowed us to move a turtle on a green computer screen. It was my first exposure to programming. I wish schools would put more importance on this skill. Even if kids do not get into technology, knowing a programming language is an invaluable skill in any industry.


Has anyone noticed that they are recommending W3Schools?

http://www.code.org/learn/codecademy


True programming education is a education for hackers or in other words it is a self-education. Today our hollywoodstic world have many examples which may inspire anybody to become a hacker who can learn anything by hacking. Of course coding basics and algorithms, like arithmetic, should be at school, and many countries already have programming courses.


This is awesome.

I just wish someone had edited Will.i.am's quote though... I think he thinks 'reading code' is like reading music or something...

“Here we are, 2013, we ALL depend on technology to communicate, to bank, and none of us know how to read and write code. It's important for these kids, right now, starting at 8 years old, to read and write code.“


In France, we were taught Logo when I was 9/10 (back in 85) on Thomson computers (French equivalent of Sinclair ZX Spectrum) at school. http://regards.sur.sciences.free.fr/ordis/logo/logo.htm I got stuck into programming since then !


IMO make learning programing (fun) a path to learning math (not fun). Once you understand mathematic fundamentals, understanding finance - and other such disciplines - comes naturally. You soon realize that most of (consumer) finance out there are marketing flush revolving around a few formulas.


Why is learning math not fun? For me, learning math (fun) was a path to learning programming (not fun). Even as someone who 'enjoys' programming as a hobby, I hate the actual coding part. The math is the fun part. And that rush of power you feel where the computer obeys your every wim is a nice bonus (more of a reason to learn bash et el.).


you're right, the fun factor is very subjective. However, wouldn't you agree that those who enjoy maths from the get-go will generally be successful in most modern education systems? The same is not true for those who have difficulties in maths but were never given a early-enough introduction to coding.


You can strike the "(consumer)" before finance, and your sentence will still stand.


"Learn to Make Webpages - W3Schools"

WAT


I don't think they're as bad as they used to be, but still far from the first place I'd send someone seeking help.


Honestly, this was the first place I went when I started out (about 4 years ago). There werent many good sites out for learning to code back then. It was w3schools and lynda.com that really helped me get started.


Just tweeted to them about w3cfools.com hopefully they fix it.


On this topic, I think it's very important to create tools that allow learning and creation as envisioned by Bret Victor [1].

[1] http://worrydream.com/LearnableProgramming/


What's the difference between Code.org and Codecademy.com ? Are they trying to achieve the same thing but in a different perspective? It looks like a lot more celebrities are on Code.org making it an enticing place to be.


Code.org seeks to 'change the wind', so to say, of programming education, to help motivate individuals to learn more about coding. Codecademy.com is one form of online education to help satisfy the needs of those who became interested in programming, such as via Code.org and the many educators and decision makers who inspire non-coders to, well, code.


This is a great initiative. The video is powerful, but they forgot to include a link to the donate area right there in the video. I'd love to add my little startup to the list of places teaching how to program.


If we want to teach the next generation to code we should make sure that the "programming languages" we use work well on a touch screen with no keyboard or mouse.

That is, probably not text-based.


High time to change "Hello World" to "Change the World" http://news.ycombinator.com/item?id=5290217


my kids (9,9 & 11) play around with Scratch to create their own games, interactive presentations , ... They started to learn this a few years ago, and I only had to install it and show them the very basics. After that, they bootstrapped themselves using youtube tutorials. Btw, they are not programming, they are building games (at least that's how they look at it). I just want to say that tossing the right toy in their general direction might be enough.


I thing teaching kids how to program is needless. Let's make educational games like Robot Odyssey. This one really affected profession choice of people who played it.


Why isn't HTML/CSS or Python taught in high schools around the country? If I saw a similar video when I was in school I would have started way earlier


Java is the AP standard. Also, webdesign courses are HTML/CSS/javascript.


The Academy for Software Engineering is another effort in this area: http://afsenyc.org


What's the matter with this "Let's teach everyone to code" thing? Why code and not, say, medicine? Is there such a lack of engineers?


There is certainly a perceived lack of software engineers. (And, I think, a perception that coding is the most important thing a software engineer does. I'd question both of these perceptions.)


My favorite quote in the video is near the end: "Coding is as close to a superpower as you can get."

I feel that.


I'm currently in medical school, so I think my opinion might provide another perspective on this.

As others have pointed out in this thread, the incentives behind folks pushing the "learn to code" idea are varied: some people want more engineers to hire and some people want to sell to those learning to code. These seem like reasonable criticisms, but I think they miss the point.

Many of you, if not most, are in the software industry. You try to solve interesting problems every day, or, at least, you'd like to. Every industry and every field has the need to solve them, at least with my definition of 'interesting'.

Solving such a problem is difficult. It requires knowing very clearly about the rules of engagement, and mapping out strategies for tackling the issue. It requires an understanding of the lay of the land, but also the capacity to think outside the box. In short, it is exactly what all of you would expect from a 'good' programmer - the ability to think actively.

You'll notice that I make no claims of this sort about physicians. The best doctors may do these things, but most doctors don't. And at the very least, doctors certainly are not trained in ways of solving problems effectively. Instead, we are mostly trained in pattern recognition.

So what? Do I think a doctor would benefit from learning to program? Yes. Because figuring out how to writing a complex program is not so different from doing a complex surgery. Understanding algorithms is not so different from producing a good differential diagnosis. Most importantly, if we want to solve big problems we can't always rely on an engineer from the outside looking in and solving it for us.

Programming forces you to explain your understanding to something that is very stupid (in a way). If you don't understand what you're doing, your program doesn't work. That basic check doesn't exist for doctors. Ask your doctor what a graph of y = 1/x looks like. Then ask him to graph alveolar CO2 vs ventilation. You should be really afraid of how many doctors only know the latter. I would guess some of them even wouldn't know that! (but they probably know what to do with a patient who's hyperventilating, because they'd memorized it)

Programming is the means to the end, not the end. All this talk of APIs and IDEs and C vs Python vs Javascript really seem to miss the bigger picture here. The best way we have of teaching thinking is with programming (IMHO) and there has to be a way of teaching programming by getting all of the annoying crap out of the way. And we desperately do need more people who have the capacity to think and solve problems. Maybe not will.i.am or Chris Bosh or even software junkies in the valley, but definitely in every other industry.

EDIT: small grammar edit, no content change.


the universal aims of this project seem a bit misguided. only a small percentage of students will have the ability to be productive programmers.


favorite quote: "A computer doesn't care about your family background, your gender, just that you know how to code." — Dick Costolo (Twitter)


And a computer doesn't even care about that. :)


They should, like "come back to code, bastard!".


Fight between codecademy and code.org probably


Ll


Its a little bit relevant; so I would like to mention that I created a little collaborative and opensource[0] _spanish_ directory of videos and documents to learn programming; it's called http://Programando.la/, I would also like to mention that CodeCademy haves a spanish version[1].

[0]https://github.com/AltIvan/programando.la (MIT License)

[1]http://www.codecademy.com/?locale_code=es#!/exercises/0


Growing computer education you say? Also teach kids engineering — it's easy, everybody can do it, right? As easy as programming. Everybody can program. I have no idea why programmers have high salaries. And why we cannot find programmers that are not self-taught and possess at least the fucking theoretical minimum of CS disciplines and a grasp of professional culture. Yes, give the world more ignorant "I can code" folks, there is not enough of them!


Wow, it's even backed up by the official creator of the Internet, Al Gore!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: