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.
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.
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...)
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.
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.
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.
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.
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).
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.
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)
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.
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.
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.
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.
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.
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.
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.
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%).
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.
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?