Ages 9-12 (and younger!)
At a young age, trying to learn new, abstract concepts using a text based language can be extremely difficult, and so is generally a good idea to avoid this. At this stage it is far more important that children are taught to understand general programming concepts, instead of be able to write something in a specific language. Once these concepts have been learned, they can then go on to apply them to a text based language at a later stage.
There are a huge range of great 'drag and drop' style programming tools available for teaching these ideas in a child friendly way - Blockly, one of our favourites, is very simple, but is a great introductory tool that we often use at the beginning of our courses to get the campers 'jumping in' straight away. It is a drag and drop language, very similar to other block based visual languages such as Scratch on the Raspberry Pi, another very popular option for this age range. You can try out Blockly at https://blockly-games.appspot.com/maze.
Here at Tech Camp, we believe that learning a language in conjunction with a real world, physical result such as a robot or other external electronics, is crucial to understanding the concepts quickly and providing a fun, immersive environment that isn't just about staring at a screen. Our favourite product to achieve this for the younger campers is the Crumble, a small electronics board that is easily programmable using a block based drag and drop language, to which you can easily connect any electronic components you like! Our brand new Robot Inventor course is based on the Crumble, and provides a great introduction to programming whilst using our specially designed clip together, modular electronics system to make automatic line following and maze solving robots.
We also use the Crumble for the junior Inventor School course, where the campers learn both programming and basic electronics by making laser projectors, alarms, trip wires and more! On both courses, campers get to take home what they've used during the week so they can continue learning at home.
For older children, the choice can be even more daunting with the huge array of available languages that exist today! There are many online tools and tutorials out there for every language possible, each claiming their's is the best. We believe there are two crucial aspects to choosing a first language - firstly, how much it teaches you and prepares you for understanding other languages, and how popular it is for real world applications. There's no point in learning something very niche that is not transferable to another language, or is only useful for one application! The other important factor is the availability of resources, and the size of the online community and help base that is available to help solve problems. Some languages have a large enough user base that almost every possible problem you might have has already been answered in some form.
C++ is an excellent choice for a first text-based language - it is very powerful and allows you to quickly pickup other languages afterwards such as Python, Javscript and C#, is extensively used for software development and games on all platforms (it was used to build Google!). It has a huge user base so searching for your problem will usually give you an immediate answer, and it is taught as a first language by most top UK university engineering and computer science degrees. One of the most proliferate C++ base learning tools is the well known Arduino platform, used by makers everywhere to create everything from automatic toasters to highly intelligent autonomous robots. We have several courses that teach C++ using the Arduino environment, our most advanced being the Robotic Arms course, which gives campers a great grounding in C++ using a 4 axis robotic arm they build and solder themselves, to do things like writing their name for them and solving puzzles. Our brand new senior Robot Inventor course is also based on the Arduino, creating intelligent robots using our custom clip together robotics system with ultrasonic sensors and servos.
Python is another great starter option, use extensively in web, software and game development, and is very straightforward to understand. It is growing in popularity due to its simplicity of use and understanding, and is a very popular language on the Raspberry Pi. Our Game Design courses use Game Maker to teach game design, image and sound editing, as well as scripting using a Python based language to make professional level cross-platform games.
Overall, the most important thing is to learn something - programming skill is perhaps one of the most transferable skills there is, and in an increasingly computer-based society, it will not be long before programming skills are required, not preferred!