“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.” -Edsger Dijkstra, 1972 Turing Award Winner, Author of “GOTO Statement Considered Harmful”, 1968.
I teach Computer Science at an accelerated Private School. I myself cut my teeth on BASIC at age 10, as well as Logo (with Turtle Graphics!). For executables, I now use C, C++, C# and Java. I play around occasionally with Perl, Python and Ruby.
I have found through years of experience that a beginning programming regimen for the young student must meet several criteria:
- The student must be able to get up and running doing things that are interesting to them quickly
- The programs they create must look like things they have seen elsewhere. Turtle Graphics and console applications may be easy to do, but a 21st Century student does not recognize these as “real world” applications, and can get discouraged.
- the skills they learn must be portable. In other words, the syntax and routines they learn must be applicable to and recognizable in as many other situations as possible, or they will feel like they have learned nothing useful. these days, that means stick to the Algol60 continuum, which incorporates Pascal, C, C++, C# Java, Python, Perl, Ruby, etc.
I discovered what I currently regard as the perfect beginner programming language quite by accident last year. In my Computer Science class (the one where they learn programming) I tried doing OpenGL stuff in C, because I thought it might remind them of video games. That worked well, but phase 2, where we got to C++ and OOP, was more difficult than i had expected. No problem, I thought, it’s all part of learning to program, mastering the sometimes arcane complexities.
Meanwhile, over in my Computer Applications class (the one that gets them out of their computer proficiency requirement, where they learn Office) we were doing some XHTML web design. Knowing that the school would support efforts to push beyond the curriculum, i decided to toss in a little Javascript. Not particularly familiar with the language beyond a few basic scripts I had tried, I picked up The Visual QuickStart Guide to Javascript because it was cheap and seemed easy.
The book is broken up into very short lessons, which made it a dream to put lesson plans together. What’s more, if I keyed in a script wrong, the book’s website has all the scripts for easy copy ‘n’ paste.
Requirements: A computer, a text editor (Notepad, saving the files as Type: All Files, and appending .html after all file names), and a browser.
Granted, the students already knew how to put a basic web page, together, but that knowledge takes 10 minutes to learn, especially for the early examples in the book, and they walk through anything more complex that you might need in later chapters. The code for each script page is given a full screenshot and a detailed description of what each part of the code does.
I had my Apps students working with and fully understanding Objects inside of a week. Granted, Javascript is not a particularly powerful language, but it meets all my above criteria.
I now introduced Javascript to my CS class this year, and we do the occasional script as we learn about hardware, OS design, etc. My hope is that they will transition fairly readily to C#, C++ and C before the end of the semester. If the thread is still around in a few weeks, I’ll report back.