Teaching young students or even your own kids to learn or be interested in programming can be really daunting. However, there are free programming languages that are designed to teach children the basic concepts and elements required in traditional programming that you can use to get the job done quite easily. Most of these languages are graphics-based that makes them fun and attractive for young ones or even for adults who are absolute beginner in programming. So enjoy and teach your kids programming with these free programming languages.
Alice is a creative "drag and drop" 3D programming environment that makes it easy for kids to create simple animations for story-telling, interactive games, or for sharing videos on the web. It can be a great teaching tool since it is designed to introduce students to object-oriented programming and at the same time allows them to learn fundamental programming concepts. In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice is free and open source, and is available for Linux, Mac OS X, and Windows.
More about Alice HERE
Scratch is an interpreted dynamic visual programming language that has a main goal of teaching programming concepts to children (preferably 8 and up) and letting them create games, videos, and music. The name Scratch was taken from the turntablist technique of scratching, and refers to both the language and its implementation. The resemblance to musical "scratching” is the easy reusability of pieces: in Scratch all the interactive objects, graphics, and sounds can be imported to a new program and combined in new ways. That way, beginners can get fast results and be encouraged to try further. Scratch has a built-in IDE, which produces interpreted code. The code can be run on either Windows, Mac OS X or Linux using the interpreter, or rather, be placed on a website as an embedded object.
More about Scratch HERE
BASIC-256 (formerly KidBASIC) is an easy to use version of BASIC programming language designed to teach kids the basics of computer programming. It uses traditional control structures like gosub, for/next, and goto, which help children to easily see how program flow-control works. It has a built-in graphics mode that lets them easily draw pictures on screen in minutes, and a set of detailed, easy-to-follow tutorials that introduce programming concepts through fun exercises. BASIC-256 is free and open source and is written using LEX, YACC, and QT (in C++).
More about BASIC-256 HERE
GameKit is a high level, object-oriented, imperative language, with branching constructs, specially designed for programming games. It has syntax to some extent similar to the Java/C/C++ family. There is no way to bind arbitrary variables. GameKit comes with an editor, a debugger, resource editors, and was created to teach a variety of computer concepts like artificial intelligence (AI), user interfaces (UI), event driven programming, object oriented programming, game programming, and computer graphics. This language is more advanced than those I've mentioned above, and is not visually oriented or graphics-based.
More about GameKit HERE