Letters to the Editor
-
Maybe too advanced, but here's a Make Your Own Game Console kit
http://www.xgamestation.com/about_xgamestation.php
-
New generation of scientists can't code
I'm a biologist. When I was a teenager (in the 1980s), I learned to program, first in BASIC and then in FORTRAN. In the last 10 or 15 years I have written thousands of lines of code (mostly in Visual Basic) to analyze data and implement machine controls for my experiments. It's probably not the best code ever written, but it has been tremendously liberating to be able to get jobs done in exactly the way I want them done, without having to beg (and wait for) third-party software providers to provide solutions for me. Indeed, a scientist who can't program is not likely to be doing experiments on the cutting edge. When you're doing a really unique experiment, no one has been there before to provide tools for what needs to be done, so it's up to the scientist to write (or build) them him/herself.
Now I'm at the stage in my career where I teach younger scientists how to do research. And what I'm finding is that they overwhelmingly have no idea how to write even the simplest code. I've wondered why this is: aren't kids these days interested in programming, which was all the rage among the "smart kids" in high school in the 80s?
This article maybe provides some of the answer to this question. Computers were relatively new in the 80s, and people (inclduing kids) saw them as devices for... computing. In the 90s and 2000s, computers are devices for surfing the net and playing games. I think the author is right that a very simple and universal programming language such as BASIC should be included with every OS, and math and science textbooks should encourage kids to learn to solve problems with it. Of course not every kid will be interested in using such a tool. But maybe enough will so that I won't have to teach graduate students and post-docs (who have been going to school for up to 25 years) how to program.
-
This topic has been nagging at me for a while.
I've been troubled by this very same concern for years now. You see, when I was a young lass, I always wanted more games. Back in those days, computer magazines were treasure troves of source code. There were countless new games hiding inside the covers, if you were willing to invest the time necessary to do some typing.
One day, as I was typing in the source code, my head exploded. I realized, all of a sudden, that I understood all of this arcane gibberish I was typing into the computer. It made sense to me. I started to change the code, and experiment. I started grabbing books on BASIC, and learning. I knew how to make the computer do new things. It was the biggest power trip a girl could have.
Today, I'm still typing in game code, but that's because I'm a senior game systems programmer. It's probably fair to say that I would not have the career I have today, had it not been for the ready availability of source code in my childhood. Even though my sister is also a programmer, it's unlikely that her daughter will serendipitously stumble into programming, as I did. I seriously wonder how any child would do so, these days.
-
CP4E
Python has an initiative called Computer Programming for Everybody. It is fairly easy to convert Basic programs to Python. Like Basic, Python is interactive, where you enter commands at the prompt. Unlike Basic, Python has many additional libraries that allow you to solve complex problems. Scientists use Python as a problem solving tool, they don't have to wait for a programmer. There is an effort to bring Python programming to the math curriculum, see the Python EDU-SIG for more information:
http://www.python.org/community/sigs/current/edu-sig/
Not everyone will get hooked on programming, but I believe that everyone should learn how to write a computer program and this is what CP4E is about.
-
it's not just programming either
What a great article! I was in my 30s back in the early 1980s when I got my first computer, a second hand Tabasco or something, and it was cool because it had TWO floppy disks rather than just one, and an amber screen rather than the ubiquitous green. I well remember the thrill of labouriously typing in line after line of code and then making the program run. And although I wouldn't swap my gorgeous laptop for that long-gone beige box, I do agree that children would benefit from learning the BASICs.
And it's not just programming! People marvel that I make my own jam, for example - sugar, water and fruit boiled together, how much easier could it be? Teachers are discovering that a lot of city kids have no clue where milk comes from, or what a carrot looks like. Doing just about anything "from scratch" in the urban West is increasingly regarded as niche or just plain eccentric.
Looks like a marketing opportunity for someone - dinky retro computers for boomers to teach their kids the joys of pong!
-
I second Python, here are some other recommendations
I second the idea that Python can replace BASIC as a beginner's language. It is interpreted, so like BASIC you can follow it "line by line".
In general, any programming language which can be run in an interpreter, one statement at a time, could be used for this role, those languages that don't teach the bad habits developed by BASIC are preferable.
You could use Haskell (the HUGS interpreter is available for free but it's probably a bit too weird for first time programmers), FORTH (which will inculcate even worse habits than BASIC, free interpreters are available though and it's very similar to assembly language programming), Scheme (last I checked the language of choice for educating programmers at MIT, and for which many free interpreters exist) or Squeak (which was created with pedagogy in mind and like LOGO makes graphics programming trivial).
If you are looking for BASIC specifically, then you'll have to pay, but even modern BASIC like Visual BASIC or realBASIC (available for Windows and the Mac) have removed some of the more egregious aspects of BASIC such as the dependence on line numbers and the associated tendency to produce spaghetti code riddled with GOTOs. They also have added some object oriented features, and object orientation has largely superseded subprograms and global state variables (another sin of BASIC but shared by many languages) so there is no point in not starting on an object oriented language to begin with.
There's no reason to discard current languages as too modern, anymore than you'd teach budding auto mechanics about carburetors, rather than how to diagnose a modern fuel injected system.
