Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Cárdenas: “416d65726963612043616e20436f646520” (house.gov)
68 points by __david__ on Dec 12, 2013 | hide | past | favorite | 80 comments


This legislation would designate computer programming languages as “critical foreign languages” and provide incentives for state and local schools to teach more computer science beginning as early as Kindergarten.

Considering a computer programming language to be a foreign language seems a little bit silly and so does teaching children computer science in Kindergarten. Is he missing the point or is this just the path of least resistance to getting more computer programming coursework into public schools?


I don't think teaching programming concepts to kindergarteners is silly. I learned to program at about that age (first grade, technically), and things like Robot Turtles [1] can be taught to kids who can't even read.

[1] http://www.kickstarter.com/projects/danshapiro/robot-turtles...


We did a simple example, which was to give all the students in the class one "step" as a program. And we lined them up. And then we did the towers of Hanoi solution (although none of them could solve the problem prior to us running it).

If you're interested in recreating this. You just need flash cards (with the step on them) and a couple of colored hats (I think it was three) to represent branch targets.

So card might be "Look at the towers tell the person behind you which has the largest disk" and that persons card is "if the largest disk is on the left one, the person in the green hat goes next", the person behind them has "if the largest is on the center pole the person in the purple hat goes next", the person behind them has "move the disk on the left pole to the right pole" etc. When you "jump" all the kids go to the back of the line except the one with the green/purple/yellow hat and that kid does their step then the one behind them etc.

Its a lot of fun. And you can mix up the line and watch the disks get put into very strange arrangements.


My dad taught me to use HyperCard and ResEdit at about that age as well. This idea that it's futile to try to teach young kids to code is bizarre to me. I can only assume that it comes from people trusting their intuitions without actually observing reality.


We should teach 5 year olds computers with technology available in 1993. QBASIC, Logo, HyperCard, ... (Not joking.)


Doesn't MIT's Scratch [1] accomplish this? I was going to default to this. I'm wondering how much reading, writing and math my kids need to have before starting this. Reading complex sentences and addition and multiplication of single digits? (Wrong thread to get started on what EWD [2] thinks on this...)

[1] http://scratch.mit.edu

[2] http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EW...


Yes! My oldest is 4.5, and I'm thinking about how to assemble a text-only machine to force typing, learning commands, navigating the file system, etc. Might as well start him off with linux and bash instead of DOS and batch, though. :-)


It's futile unless they show voluntary interest in the subject. I started off in elementary school, but it was motivated entirely through my own volition.


Showing children that a simple set of instructions can allow a complex operation to be performed is incredibly important.

Heck when talking to my non-programming friends the #1 issue is how they think the trade is too complex to dive into.

While I would not wish that everyone becomes a software engineer, programming is quite useful.


I agree. In Cambridge, UK, there are some phd students from Computer Laboratory in University of Cambridge, who go and teach first grade kids concepts in computer science. This does not necessarily involve coding. I heard they were teaching them how packets work by making some kids routers, one client, on server and packets etc.


Shouldn't we teach the basics to a degree that everyone is passing those instead of wasting money at that level? And I do think it would be a waste.


> Shouldn't we teach the basics to a degree that everyone is passing those instead of wasting money at that level?

I don't think "teach the basics to a a degree that everyone is passing" and "wasting money" are a fair description of the relevant options.


You have a very utilitarian view of education that I find uncomfortably limiting.

My own view is that rather than worrying about children 'passing' some arbitrary standardised test. We should be aiming at teaching children to think critically and have a large intellectual toolbox to work from.

Of course; I'm weird in that I think children should be introduced to as many concepts as possible as early as possible and that the principles underlying calculus and differential equations are exactly the sort of thing that a bright 7 year old might find engaging intellectual toys. I also think that education is a lifelong process and needs to include both regimented group learning and self-guided exploration.


Isn't the challenge of education-planning how to compel students, not how to agree that we need to?

Perhaps exposing children to more novelty and creative outlets presents more opportunities to hook their interest.


Amount of sillyness in the is spectacular, though not unusual in the government. Silly name (which would be completely unsearchable and also due to work length may not display well on many system), silly idea that coding should be designated as "foreign language". And on top of that - an idea that the government should take money from people and then give them these money back through the intermediary of schools so that they would teach their children to code.

And now imagine how exactly coding would be taught in the same schools in which 25% of 12th graders do not pass "basic reading" test. In their own native language, not in hexadecimal or Greek. Where those money would be spent? How these courses would look? What forms would this "coding education" take in order to get those government money? If you think this is silly now, it'll get much worse if this ever passes.


I don't think teaching computer programming in public schools is silly and I hope I didn't imply that in my comment.

And now imagine how exactly coding would be taught in the same schools in which 25% of 12th graders do not pass "basic reading" test.

One approach to teaching a new subject might be to forget about the bottom 25% and the top 25% and focus on building up skills for the 50% in middle (2nd and 3rd quartile). If you can get a foothold there you can begin to expand at the margins.


>>> I don't think teaching computer programming in public schools is silly

No, and neither do I. I, however, think that having the federal government to prescribe what to teach in schools through legislation is silly. Especially if it is done the way everything else is done in public education system, which breeds unintended consequences and is not exactly rigged for pupil's benefit.

>> One approach to teaching a new subject might be to forget about the bottom 25%

You must have never heard anything about US public education system if you think something like that would ever be palatable. Does "No child left behind" ring a bell? But the honorable congressmen know what rings the bell:

Along with redefining computer programming as a critical foreign language, the 416d65726963612043616e20436f646520 Act would create a competitive matching grant program for schools, particularly those in low-income areas, to create new ways to teach computer science and engineering, in tandem with universities and non-profits.

"Particularly those in low-income areas" are those that are bottom 25%. And dumping federal money on them and saying "now teach kids to be best programmers ever!" is doubtful to produce the results you would wish to see.


As you say, the fact that a program won't benefit 100% of students shouldn't count against the program. That said, do you have any thoughts on preventing top quartile students from becoming bored with middle-half education and turning into bottom quartile students?


I'm probably an outlier, but I learned BASIC at 4 years old (under my own initiative), and began to grasp essential concepts well enough that I was programming 6502 assembly on my C-64 with an EPYX FastLoad cartridge, at the age of 6.

Why shouldn't kids be presented with the opportunity to learn these things at an early age?


According to this page, most 6 year olds are still figuring out the whole "counting" thing, and only have some basic addition and subtraction. Logo seems like it would be a good fit for a typical 6 year old, but not much more. You seem like an incredibly exceptional outlier.

http://www.pbs.org/parents/childdevelopmenttracker/six/mathe...


Come on, you're definitely an outlier. How many 6 year olds had a C-64?


Well, my parents and my uncles did.

My uncle conscripted me to enter in Basic games printed in magazines when I was about 8. I've been hooked ever since (on coding...I don't really game much anymore).


I was lucky in that my father purchased a ti99-4a but kids with exposure to PCs, let alone programming in those days were definitely rare!

We had a "gently used" *86 in 6th grade classroom, which I think was the first PC exposure for most of my fellow classmates.


That was my first computer. Unfortunately I didn't have any kind of persistent storage, so I while I dabbled in BASIC I didn't really get into programming until I owned an XT. I wish schools had taught computer programming in my youth. Once a week we'd go to the "computer lab" and play "Oregon Trail " or something that at least provided exposure to computers, but little was done to educate us on how computers work. The tragedy is that today, fewer kids are learning the how. Using a computer isn't a black art, it is now pedestrian like teaching typing. While it may be a very serviceable skill to learn, it doesn't prepare students for truly valuable skills like logic and basic problem solving. I'm glad that there is renewed interest in exposing children to programming. While a programming language isn't a foreign language like Latin, it certainly has its own grammar and rules that can affect critical thinking in the same way. As long as the bill doesn't mandate that a particular programming language is the "Language of the Land," I believe that this could be a good measure.


I did.


Given the principle that programs are written for other humans to read and only incidentally for computers to execute, treating it as a language for communicating with other humans doesn't seem silly to me at all.


I think as far as classifying it as a foreign language is concerned, it could likely be a reflection of the fact that US education curricula are decided at a state level in general, and so the federal government has limited ability to incentivize source code literacy in schools except (I'm guessing) through a measure such as this.


Why federal government has to do it? There are no state governments that know these facts? Let's assume this is true for all states - but at least California has Cárdenas and Honda, right? And I assume those have some support in California, otherwise they wouldn't be elected. So if they did it in California (which, as everybody knows, has lots of money to spend on government programs) and it were a great success (as most of government programs dealing with what to teach and what not are), California would produce a lot of highly qualified programmers that could take jobs from every other state (software development is highly mobile) so other states would see the light and introduce the same programs in their states. So why it must be federal and can't be decided on the state level?


My daughter is in a Montessori kindergarten. Seeing how they teach math (which goes so far as introducing the concepts of exponents), it would be very easy to apply the same techniques for teaching that age binary notation & arithmetic, simple logic processing, and programming. Independently on the iPad she's learning the essentials of programming and algebra via apps Kodable and DragonBox.


Am I the only one who finds it supremely annoying when somebody lists a string of hex numbers and says "this is the hex translation for <some string>"? There's no such thing as a hex translation of text. Of course, if you specify an encoding scheme, then it makes sense.

So in other words, this is an attempt to be clever but is actually just wrong.


I wouldn't go so far as to call it wrong. It's a pretty safe assumption that they are using ASCII as an encoding. And thank goodness ASCII is a subset of UTF-8, since that means if you are using either one of the two most dominant character sets to encode that string of text, you'll be able to translate the act's title with no problem.


I think that's needlessly nitpicky in this case. The hexadecimal title is a PR shtick to grab attention; the technical details of why calling it a direct hexadecimal translation is inaccurate don't really matter.


    s = '416D65726963612043616E20436F646520'

    def decoder(s):
        cl = [ s[i]+s[i+1] for i in range(0,len(s),2)]
        cl = [int(c,16) for c in cl]
        f = "".join([chr(c) for c in cl])
        return f

    decoder(s)
returns 'America Can Code '


Also:

    '416D65726963612043616E20436F646520'.decode('hex')
Edit: In Python 3,

    bytes.fromhex('416D65726963612043616E20436F646520').decode('utf-8')


nice! Mine was similar to olefoo's:

x = "416d65726963612043616e20436f646520" ''.join([chr(int(y, 16)) for y in [x[l:l+2] for l in range(0, len(x), 2)]])

I do think it's funny that they (erroneously?) put the extra space on the end of the string. If you read the press release for the bill I don't think the 20 is supposed to be there.


Sweet, I didn't even think of using the string methods; always nice to have a blind spot pointed out.


Mithrandir Can Code!


I got a really crazy one-liner:

    ''.join([chr(int(z1 + z2, 16)) for _, ((_1, z1), (_2, z2)) in groupby(enumerate(ciph), key=lambda (i, y): i // 2)])
edit: my goal was not to do indexing explicitly


Nice. Do you import itertools in your .pythonrc or was it just already in your shell?

itertools is one of my favorite python modules.


I imported it. So I guess it's not a technical one-liner


Perl:

    print pack "H*", "416D65726963612043616E20436F646520"


and the ruby equivalent:

  "416D65726963612043616E20436F646520".scan(/../).map { |x| x.hex.chr }.join

  => "America Can Code "


   ['416D65726963612043616E20436F646520'].pack('H*')
   => "America Can Code "


I thought it curious that it included a space at the end (0x20), before I ever decoded it. Anyway, here's my contribution to the hex-to-binary Rosetta thread.

  echo '416D65726963612043616E20436F646520' | xxd -p -r

  --> 'America Can Code '


TCL:

  % puts [ binary format H* 416d65726963612043616e20436f646520 ]
  America Can Code 
Or if you want to see the trailing space:

  % puts '[ binary format H* 416d65726963612043616e20436f646520 ]'
  'America Can Code '


JS

    "416D65726963612043616E20436F646520".match(/.{2}/g).map(function(s){
        return String.fromCharCode(
            parseInt(s,16)
        );
    }).join("")

Or the 1 liner :-)

    unescape("416D65726963612043616E20436F646520".replace(/(.{2})/g, "%$1"))



If I saw someone I hired using that website, I'd immediately fire them for incompetence. It's not even client-side, it submits a form post...


In my view, there's a difference between programming and computer science, though I could forgive the Rep for using one as a generic term for the other. Disclaimer: I'm a programmer and definitely not a computer scientist.

As I mentioned in another recent thread, "programming" doesn't need to consist of a semester of C, or a slog through Horowitz and Sahni. My kids simply think of programming in terms of "making the computer do things." They like to play with Scratch, and have made me promise to teach them Python. My daughter's interested in math, and I've showed her how to solve equations and graph things using Maxima. We have a couple of Raspberry Pi's, so the kids have gotten comfortable with the command line, configuration files, etc.

Just find ways for the kids to do things and make things using computers, with a bias towards letting some of those things resemble programming.


That blasted "f". If that wasn't there I could joke about how the act calls for 416 rolls of a (65,726,963,612,043,616 times ten to the power of (204,36f,646,520 factorial))-sided die. (The act name itself seems to have an exclamation point on it.) But the "f" in the middle ruins it.


It's a little odd that the last character is 0x20. Does that count as a typo in the short title?


According to the rep himself [1] it's so the House could add on "Act".

[1] https://pay.reddit.com/r/programming/comments/1sqnj7/416d657...


Thanks, good to know.


That's how it works in the government - precise to the last detail. They'll fix it in the amendments. Probably will turn out as "Amer1cA can_c0dde" in the final version of the bill and would include $180M in corn subsidies.


I thought that was funny, too.

Specifically, "416d65726963612043616e20436f646520" is the hex representation of the ASCII encoding of "America Can Code ", with a trailing space...


They have an extra space at the end of the name? Paste fail.


A whole generation of kids will now grow up forgetting to trim off trailing whitespace.

Thanks, Congress.


416d65726963612043616e20436f6465273b2044524f50205441424c45206c61773b202d2d


If only laws could be removed by sql injection...


When I was around 7 or 8, I borrowed every book on BASIC from my local library that they had, since that was all they had that dealt with programming. My parents encouraged me but didn't have anything close to a technical background, so they couldn't do much, and I didn't have the ability to stay focused and start slowly, from the beginning of those books to get much out of them. It was years before we had internet access so there weren't better resources available. I sometimes wonder how different my life would have been if something like this had been there to help focus my learning, provide guidelines, and encourage the structure I was lacking. This could give kids options they might never have otherwise.


At first I thought the hex was ridiculous, but I guess it's a good PR stunt. I mean, we're all talking about it now.


The naming of bills is pretty much always a PR choice. This one is at least a bit creative instead of the "bill does totally the opposite of what the title says" trend.


Ah, the clean air act....


Has “Not everyone can be a programmer” been studied?

http://programmers.stackexchange.com/questions/163631/has-no...

I don't think this is a good idea. I don't think programming is hard and only for "the chosen ones", but not everybody can do it.


Not everyone can sing, but we still have music class. It's useful to at the very least give kids a toe in the water regarding the subject.


> “416d65726963612043616e20436f646520” is the hexadecimal code translation of “America Can Code.

Ooh, so close.


What's up with the path to an XML file in the PDF? See top: http://cardenas.house.gov/sites/cardenas.house.gov/files/ACC...


This a great step forward. General IT education at an early age is currently non-existent in most schools around the world.

Technology is for everyone - not just a select few. Teach all kids (and adults) basic coding skills and you'll be safeguarding democracy by preventing technocracy.


If we can get official recognition of programming languages as just language, then it might be easier to make them recognize that it's just math and should not be patentable.


Here's a little puzzle for you:

A-F are 3/8ths (6 of 16) of the hex digit set, yet only 1/6th (3 of 18) bytes in 'America Can Code ' have A-F. Why the large discrepancy?


To start with, only 7 of the 26 letters (uppercase and lowercase letters are only different in the first digit, which is never higher than 7 in ASCII, so I'm ignoring the difference) in the alphabet have an A-F in one of the digits, so in a text composed only of letters with all letters being equally likely, the frequency of A-F would be 26.9%. Additionally, A-F occur disproportionately in infrequently used letters. Adjusting for the frequency of letters in English[1], the expected frequency of bytes with A-F is 21.7%.

The space character also doesn't have an A-F, so that will lower the frequency further. If we assume that the frequency of spaces is the same as in "America Can Code ", (17.6%) the expect frequency of A-F comes out to 17.9%. That's very close to the number in "American Can Code " (17.6%).

[1] http://en.wikipedia.org/wiki/Letter_frequency#Relative_frequ...


But I thought code is art not a foreign language!


Yeah, I don't see Perl or Python or Ruby or well any option like that in Google Translate's drop down.


No. :(

This will eliminate other languages in the US.

Chance to japan's school systems, make high school where you have to apply, and have it specialized.

[edit: wrong country.]


Suggested improved title: 416D65726963612043616E20436F646520: The "American Can Code" Act


The "American Can Code " Act

You missed the trailing 0x20


New Math 2.0?


A foreign language helps you translate from your native language to another's native language.

A programming language helps you translate from the logic in your head to computer language. Teaching a programming language if the logic isn't there is useless, but trivial to learn the other way around. Not saying this is a bad thing, but the comparison/approach seems inappropriate to me.


My thoughts exactly. While teaching kids the basics can't hurt, designating programming languages as "foreign" is a stretch at best. While they surely seem "foreign" to those who can't code at all (which would likely include the rep. who introduced this bill), they are not "foreign" in the same way that German or French or Spanish is "foreign" to English.

What is different is they are a representation of a logic system, either as a series of steps to carry out, or a set of transformations to perform on data. Teaching a programming language as a "foreign" language, without also teaching the logical way of thinking that allows one to write a program in the first place, will likely not produce the outcome the bill is intended to produce.


By far the easiest way to learn programming logic is by learning a programming language. It's not that inappropriate.




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

Search: