For immediate release. The following information can be freely used for online and in print articles on Train.
"Train" is a completely visual programming language to teach 2 to 102 year olds how to code.
Programs in Train look just like a wooden toy train set. Executing a program means starting the engines and watching the trains move about the tracks. Each engine represents a seperate thread so a multithreaded program is just train tracks with multiple trains. Cars attached to an engine are variables/memory. Cargo that rest on cars is the value of the variable. There are several sets of cargo that represent different data types in Train including numbers, colors, letters, binary, and dinosaurs. Program control is provided by forks ("wyes") and physcial loops in the track which implement if/then and while/loop logic. Stations in Train allow wooden blocks to be operated on including adding a value to memory (adding a block to a car), freeing memory (removing a block from a car), incrementing, decrementing, addition, subtraction, multiplication, and division. Wyes include greater than, less than, lazy, sprung, prompt, and random. Slingshot and catapult station remove blocks from cars and place them on the ground as a form of output. "Magic" tunnels act as goto statements allowing for the creation of functions.
Programs are created in Train by simply drawing them on the screen--drawing tracks and wyes and placing engines, cars, cargo, and stations. Kids just naturally play without even knowing it is a complete programming language
Train developer Sean Megason, a professor at Harvard University, says "Train was inspired while I was playing with my then two year old son Noah who naturally loved to build using his wooden train sets and wooden blocks with letters and animals. I was inspired by his natural curiosity and tenacity in building and by the non-trivial logic that the resulting tracks could provide using simple primitives (such as lazy wyes)."
"Coding was an important part of my childhood." says Megason. "I discovered many concepts in mathematics, logic, and even art by coding. Coding helped drive my interest in science and lead me to be a professor and scientist."
"I see coding as a basic skill that everyone can benefit from and perhaps the best way to engage kids from all backgrounds to pursue STEM career paths. Tablets, phones, and computers are much more ubiquitous, safe, and cheaper than a chemistry set for example. But through coding, kids can learn to explore their curiosity, to build, create, learn logic, and experiment."
Train offers a "Freeplay" mode where kids can simply build TrainTracks. It also offers a "Levels" mode consisting of 8 levels of 10 tracks each in which the user has to rescue a stuffed teady bear by completing a TrainTrack.
Train is being developed in the same spirit as Scratch from MIT but targeting a younger age group. The goal is to teach kids coding concepts as well as numbers, colors, math, and logic in the course of playing. Kids do not need to know how to read in order to program Train unlike other "visual" programming languages. Train simplifies and merges many concepts from other programming languages--for example in other programming languages source code, compiled code, memory, and output are all different things that together define a program's state whereas in Train the train track is everything (code, memory, output) so program state is simply the current physical location of all the tracks, stations, engines, cars, and blocks.
The Train App is available for iPhones and iPads on the Apple App Store. It is also available as a web app at http://train-hub.org. All code for Train is open source (https://github.com/smegason/train)