I’ve decided to offer some free programming lessons. I won’t assume any prior experience, and we’ll be starting off with some very simple demos. But I think they’ll be a lot of fun, so sign up and give them a try.
I read an article in Salon Technology today called Why Johnny can’t code. This is exactly why I’m starting this class. Please read the article and let me know what you think
For three years — ever since my son Ben was in fifth grade — he and I have engaged in a quixotic but determined quest: We’ve searched for a simple and straightforward way to get the introductory programming language BASIC to run on either my Mac or my PC.
I embarked on the exact same quest myself back in 2000-2001. Fortunately, I found QuickBASIC and then Cybiko, for which I could program in BASIC thanks to Greg Smith’s B2C (Basic-2-C) compiler. It certainly wasn’t easy. I sought out many variations of BASIC, QBASIC, and QuickBasic, and I remember spending a lot time surfing around on search engines. Most of the interpreters would run on Windows, but they were originally designed for DOS. So I had to make it work, and fortunately, I was very persistent.
Kids are not doing “something else” other than BASIC. Not millions of them. Not hundreds or tens of thousands of them. Hardly any of them, in fact. It is not their fault. Because some of them, like my son, really want to. But they can’t. Not without turning into time travelers, the way we did, by giving up (briefly) on the present and diving into the past.
This is so true and so sad. I asked my sister today how she would experimentally roll two dice 100 times and find the probabilities of each of the totals. Her only ideas were to:
- Physically roll dice 100 times. How about 1,000 times?
- “Mentally guess” random numbers and then count up the statistics. Try doing this for 10,000 rolls!
In other words, it’s impossible. But it’s easy to do with just a little bit of basic programming experience. And that’s exactly what I’m going to provide.
Elliot
What’s a fun first project?
I have a number of ideas. You could go with a text-based RPG. This is what I started with. I used QuickBasic to create a Pokemon-themed text game.
Or you could build on a framework and make a shoot-em-up, like the space shoot-em-up Phoenix. This is definitely more advanced, but it makes use of graphics and allows for a lot more visual creativity.
Another possibility is making some kind of turn-based game. You could do tic-tac-toe, Connect 4, or checkers. This doesn’t happen in real-time, so there are no concerns about timing issues. It allows you to create your own creative rules, and build upon it with cool graphics.
My latest idea, though, is to make a Tower Defense game. I think it’s the coolest idea yet. It might be most conducive to learning Flash or some other web-based language, because that’s where it’s easiest to distribute– but it certainly doesn’t have to be that way. Tower Defense games have a lot of flexibility. You can have level-ups, different weapons, different bosses. I’m excited about this possibility, but I wonder if it might be too difficult. I’ll have to see someday if I can create a basic tower defense game in one day. If I can, I can probably teach it over the course of a summer. If I can’t, we’ll have to do something to make it easier.
And I’ve always thought programming should be made easier. Lowering the barrier to entry is not a bad thing.
What’s the best language for a beginning programmer?
I first dabbled in programming using BASIC, especially its various later forms such as QBASIC and QuickBasic. But I never got too far self-teaching myself this way. The true revolution for me came with the Cybiko handheld computer in 2001. I started programming games and apps for the Cybiko using Greg Smith’s B2C (Basic-to-C) compiler.
The Cybiko SDK uses the C programming language, but that was too advanced for me at the time. So I jumped into B2C, and by having lots of late-night IM conversations with Greg, learned about programming on a device with very limited graphics and CPU power.
Now, I’ve also programmed using Visual Basic, PHP, Java, C++, and most recently, Python.
Visual Basic is great for easily making GUIs. PHP is by far the best for easy web scripting. I love using Java for object oriented programming. And Python is great for newbies.
This past week, I helped a friend with his final project for CSCI 101. I was amazed by how little he was actually taught. It seems that I am right: introductory programming courses are almost always a failure. It is not the students fault. Rather, the teachers and curriculum are too assuming: the professors learned this 40 years ago, so how would they know how to teach an introduction?
The curriculum itself is not conducive to a good introduction. A good intro requires serious hands-on and 1-on-1 tutoring and mentoring, just like I had with Greg Smith. It also needs creativity: I would like students to come up with the own projects on what to make.
In my own past, I came up with some pretty neat ideas. First, a text-based Pokemon RPG, as part of my little website called “Gengar Studios”. Then, on the Cybiko, I created CyOS XP, which was a version of the Cybiko Operating System which looked more like Windows XP, which was really hot at the time. I also tried to recreate Phoenix, the classic space shoot-em-up for TI calculators. And of course, I loved trying to take full advantage of the 900 MHz wireless communications capabilities of the device.
Today, the Cybiko sells on eBay for somewhere around $10, even for a new model.
So where should we start?