So, my 12 year old son is interested in programming for Android. He's never done a real program before, but he did play briefly with Alice. I'm trying to figure out what the best way to introduce him to programming would be, and more specifically, if it would be better for him to just jump into Android programming, or if I should have him do Java first. Any suggestions?
|
closed as not constructive by gnat, Walter, Glenn Nelson, Thomas Owens♦ Feb 12 at 15:48
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.
|
As someone who taught myself to program in GWBasic before I knew English (at the age of 12 as well), I would say that he should jump straight at what he is interested in. Just try to help him if he gets stuck with something basic in the beginning. |
|||||||||||||||||||||
|
|
Actually I am programming a little app for Android platform called Algoid. This app has the ambition to have a small feedback loop with a complete and full paradigm language. It's goal is to learn progressively programming through actual great languages features and be as closed as possible with industrial standards (c / java). The paradigms are : imperative, functional, object and aspect. |
||||
|
|
|
What about the Android app inventor? It doesn't require any programming skills and would help him develop the necessary logical thinking skills and processes involved in programming, as well as allowing him to create something usable quickly. Once he reaches the limits of the app inventor, then he could move on to Java. |
|||
|
|
|
Kids get frustrated or bored quickly and need a constant motivation. My personal advice is to learn Ruby. You can write Ruby programs without knowing a thing about classes (or even too much about types). It takes away all the noise that beginners have to just accept to get started at all. There are (at least) two great beginner guides to Ruby:
With Ruby installed and a guide in hands, he needs something cool to play with.
Rubygems offer a great centralized way to download existing libraries. For example persistent is a great straight forward way to store things. With that and shoes you can actually build some really nice apps (that are cross platform on top of all). I think it's a great way to start programming, without all the clutter that more "conventional" languages have. Dealing with all that mess is hard when you're completely fresh and it takes up a lot of space in your head learning and following incomprehensible rituals. Without this burden, you can focus on programming, which is ultimately the only way to learn programming (and thereby understand the meaning of all that mentioned clutter). |
|||
|
|
|
Scripting Layer For Android (SL4A) springs to mind. You can code, debug and compile simple things directly on the phone with the minimum of fuss. Phone keyboards obviously make this annoying for anything but the simplest of programs, but I've done far more on the phone than I would have expected. You can code in a variety of scripting languages: python, lua, perl, Javascript, rhino, JRuby, Tcl, beanshell. (I'd go for lua or python as great easy to learn languages). You can move him onto a proper IDE and more comprehensive language once he gets bored of popping up "hello, world" notifications and making his phone say rude words aloud. |
|||
|
|
|
Let him do Android, but make sure he has a few good books and/or websites that he can copy-paste examples from. That's how I learnt basic (started at 7, shifted to c++ at 13). With something more complex like an Android app, it's invaluable to have a big set of example programs that you can change and alter. Also, I'd recommend to have him work more with graphical games/apps rather than database:y stuff, as visual stuff is more interesting, easier to grasp and less cluttered with abstract concepts and various thought traps. |
|||
|
|
|
Basic4android can be a good way to start with Android programming. It is an IDE similar to Visual Studio and the language is similar to Visual Basic. |
|||
|
|
|
Kojo is a learning environment for kids that uses Scala (which is like Java, and Scala itself can be used to write Android apps [see the writing and work of Michael Galpin for more on Scala and Android]). Kojo: http://kogics.net/sf:kojo I will be doing some lessons on Kojo in the weeks to come, here: http://young-programmers.blogspot.com/ |
|||
|
|
|
I believe there are two ways - the fast way and the long way. The long being that he learns to program on something easier (preferably in java so he can transfer that skill) that does not require learning a framework just to learn the basics fof loops, conditioning and that basic programming stuff. It has the advantage of giving him skills for the long haul but being very exhausting and not seeing results for a while might mean he will give up quite fast. The short one is more taxing on you, if he has an idea of what he wants from the app to do, you can sit along with him and help him throughout the process, it's a much faster proccess that means he'll have something he can see (and show) in a short time but it will be tough on you and can introduce some reverse learning (learning how to attach an event to a gui before writing his first loop). |
|||
|
|
|
As someone who has spent a fair amount of time teaching programming to children, I would highly recommend working with him through the book Learn To Program, by Chris Pine. http://pine.fm/LearnToProgram/ |
|||
|
|
