Let's take a look at the Small Basic talk I gave this week at the International TechNet Wiki Summit 2015. Here's a write up...
I started with the very beginning (which is a very good place to start)...
Hello World (Small Basic Blog)
Vijaye learned on BASIC. (My first programming language I learned was BASIC, and my second was Visual Basic.) Vijaye loved the simplicity of BASIC as a first language to learn. And then one day a friend sent him this article...
Why Johnny Can't Code (Salon Blog)
In that post, the author calls out Microsoft with a challenge:
"... whenever I mention the problem to some computer industry maven at a conference or social gathering, the answer is always the same: “There are still BASIC programs in textbooks?” At least a dozen senior Microsoft officials have given me the exact same response. After taking this to be a symptom of cluelessness in the textbook industry, they then talk about how obsolete BASIC is, and how many more things you can do with higher-level languages."
"All right, here’s a challenge. Get past all the rationalizations. (Because that is what they are.) It would be trivial for Microsoft to provide a version of BASIC that kids could use, whenever they wanted, to type in all those textbook examples. Maybe with some cool tutorial suites to guide them along, plus samples of higher-order tools. It would take up a scintilla of disk space and maybe even encourage many of them to move on up. To (for example) Visual Basic!"
Although many Microsoft employees have criticized BASIC as a programming language to learn off of, nobody I know at Microsoft (including myself) share that opinion.
And Small Basic took the challenge literally of moving up to Visual Basic... you just click the big Graduate button to move your code into VB!
Well, Vijaye was inspired. And he personally took on the challenge. Microsoft has supported him through it in a variety of ways, and we're still working on building future versions and building out the community.
Here are the tenets of Small Basic (originally written by Vijaye):
Small Basic - Fun, Simple, Social, Gradual (Small Basic Blog)
Small Basic is the only text-based programming language written for kids to learn programming in a way that's Fun, Simple, Social, and Gradual (moving you up to VB in the click of a button)!
Dig deeper on the details of what the Fun, Simple, Social, and Gradual features are:
The Unique Features of the Small Basic Language (TechNet Wiki)
You can also find this Wiki article in other languages:
- Las características únicas de la Small Basic de idioma (es-ES)
- Small Basic 言語の特徴 (ja-JP)
- Les Caractéristiques du Language Small Basic (fr-FR)
In the talk, I switched over to Small Basic to give a basic (and small) demo and to show how Vijaye nailed the Simple tenet...
And as you type (or click a word), the Help Area shows you information about your code (the Turtle object in this case) and explains your associated operation (such as Hide) or property (such as Angle). As far as I know, this is the only UI I've ever seen that has a large dedicated area to real-time Help content like this.
As you type, IntelliSense pops up to give you options to scroll through, in a fun, and easy way, describing each option for you!
I explained the Social aspects, including the Publish button in the UI, which sends your program into the cloud, where you can share the URL with your friends, so that they can run your program. Also, you can embed your program in a site, or you can import a program using the provided code, to build off your friend's program and collaborate. Our community members have used this to collaborate on program iterations, even when on separate parts of the world!
Another social aspect that I briefly mentioned is the Monthly Challenges run by LitDev, a member of our Small Basic Community Council. Here, Nonki made a list of the challenges for you to browse through:
Small Basic: Challenge of the Month (TechNet Wiki)
Next I talked a little about the Graduate button and how you can use it to "graduate" to Visual Basic.
That led to a comment about how we're continuing to build new versions of Small Basic. For 1.1, we're looking to upgrade to .NET Framework 4.5, which will enable new upcoming features in future versions. We'll also be fixing the Flickr bug, which was presented when they updated their API. See the progress we've been making with bug fixes for 1.1 and 1.2 here:
Small Basic V-Next - Fixing Bugs (Small Basic Blog)
The next topic was the audience. Although Small Basic is used by new learners of all ages, if you can read and write, then you can learn Small Basic! Today, we're presented with the idea that kids can learn software. So we teach them some basic programming logic using something like Scratch (if even that) and throw them into Java or Visual Basic as the first text-based programming language. But the reality is that many kids are struggling with their programming classes. These programming languages aren't ideal for junior high students or younger. They're even hard for high school students. Or you might go to a Python conference and see a 13-year old on the stage talking about how he taught himself Python and now is teaching his peers. The crowd cheers. And then you find a "Python for Kids" book (great book, by the way), and you begin to think that kids are learning Python. But the reality is that the one kid is the Doogie Howser of programming, his friends are struggling to learn it, that book is really written at a 14-year old level plus, and the average reader is closer to 17 or 18, because adults are buying it for themselves as a sort of "Python for Dummies" type of book.
In other words, programming for kids is mostly smoke and mirrors. The kids they point to are more the exceptions than the rule. I had one friend who tried to teach his teenage daughter Visual Basic. She bolted and hasn't looked at programming since. Makes sense to me. I remember scratching my head a little, when I learned Visual Basic in college. I would have LOVED to have started learning on Small Basic, even in college! Going back to the "Why Johnny Can't Code" article, the author and his son, Ben, ended up buying an old computer with BASIC on it just to have a good first-programming-language learning experience! They had the right idea. And Small Basic greatly expands on that experience!
So why mention how the other programming languages point to the exceptions of kids learning to code? Well, because the difference with Small Basic is that kids learning to code are the rule, not the exception. Kids will be able to learn every time! Here's the proof:
Small Basic Student Testimonies (TechNet Wiki)
In that article, you'll see 48 student testimonials, of kids from age 8-13, who successfully enjoyed learning Small Basic! I highlighted one example...
You're eyes don't deceive you! That's an 11-year old girl, reading a piece of paper (from a curriculum provided by Kidware), teaching herself Small Basic! Every kid has been able to learn (and enjoy learning) Small Basic! And if kids enjoy it, then any teenager or adult can easily learn it!
Using Kodu, you can teach kids as young as 4 to learn the basic programming logic and constructs (it's 3D and the tutorials are basically building out videogames, so to them it's a videogame, even though they're learning about programming). And once they can read and type well enough (age 7, 8, or 9), they can learn Small Basic!
Now, other than the 3 Wiki article links above, what does all this have to do with TechNet Wiki?
Well it was decided that Small Basic would have it's content live on TechNet Wiki! First, here is the table of contents of the Small Basic content library on TechNet Wiki:
Wiki: Small Basic Portal (TechNet Wiki)
That includes some larger content sets...
Small Basic Curriculum: Online (TechNet Wiki)
Small Basic Curriculum: Lesson 1.1: Introduction (TechNet Wiki)
The curriculum includes PowerPoint decks for the teachers to use!
Or if you're looking for an in-depth guide to learn from (and don't plan to teach it), then you can use the...
Small Basic Getting Started Guide (TechNet Wiki)
That guide is available in PDF and Word download. It's basically a large whitepaper. We divided the chapters up for different Wiki articles, so that you can easily browse the content. But you also download the whole file and read it that way (also good for printing it out).
And the Reference documentation is also on the Wiki:
Small Basic: Reference Documentation (TechNet Wiki)
All those resources are free! If you're looking for some books to buy, we have sample chapters from some great Kidware books here:
Small Basic Programming Books (TechNet Wiki)
Also, along the way, I mentioned the Turtle object and it makes one wonder, "Why a turtle?"
Well, I quickly went over the answer here:
Small Basic: The History of the Logo Turtle (TechNet Wiki)
And afterward, we had a good discussion about whether I only meant that English-speaking children could start using it when they can read and write.
Well, most children can use it:
You'll see how the IDE is in 20 languages!
So there you go!
Small and Basically yours,
- Ninja Ed