I’ve been hacking together bits of code for years now. I’m not entirely sure how it all started, but it was probably way back when I built my first FreeBSD box and started playing around with a bit of simple shell-scripting.
Back then, if you wanted to run any Unix variant, or even Linux, getting things like X-Windows to work properly was a real chore so you usually ended up spending a lot of time on the command line, which used to be the best place to get you started if you wanted to learn how to code. Nowadays, software is plentiful, so you may be wondering why you should learn to program in any language at all.
No ad to show here.
Aside from the usual “Programming is fun” speech that you will get from any geek, learning to code can help you to solve many day to day technical quickly and quite easily. It also earns you a fair amount of kudos among other computer users. That’s why I’ve put together a list of five great ways to learn to program without having to spend hours reading a book that is more than likely going to go out of date within a year or two. As usual, if I have missed some amazing resource that you think would really benefit somebody else, please provide a link in the comments.
CS50.net
CS50 is part of Harvard University’s OpenCourseware collection, and is run by a wonderfully charismatic lecturer named David J. Malan. Videos from last year’s lectures are available at http://cs50.tv/. CS50 is actually an amazing course because it is essentially designed for anybody who is interested in learning to program, but has absolutely no previous experience in the field. Even more amazing, is that it is ambitious enough to get complete beginners learning to develop their own applications in the C programming language.
Most seasoned coders would recommend that beginners start with a high-level language that is possibly a little closer to natural language. CS50 proves that this isn’t really necessary and that anybody can grasp fairly complex programming concepts with the right sort of guidance.
CS50 is largely aimed at an adult audience, so its not the best place to send your kids if you want to turn them into full-time application developers. I think that the lectures are engaging and quite inspiring. After the first lecture, you will finally understand everything you need to know about binary, and by the third lecture you will already be coding your own C applications. CS50 also provides a stack of fantastic resources including slides and transcripts of all of the lectures, cheatsheets and actual source code.
There is one downside to this course, and this is the fact that the environment used to build all of the applications is hosted at Harvard and is not generally accessible to the public. However, all of the tools are available for download, and if you’re willing to install Linux on any home computer, you will be able to follow the course without needing to buy additional software.
Lego MindStorms
Lego MindStorms has been around for quite some time now. MindStorms is without a doubt one of the most fun ways to get into programming. To begin with, it is a form of mechanical Lego, which means that it is relatively easy to build some real-world objects that your programs can act on. At its heart is an ‘intelligent brick’, to which you can download your programs to manipulate the different machanical components within your Lego construction. That means that you can build basic robots that can perform simple tasks and program them to do your bidding. So how do you write your programs?
Lego provides its own drag-and-drop graphical programming environment called NXT-G, which is built around a core language called LabView, developed by National Instruments. So your first introduction to programming isn’t overly complex and you don’t need to know any strange syntax. However, the MindStorms API is publicly available and due to the maturity of the product, there are a host of libraries available in nearly every programming language you can think of. That means that once you’ve got a little more programming experience under your belt, you can pick an established programming language and start building more complex programs.
The downside to Lego MindStorms is that it costs money, and lots of it. The core package is going to set you back around US$250 to begin with. After that, you will quickly want to add to your collection of pieces to gain extra functionality. Peripheral components such as a light sensor, sound sensor or bluetooth dongle will cost you up to $50 a piece. That said, it is a kit that is constantly growing and being improved upon, and the mass of programming language libraries that are available for it, makes it a worthwhile investment if you want to learn to code applications that can interact with physical hardware. MindStorms appeals to children and adults alike, and you can use it to start programming your own simple home automation systems right out of the box.
Alice
Alice is a 3D educational environment designed to teach aspiring developers how to code their own programs. Alice is a fantastic tool because it allows you to load a whole range of 3D world environments from its library so that you can create interesting animated 3D applications within the Alice environment. It also provides a drag-and-drop development interface, so that you can simply choose the programming elements that you wish to make use of and drag them into your program. You can move elements around very easily and constantly check how different elements affect your application. Although Alice is simple to use and looks like a lot of fun, it teaches some powerful programming concepts and techniques in a unique and visual way that is engaging even for complete novice users.
While the Alice site has relatively limited tutorial and training material directly available, there are oodles of books available to help you get started learning how to program in Alice and the demonstration video has enough information in it to at least give you a rough idea of how you would go about constructing your first application. Alice runs on Windows, MacOS X and on Linux, and is an open-source platform. Alice also provides the option to view your code as it would look in other mainstream coding languages, so that you can start to understand how to develop in other languages.
While Alice may look like something that would only appeal to your kids, Alice has been used to develop full-blown games by students at Carnegie-Mellon University. If you’re new to programming, then Alice may be the perfect way to start.
Greenfoot
A good cup of Java is a developer’s best friend. Greenfoot is a simple and interactive environment that teaches you how to code in the Java programming language. It was originally created at the University of Kent, but now has a number of other contributors and is backed by Oracle and Google. While Greenfoot fully supports the Java language, it is particularly useful for novices that want to learn how to program applications with a visual element. Greenfoot provides a fully integrated development environment and also provides a framework to create 2-dimensional grids that can be used to construct simple graphical applications. The site, itself, comes with a whole lot of tutorial videos, a programmer’s manual, and an online discussion group with plenty of support for newbies.
I first came across Greenfoot through a blogpost by one of its core developers. Although pretty old now, Teaching My Daughter To Code is a wonderful exploration of Greenfoot through a father’s eyes as he runs through the basics of programming in object-oriented Java to a nine year old girl. By the end of the series of blog posts, Michael Kolling has explained how his daughter Sophie has managed to build her own Doctor Who game.
RoboMind
If you’re looking for something that might appeal to your kids, or you think that you are really going to have trouble getting a handle on writing your own programs, check out RoboMind. RoboMind is built around the same thinking that powered ‘LOGO’ many, many years ago. LOGO, you may remember, was a simple programming environment where you could get a little turtle to move around the screen based on a very basic instruction set.
It was a good start to learning an understanding loops and variables, but it had relatively little overall functionality. Part of the problem with LOGO was that your turtle didn’t have much to interact with, so all you could really program was a line-drawing application. RoboMind expands on LOGO, by providing an environment that your turtle, or ‘robot’ in this case, can interact with. That means that you can tell it to move objects around, follow different coloured lines and navigate a maze.
Overall, RoboMind is not the most fascinating programming environment around and your programs are ultimately pretty limited. Furthermore, it relies on its own simplified programming language for your development, so you’re not going to be able to take the actual syntax from it and apply it to programs outside of the environment. However, it does teach the fundamentals of programming in a very simple, intuitive and fun way.
Its syntax structure is quite similar to many programming languages and once you’ve got the hang of writing your own RoboMind programs, you shouldn’t have too much difficulty getting your teeth into something with a lot more meat. A major plus to RoboMind is that it runs on all major operating systems, and its free, so you have no excuse for not trying it out.
Image: Gamaliel Espinoza Macedo