
ACM Urges Obama To Include Computer Science in k-12 Education  - babyshake
http://usacm.acm.org/usacm/weblog/index.php?p=663
======
jmtame
First off, I love ACM as an organization (not to say I get along with all of
the members of our chapter). I volunteer time every year at our conference.
And I like education, sort of.

But it's bad enough that drop out rates are >50% for engineers in the US. You
think you're going to figure out how to teach it to younger students if you
can't even understand why half of everyone loses interest in higher education?

I have a hint: don't take Vannevar Bush so damn seriously. Yes, math + science
+ analysis == good. Especially when most of our CS and engineering programs
were designed during the Cold War. But we also got rid of our practice and
drawing coursework.

I'm not buying the iPhone because it's the "best engineered device." Somewhere
along the lines, our engineers forgot what the hell art, design, and usability
was. It's one of those things you don't want to take to the extreme. People
wonder why the CS jobs go to India, it's because CS is not difficult.
Creativity and innovation is, I don't see many companies outsourcing that (ok
I realize I just made a really vague generalization, but if you look into my
comment history, I do go into more detail).

I will say that it's extremely rare to find the guy who can not only code, but
design too. I have only met a few in my life, and they're always the most
respected people at a company who are incidentally the most desirable to all
the others.

~~~
randomwalker
You seriously need to appreciate the distinction between CS and coding. Let me
break it down: computer science is really difficult. It's not the CS jobs that
go to India. It's the coding jobs.

Also, here's something you many not know. K-12 CS education in India is
actually pretty good. My school started computer science in the fifth grade.
Internalizing the Turing machine (even if it is not formally explained) at
that age gives you a huge advantage should you decide to become a computer
scientist later.

So how come India doesn't produce good computer scientists? Actually we do. If
you look at the top CS conferences, the proportion of Indians is pretty high
compared to the number of people we graduate. It's just that Indians choose to
move to the U.S. to do research because there are no good government funded
research programs in India.

Next up, innovation and design. I think PG pretty much answered that one. It
doesn't matter if you have talented people, if you don't have a nurturing
environment like Silicon Valley, it's just not gonna happen. There's not much
incentive for an Indian firm to innovate because our business climate is just
so bad. Success depends more on how well you can bribe government officials
than on innovation.

That leaves coding jobs. If you teach everyone how to code, of course you're
going to have a lot of coders who aren't particularly good designers or
computer scientists. That's what we have. Many of my friends who are actually
good tried to kick it in one of the outsourcing firms, couldn't take the
boredom, and left to go to grad school or do something else. It's a self-
perpetuating cycle.

To summarize: K-12 CS education is not hard, and it's important for producing
good computer scientists. You just have to be prepared to accept that not
every kid will be interested.

~~~
jmtame
Computer Science is a discipline applied to something, such as doing coding at
a startup. Most CS students turn out to be coders. Not many people, for
example, are going to go off and write new compilers and program in MIPS
assembly. Most will end up doing the typical Java and C/C++ development stuff.
My roommate for example doesn't have any interest in AI or machine learning or
data mining (although I'm not necessarily referring to those fields as being
easily outsourced).

The complaint I'm making is one that has been voiced already by many
universities, including my own (Illinois.edu). It's the reason schools like
Olin College are getting built and considered by Newsweek and Kaplan as "one
of America's next Ivy League schools." It has nothing to do with computer
science being difficult, it's because it's not interesting. This isn't about
how to distinguish CS from coding, it's about fixing the outdated curriculum
from the Cold War when we basically said "forget drawing and practice in the
Computer Science and Engineering degrees, we're strictly math science and
analysis now."

Java and C/C++ development is what most CS students will end up doing
(coding). Those are the people I'm talking about; I think you misunderstood
what I was trying to say. If you think success is all about bribery, you (as
defined by Michael Arrington) have a losing attitude and have no place in
Silicon Valley. Not my words, but Mr. Arrington's. And I for one side with him
in saying that hard work produces more results than flattery.

My point is this: nobody wants to learn coding with zero application. I'm
saying that higher education doesn't have it right because 50% of students
dropout, so you're going to try and move it into k-12 and expect better
results? How on earth do you propose to do that exactly?

~~~
mamama
This is an interesting exchange between Mark Guzdial and Alan Kay:
<http://www.amazon.com/gp/blog/post/PLNKVUNBWIDAS9YQ>

The focal point of the argument seems to be whether CS "education" and
"vocational training" should be separated.

P.S. Nice to see another UIUC student. I've been accepted there and would
possibly end up enrolling unless I get into some long shot universities. How
is the scene there?

~~~
jmtame
You are coming in at a good time, actually. We are just now launching the
iFoundry program, keep your eyes on it. E-mail me sometime, I'm always
interested in meeting people from HN at school. Check out my profile.

------
jackowayed
I have personal experience with this.

I'm a highschooler (junior now), and I took an intro Java class freshman year,
AP Comp Sci soph year, and I'm TAing a Java class right now.

There is very little learning of Java going on in any of those classes. Part
of it is that the teacher doesn't make it a very hard class, but also even
among the people who try and do all of the assignments the majority just don't
get it. They don't get the simplest things.

And it's not that my school gets a lot of people who just are "stupid" or
unmotivated. It's a charter school that you have to apply to and take a test
to get in. Its focus is math, science, and tech, and it's like 42nd (something
close at least) public HS in the nation according to US News and World Report.

But a lot of them just don't understand programming. They have functions
explained to them, and they're shown some examples like areaOfSquare(int side)
and areaOfRectangle(int length, int width), and half of them ask me for help
on the first one areaOfTriangle(int base, int height). And most of the rest
ask the people that I helped for help.

Or I fix a curly brace issue (I hate Java, for the record (ok, hate's too
strong)) for the same person almost every day, but she can't figure out that
maybe she should try adding a curly brace to the end of the file before
calling me over.

This incompetence is even more true now that Java is offered to all freshmen.
For my freshman year, unless one did a very long, annoying, inane set of
assignments to show that you know how to use MS Office, freshmen had to take a
class teaching them how to use Office freshman year, and only after that could
they take Java. So the people in Java were people who actually wanted to take
it, not just people trying to fulfill their graduation requirements.

Back then, about half of the people in Java actually tried (the rest were
basically the seniors who had stopped caring), and around half of the
nonseniors who took Java would go on to take AP CS.

The ratios have tilted a lot more towards incompetence now.

Programming is something that not everyone understands, and teaching those
that just don't understand programming is a monumental task.

All schools should _offer_ at least one programming class, but making it a
"Core Component Of Science And Math Education" is a mistake. A lot of people
would just do badly and not learn anything.

~~~
andreyf
_Programming is something that not everyone understands, and teaching those
that just don't understand programming is a monumental task._

I've taught basic programming to a lot of people, and I find that the problem
is on the other side:

 _Teaching_ programming is something that not everyone understands, and
learning from those who just don't understand _teaching_ programming is a
monumental task.

Students come in with different views of the world - some of them have the
metaphorical analogies in place to understand scope and curly brackets as
"boundaries" or "bags", others don't. Explain it to them.

~~~
gaius
We had this discussion on another thread and concluded that Java's a very bad
introduction to programming. To understand even Hello, World requires an
enormous amount upfront:

    
    
        class HelloWorld {
            public static void main(String[] args) {
                System.out.println("Hello, world!");
            }
        }
    

What's a class? Why does the name of my class have to be the same as the name
of the file (and why do I have to rename it on the disk if I change it?)
What's "public", "static" and "void" mean? What's an array? What're arguments?
Why is String capitalized when main isn't? What is this System business, why
can't I just print? Why do I have a semicolon on the end of that line?

If you want to teach people you've got to start from the freedom of using a
suitable language, which means to all practical purposes LOGO, BASIC or
Scheme.

    
    
        10 PRINT "HELLO, WORLD!"
    

Or

    
    
        (display "Hello, world!")

------
mattmcknight
I would say taking personal finance would be a higher priority. I think we
should require a proven understanding of compounding interest before giving
out a credit card, car loan, or mortgage.

Understand pure CS seems to me less exciting for most students (especially for
those that can't pass algebra) than getting into some engineering, where they
can build real stuff. You have to mix theory and practice to maximize (and
compound?) student interest.

------
DaniFong
"A chorus of voices exhorts kids to study science. No one stops to ask whether
it is inhumane to force adolescents to spend the bulk of their time studying
subjects most of them hate." \-- Unabomber Manifesto, Ted Kaczynski

(Personally, I think that the notion of a core curriculum is mistaken,, but so
is much of public education, and I don't know which small concrete steps would
be best to move it forward.)

------
sethg
On the one hand, I think it would be great to live in a world where some basic
level of "code literacy" was expected of all adults--just like today, every
adult in the industrialized world is expected to be able to read and write,
and Ph.D.s in education have put a great deal of effort into figuring out how
to teach that skill to the kids who Just Don't Get It.

On the other hand,

(1) as jmtame says above, we don't seem to have a clue (yet) about how to
teach programming to college students who Just Don't Get It

(2) if we put CS _in_ to the K-12 curriculum, then something else needs to be
taken _out_ , and I'm not sure what deserves the boot.

~~~
tokenadult
"Ph.D.s in education have put a great deal of effort into figuring out how to
teach that skill to the kids who Just Don't Get It."

Actually, Ph.D.s in education have done a generally appalling job of
researching how children learn to read. There are a few happy exceptions, but
I would look more to Ph.D.s in linguistics or psychology (harder disciplines,
and more evidence-based, than education in general) for advice on how to teach
children to read.

Here are some sound resources on reading instruction:

[http://www.amazon.com/Lets-Linguistic-Approach-Leonard-
Bloom...](http://www.amazon.com/Lets-Linguistic-Approach-Leonard-
Bloomfield/dp/0814311156/)

[http://www.amazon.com/Language-Development-Learning-Read-
Sci...](http://www.amazon.com/Language-Development-Learning-Read-
Scientific/dp/026263340X/)

[http://www.amazon.com/Overcoming-Dyslexia-Complete-
Science-B...](http://www.amazon.com/Overcoming-Dyslexia-Complete-Science-
Based-Problems/dp/0679781595/)

So, yes, the problem with introducing programming into the K-12 curriculum is

a) figuring out how to teach it well to learners of that age of varying
backgrounds and interest levels, and

b) figuring out what else gets crowded out of the curriculum.

~~~
sethg
I don't want to get into a debate here about what the best techniques for
teaching reading _are_ (not to mention how to get teachers in the classrom to
actually _use_ the techniques); my point is just that everyone in the system
agrees that the schools have a duty to teach literacy to every kid who is
biologically capable of it.

150 or even 100 years ago, I don't think this was the case; if a child didn't
learn to read in primary school then it was considered the child's failure,
not the school's, and the kid just dropped out and got some job that didn't
require literacy.

~~~
tokenadult
My ancestors 150 years ago and even more recently learned to read before they
started school, as is noted in their diaries or recalled by my oldest living
relative. And Horace Mann noted BEFORE he started campaigning for compulsory
school attendance in Massachusetts that by his estimate most inhabitants of
Massachusetts were literate in English. (He wrote articles in the journal he
founded, the Common School Journal, which I have looked up, saying that.) The
origin of the compulsory-attendance school system as we know it today in the
United States was not to ensure literacy but rather to accomplish other social
goals promoted by Mann.

------
jim-greer
K-12 curriculum should be weighted more towards programming practice than
theory. Understanding the craft of programming, good UI design, and how the
web works will be relevant to kids for their whole lives. Turing machines, big
O notation, and discrete math are all interesting, but emphasizing them over
coding would be like learning number theory without knowing how to add and
subtract.

------
StrawberryFrog
To use an analogy with cars - everyone should be taught how to drive one, but
not everyone needs to know how to build or fix one.

------
vaksel
isn't that already included, or was it just my district? Wouldn't put it past
them, very rich town, so the school district had money coming out of it's ass.

Maybe it was just an elective. But my high school did offer 2 different
"computer science" classes. The basic one was pretty much intro, and taught
Visual Basic. And then had an advanced class where they taught us Visual C++.
Basic stuff forms, calculations(accounting stuff) and then for final had a
project to make a game.

Personally I don't think they need to teach it as a core requirement...CS is a
class for the geeks, do you really want people who barely pass basic Algebra,
to start wrapping their minds around C++? Especially when they have 6 other
classes to stretch their mind.

------
russell
I wonder if programming might not be an easier introduction to symbol
manipulation than algebra. They could get the feel for variables and
algorithms in a more concrete way. The transition to algebra would not be so
mind bending for a lot of the kids.

