List of educational programming languages
An educational programming language is a programming language that is designed primarily as a learning instrument and not so much as a tool for writing programs for real-world work.
Learning paths
Many educational programming languages position themselves inside a learning path, that is a sequence of languages each designed to build on the others moving a student from easy to understand and entertaining environments to full professional environments. Some of the better known are presented below.
Assembly language
Originally, machine code was the first and only way to program computers. Assembly language was the next type of language used, and thus is one of the oldest families of computer languages in use today. Many dialects and implementations are available, usually some for each computer processor architecture. It is very basic and termed a low level programming language. It is one of the more difficult languages to work with being untyped and rigid, but this is how computers work at low level. Several simplified dialects exist for education.
Low level languages must be written for a specific processor architecture and cannot be written or taught in isolation without referencing the processor for which it was written. Unlike higher level languages, using an educational assembly language needs a representation of a processor (whether virtualized or physical). Assembly is the most helpful programming language to use for learning about fundamental computer processor operation.
- Little Man Computer (LMC) is an instructional model of a simple von Neumann architecture computer with all basic features of modern computers. It can be programmed in machine code (usually decimal) or assembly. It is based on the concept of having a little man locked in a small room. At one end of the room are 100 mailboxes (memory), each capable of holding a three digit instruction or data. At the other end of the room are two mailboxes labeled INBOX and OUTBOX which receive and emit data. In the middle of the room is a work area with a simple two function (add and subtract) calculator called the Accumulator and a resettable counter called the Program Counter. The Program Counter is similar to what a doorperson uses to keep track of how many people have entered a facility—it can count up 1, or it can be reset to 0. As specified by the von Neumann architecture, memory contains both instructions and data. The user loads data into the mailboxes and then signals the little man to begin execution.
- Next Byte Codes (NBC) is a simple language with assembly language syntax that is used to program Lego Mindstorms NXT programmable bricks. The command line compiler emits NXT compatible machine code, and supports Windows, Mac OS X and Linux.
- Little Computer 3 (LC-3), is an assembly language with a simplified instruction set, but can be used to write moderately complex assembly programs and is a theoretically viable target for C compilers. It is simpler than x86 assembly but has many features similar to those in more complex languages. These features make it useful for teaching basic programming and computer architecture to beginning college computer science and computer engineering students, which is its most common use.
- DLX is a reduced instruction set computer (RISC) processor architecture by the main designers of the MIPS and the Berkeley RISC designs, two benchmark examples of RISC design. DLX is essentially a cleaned up, simplified MIPS, with a simple 32-bit load/store architecture. It is widely used in college-level computer architecture courses.
- MIX and MMIX are hypothetical computers used in Donald Knuth's monograph, The Art of Computer Programming (TAOCP). Paraphrasing Knuth: The MIX systems are computers intended to illustrate machine-level aspects of programming, so its machine language is simple, elegant, easy to learn. It also includes all the complexities needed for high performance in practice, so in principle it can be built and perhaps be competitive with some of the fast general-purpose computers. MIX is hybrid programmable in binary and decimal numbers; most programs written for it will work using either form. Software implementations for MIX and MMIX have been developed by Knuth and made freely available. Several versions of both emulators exist. MIX is a 1960s-style computer. It is superseded by MMIX, a newer modern computer architecture, a 64-bit RISC instruction set architecture (ISA). For MMIX, Knuth collaborated with the architects of the MIPS and Alpha ISAs.
BASIC
BASIC which stands for Beginners All-purpose Symbolic Instruction Code, is a language invented in 1964 to provide computer access to non-science students. It became popular on mini computers during the 1960s, and became the standard computing language for microcomputers during the late 1970s and early 1980s. The goals of BASIC were focused on the needs of learning to program easily: be easy for beginners to use, be interactive, provide clear and friendly error messages, respond quickly, do not require an understanding of computer hardware or operating systems. What made BASIC particularly useful for education was the small size of programs. Useful programs to illustrate a concept could be written in a dozen lines. At the same time BASIC did not require mathematical or computer science sophistication.[1] BASIC continues to this day to be a language which is frequently self-taught with excellent tutorials and implementations. See List of BASIC dialects by platform for a complete list. BASIC offers a learning path from learning oriented BASICs such as Microsoft Small Basic, BASIC-256 and SiMPLE, to more full featured BASICs like Visual Basic .NET and Gambas.
- Visual Basic .NET with a freely available Visual Basic Express Edition including an K-12 learning center and Beginner adult learning center
- Microsoft Small Basic is a restricted version of Visual Basic designed as a first programming language, "aimed at bringing 'fun' back to programming". The language is explicitly quite small with only 15 intuitive keywords. By including object specific libraries for things of general interest to children, children are able to create entertaining, interactive programs, on the net or on the desktop. For example, with 6 lines of code, it is possible to demonstrate a random network image viewer using Flickr as the source.[2] The system utilizes the Microsoft Visual Studio IDE to provide auto-completion and context sensitive help.
- Visual Basic for Applications (VBA) is a version of Visual Basic built into most Microsoft Office applications and is used to build macros to automate processes within most applications of Microsoft Office (e.g. creating a User-Defined Function in Excel or creating a complicated sequence of commands in response to a user event in a data entry form in Access). VBA can also work across applications like automatically creating a report in Word from a database in Access. Note VBA is not used to create standalone programs but works only within a host application. Since VBA is on every machine that has any portion of MS Office installed on it, it is arguably the most ubiquitously available version of BASIC.
- Gambas which is a freely available easy to use BASIC for Linux with a wikibook on Gambas available.
- Basic-256 an easy to use version of BASIC designed to teach anybody the basics of computer programming. It uses traditional BASIC control structures (gosub, for loops, goto) for ease of understanding program flow-control. It has a built-in graphics mode that allows children to draw pictures on screen after minutes. It includes tutorials that introduce programming concepts through fun exercises.
- SiMPLE is a programming development system that was created to provide easy programming capabilities for everybody, especially non-professionals. SiMPLE is vaguely reminiscent of the AppleSoft BASIC. SiMPLE is a compiled language. In addition, SiMPLE allows users to create their own libraries of frequently used functions. "Simple" is a generic term for three slightly different versions of the language: Micro-SiMPLE to use only 4 keywords, Pro-SiMPLE, and Ultra-SiMPLE use of 23 keywords.
- Hot Soup Processor is a BASIC-derived language used in Japanese schools.
- TI-BASIC is a simple BASIC-like language implemented in Texas Instruments graphing calculators, often serving as a students' first look into programming.
- SmallBASIC fast and easy to learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a powerful string library, system, sound, and graphic commands along with structured programming syntax.
C
- Ch is a C/C++ interpreter that was specifically designed to help non-CS students to learn math, computing and programming in C and C++. It extends C with numerical, 2D/3D graphical plotting and scripting features.
Java-based
Sun's recommended path is Greenfoot to BlueJ to Netbeans/BlueJ to Netbeans/Java.[3]
- Greenfoot is an interactive Java development environment developed primarily for educational purposes. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games. It is mainly aimed at programming education (object-oriented programming with Java) at high school and early university level.[3]
- NetLogo is a development environment for building and exploring scientific models, specifically agent-based models. It is in widespread use both in science research (Science papers using NetLogo) and in educational contexts, including elementary, secondary schools, universities and museums.
- BlueJ is an integrated Java environment specifically designed for introductory teaching, first year college student. It eliminates some of Java's complex syntax, the difficulties of I/O and represents the object/class relationships visually. The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners (the Blue system). The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualization and interaction techniques to create a highly interactive environment that encourages experimentation and exploration.[4]
- NetBeans BlueJ Edition is an integrated development environment (IDE) meant to transition students from the introductory IDE BlueJ to the more professional IDE NetBeans. Sun provides a free curriculum, designed for and tested in high schools for use in teaching Java/BlueJ.
- NetBeans / Java This is a professional level platform. NetBeans refers to both a platform for the development of applications for the network, and an integrated development environment (IDE) developed using the NetBeans Platform. The NetBeans Platform is a reusable framework for simplifying the development of other desktop applications. The platform offers services common to desktop applications, allowing developers to focus on the logic specific to their application. The NetBeans IDE is an open-source integrated development environment written entirely in Java using the NetBeans Platform. NetBeans IDE supports development of all Java application types (Java SE, web, EJB and mobile applications) out of the box. Among other features are an Ant-based project system, version control and refactoring.
Lisp-based
Lisp is the second oldest family of computer languages in use today, and as such has a host of dialects and implementations at a wide range of difficulties. Lisp was originally created as a practical mathematical notation for computer programs, based on lambda calculus, which makes it particularly well suited for teaching theories of computation. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, object-oriented programming, and the self-hosting compiler all of which are useful for learning computer science.
The name LISP derives from "LISt Processing language". Linked lists are one of Lisp languages' major data structures, and Lisp source code is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or even new domain-specific languages embedded in Lisp. So Lisps are useful for learning language design, and creating custom languages.
A reasonable learning path would be Logo followed by any educational variant such as Scheme or newLISP, followed by a professional variant such as Common LISP.
- Logo is a language that was specifically designed to introduce children to programming. The first part of learning Logo deals with "turtle graphics" (derived from turtle robots used as early as 1969 with proto-Logo. In modern implementations, an abstract drawing device, called the turtle, is used to make programming for children very attractive by concentrating on doing turtle graphics. Seymour Papert, the inventor of Logo, was a major thinker in constructionism, a variety of constructivist learning theory. Papert argued that activities like writing would naturally be learned by much younger children providing that they adopted a computation culture.[5] Logo was thus designed not only to teach programming, and computation concepts but to enhance a child's entire well being in a culture increasingly dominated by technology, "more important than having an early start on intellectual building, is being saved from a long period of dependency during which one learns to think of learning as something that has to be dished out by a more powerful other...Such children would not define themselves or allow society to define them as intellectually helpless."[5] It has been used with children as young as 3 and has a track record of 30 years of success in education. Since Logo is actually a streamlined version of Lisp with more advanced students it can be used to introduce the basic concepts of computer science and even artificial intelligence. Brian Harvey wrote a series Computer Science Logo Style[6] for self study of computer science based on Logo. Logo is widely available on virtually every platform, in both free and commercial versions.
- Scheme was originally designed in 1975 to serve a tutorial purpose.[7] LISPs of the day used non-recursive control structures to implement lambda calculus, primarily since LISPs were still being implemented for efficiency reasons in hardware. Guy L. Steele, Jr. and Gerald Jay Sussman constructed Scheme as a fast interpreted language on top of an underlying LISP with cheap procedure calls.[8] Pedagogically this allowed for teaching programming in terms of domain-specific languages and meta-circular evaluators. The publication of Structure and Interpretation of Computer Programs in 1984 incorporated this educational philosophy into a canonical textbook, which changed the predominance of Pascal as the university programming language.
“ | The publication of Abelson and Sussman’s Structure and Interpretation of Computer Programs (sicp) (Abelson et al., 1985) revolutionized the landscape of the introductory computing curriculum in the 1980s. Most importantly, the book liberated the introductory course from the tyranny of syntax. Instead of arranging a course around the syntax of a currently fashionable programming language, sicp focused the first course on the study of important ideas in computing: functional abstraction, data abstraction, streams, data-directed programming, implementation of message-passing objects, interpreters, compilers, and register machines.
Over a short period, many universities in the US and around the world switched their first course to sicp and Scheme. The book became a major bestseller for MIT Press. Along with sicp, the Scheme programming language became widely used. It was no longer the subject of a few individual courses at Indiana University, MIT, and Yale, but the language of choice in introductory courses all over the world.[9] |
” |
- Since then the Scheme community has introduced several pedagogic programming environments for more modern approaches. Of particular note is the Racket outreach effort with its DrRacket environment, freely available text How to Design Programs and ProgramByDesign educator training.[10]
- newLISP aims to provide a fast, powerful, cross-platform, full-featured scripting version of the Lisp programming language which uses only a modest amount of system resources such as disk space and memory. It is particularly suited for learners because of its simple, consistent, streamlined, Lisp environment that minimizes the learning curve and maximizes programmer productivity and pleasure.
Scala-based
- Kojo is an interactive desktop development environment developed primarily for educational purposes application that runs on Windows, Linux, and OS X. It is a learning environment, with many different features that help with the exploration, learning, and teaching of concepts in the areas of computer programming and critical thinking, math and science, art, music, and creative thinking, computer and internet literacy.[11]
- Spde is an offshoot of the Processing environment to support sketches written in Scala, a powerfully object-oriented and functional language.[12]
Smalltalk-based
As part of the One Laptop per Child project, a sequence of Smalltalk-based languages has been developed, each designed to act as an introduction to the next. The structure is Scratch to Etoys to Squeak to any Smalltalk.[13] Each provides graphical environments which may be used to teach not only programming concepts to kids, but also physics and mathematics simulations, story-telling exercises, etc., through the use of constructive learning. Smalltalk and Squeak are fully featured application development languages that have been around and well respected for decades; Scratch is a children's learning tool.
- Scratch is a visual programming language based on and implemented in Squeak. It has the goal of teaching programming concepts to children and letting them create games, videos, and music. In Scratch, all the interactive objects, graphics, and sounds can be easily imported to a new program and combined in new ways. That way, beginners can get quick results and be motivated to try further. The Scratch community has developed and uploaded over 3,000,000 projects.[14] It is developed by the Lifelong Kindergarten group at MIT Media Lab.
- Etoys is based on the idea of programmable virtual entities behaving on the computer screen. Etoys provides a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users. It includes 2D and 3D graphics, images, text, particles, presentations, web-pages, videos, sound and MIDI, the ability to share desktops with other Etoy users in real-time, so many forms of immersive mentoring and play can be done over the Internet. It is multilingual, and has been used successfully in United States, Europe, South America, Japan, Korea, India, Nepal, and elsewhere. The program is aimed at children 9-12.[15]
- Squeak is a modern, open source, full-featured implementation of the Smalltalk programming language and environment. Smalltalk is an object-oriented, dynamically typed, reflective programming language created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis".[16] Like Lisp, it has image-based persistence, so everything is modifiable from within the language itself (see Smalltalk#Reflection).[17] It has greatly influenced the industry introducing many of the concepts in object-oriented programming and just-in-time compilation. Squeak is the vehicle for a wide range of projects including multimedia applications, educational platforms and commercial web application development. Squeak is designed to be highly portable and easy to debug, analyze, and change, as its virtual machine is written fully in Smalltalk. The main site maintains a list of free tutorials, and Stéphane Ducasse maintains a large collection of Free Online Books related to Smalltalk and Squeak. The commonly used professional language in greatest use today which incorporates many of Smalltalk's ideas is Objective-C.
Other
- TouchDevelop is an interactive development environment and a visual programming language being developed at Microsoft Research.
Children
- AgentSheets and AgentCubes are computational thinking tools to author 2D/3D games and simulations. These tools are used in schools around the world through the Scalable Game Design curriculum supported by the National Science Foundation and Google (RISE/CS4HS). Authoring takes place through desktop applications or browser based apps and can create 2D/3D games playable in HTML5 compliant browsers including mobile ones.
- Alice is a free programming software designed to teach event-driven object-oriented programming to children. Programmers create interactive stories using a modern IDE interface with a drag and drop style of programming. The target audience is incoming college freshmen although most children with computer experience will find it entertaining and educational. A variant of Alice designed specifically for children with an even stronger story telling bent called Story Telling Alice is also available.
- Baltie is an educational graphic-oriented programming tool for children, youth (and adults). Baltie is also main character of this software a little wizard keen to execute miscellaneous commands and to conjure pictures (tiles) in his scene. With Baltie's help children will quickly realize what is a computer and how to master and program the computer. All that by playing. Baltie can be used also for exercising logical thinking. It makes no demands on child's knowledge, only playfulness and imagination are required. It is used in many countries in the basic schools. The new version of Baltie 4 fully supports C#. More usage information is at the (SGP Systems).
- Blockly is an open source web-based, graphical programming language where users can drag blocks together to build an application. No typing required. It is developed by Google. More information is available at the project home page.
- CiMPLE is a visual programming language for programming robotic kit for children. It is built on top of C as a DSL. ThinkLabs an Indian Robotics education based startup has built it for iPitara Robotic kit. CiMPLE visual language bears strong resemblance to written C programming language. Approximately 5000+ students in India have brought the iPitara kit and programmed it using CiMPLE. More information is at (CiMPLE Original Developers Weblog) and .
- Cubiverse is an free web-based (3D) voxel/Minecraft-style game that allows children to create and control voxel-based worlds using JavaScript. These worlds are persistent and support multiplayer gameplay through the sharing of a simple URL. The game teaches children how to use object-oriented JavaScript, understand coding (including events) and create shared environment for groups to build complex worlds and games. A wiki is available at , along with an API reference
- CodeMonkey is an online game that teaches how to code using CoffeeScript. In CodeMonkey, users program a monkey and help it collect bananas by writing lines of code. The game is built out of short challenges, starting with simple topics and progressing into advanced topics, such as loops, variables and functions. CodeMonkey is suitable for all ages, and can be practiced at home as well as in a classroom environment.
- Code Monster from Crunchzilla helps kids learn about programming. It walks children (mostly ages 9–14) through how to program in JavaScript, starting with early concepts like parameters, variables, and loops, moving through functions, eventually introducing some of the wonders of fractals, animation, and physics. It makes programming fun by using live code to show changes immediately and encouraging experimentation.
- E-Slate is an exploratory learning environment. It provides a workbench for creating highly dynamic software with rich functionality by non-programmers. Educational activity ideas can be turned into software with minimal authoring effort in the form of interactive Microworlds which contain specially designed educational components. E-Slate components are provided as a kit of pre-fabricated, interoperable computational objects. Software Microworlds can be very easily constructed by plugging components in various configurations. The behaviour of both components and Microworlds, can be programmed in a Logo-based scripting language. E-Slate is currently based on the Java platform and related technologies.
- Guido van Robot is a robot control program similar to Logo or Karel, with a minimal Python syntax. It is designed to be minimalistic and generic to any high-level programming language. There is a variant that includes the full Python syntax and a canonical set of lessons called RUR-PLE.
- Laby, designed with education in mind (its primary function as a teaching tool), is a small application to learn how to code in various programming languages (OCaml, Python, Lua, Ruby, C, Java, Prolog and Perl) with ants and spider webs.
- Lightbot, is a visual programming game designed to teach basic instruction sequencing, procedures, recursive loops, and conditionals. In Lightbot, players guide a robot to light up blue tiles to solve levels, utilizing a small set of symbols representing actions and procedure calls.
- Lightbot Jr, is a version of Lightbot designed for children 4 years old and up. It goes over basic instruction sequencing, procedures, and basic loops. The gameplay is synonymous with that of Lightbot.
- Looking Glass, is a novice programming environment designed to enable middle-school aged children learn computer programming independently through 3D storytelling. Looking Glass is the successor to Storytelling Alice.
- Physical Etoys is a free open-source extension of Etoys. Its philosophy is "help kids model and program the real world in order to learn more about it". It can run on Windows, Linux and Sugar. Physical Etoys lets different electronic devices such as Lego NXT, Arduino boards, Sphero, Kinect, Wiimote joystick, among others, be easily programmed and interact between themselves due to its block scripting system. Its perfect for the educational curricula.
- PythonTurtle is a Logo-like turtle graphics made in wxPython. There is also Python standard Turtle graphics module (based on TK), and a Python Turtle Demo—collection of 50+ demos, which are intended as examples for using Python and turtlegraphics in an educational setting.
- Pynguin is another Python Turtle Graphics Application. It is a unified editor, interactive console, and graphics display area written using Python and the PyQt toolkit (in contrast to the wxPython of PythonTurtle). Pynguin is meant to be an easy environment for introducing programming concepts to beginning programmers. The default avatar in Pynguin is a penguin, but other avatars, including a turtle, can be selected as well.
- Hackety Hack is a free Ruby-based environment aiming to make learning programming easy for beginners, especially teenagers.
- KidsRuby is another free Ruby-based environment meant for kids.
- Karel, Karel++, and Karel J. Robot are languages aimed at absolute beginners, used to control a simple robot in a city consisting of a rectangular grid of streets. While Karel is its own programming language, Karel++ is a version of Karel implemented in C++, while Karel J. Robot is a version of Karel implemented in Java.
- Kodable a programming game for the iPad "which teaches pre-literate kids the basic concepts of programming".[18] Using a unique programming language of arrows, paths, and boxes, kids learn basic coding logic.[19] It was composed by Grechen Huebner and Jon Mattingly of Louisville, Kentucky, and was released into the AppStore in 2012.[18]
- Kodu is a language that is simple and entirely icon-based. It was incubated out of Microsoft Research as a project to reach younger children and especially girls into enjoying technology. Programs are composed of pages, which are divided into rules, which are further divided into conditions and actions. Conditions are evaluated simultaneously. The Kodu language is designed specifically for game development and provides specialized primitives derived from gaming scenarios. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control character behavior. While not as general-purpose as classical programming languages, Kodu can express advanced game design concepts in a simple, direct, and intuitive manner. The Kodu tool is available in three forms: PC as a free download in public beta and academic forms, and as a low-cost Xbox 360 Live download.
- Logo is an educational programming language for children, designed in 1967 by Daniel G. Bobrow, Wally Feurzeig, Seymour Papert and Cynthia Solomon. Today the language is remembered mainly for its use of "turtle graphics", in which commands for movement and drawing produced line graphics either on screen or with a small robot called a "turtle". The language was originally conceived to teach concepts of programming related to Lisp and only later to enable what Papert called "body-syntonic reasoning" where students could understand (and predict and reason about) the turtle's motion by imagining what they would do if they were the turtle.
- Learn to Program BASIC is a BASIC interpreter with an interactive course intended to teach the language to middle school students. Game-specific additions to the BASIC language include 2D sprite support. Programs written in "LTPB" could be executed on computers without the software by means of a freely-distributable "runner".
- Lego Mindstorms is a line of Lego sets combining programmable bricks with electric motors, sensors, Lego bricks, and Lego Technic pieces (such as gears, axles, and beams). Mindstorms originated from the programmable sensor blocks used in the line of educational toys. The first retail version of Lego Mindstorms was released in 1998 and marketed commercially as the Robotics Invention System (RIS). The current version was released in 2006 as Lego Mindstorms NXT. A wide range of programming languages is used for the mindstorms from Logo to BASIC to derivatives of Java, Smalltalk and C. The Mindstorm approach to programming now have dedicated physical sites called Computer Clubhouses.
- Mama is an educational object oriented programming language designed to help young students start programming by providing all the language elements in the student mother tongue. Mama programming language is available in several languages, with both LTR and RTL language direction support. A new variant of Mama was built on top of Carnegie Mellon's Alice development environment, supporting scripting of the 3D stage objects. This new variant of Mama was designed to help young students start programming by building 3D animations and games. A document about educational programming principles explains Mama's design considerations.
- Phrogram (the second generation product of Kid's Programming Language) is a commercial easy-to-learn programming language and Integrated Development Environment introduced in 2006. It emphasizes graphics and sounds, making it especially easy to develop games and entertaining educational material. Phrogram is a simplified structured language, and offers component-based development features such as classes and methods. It is modeled on modern IDEs such as Eclipse and Visual Studio, and intends to prepare a beginner to graduate to these or other professional development environments.
- RoboMind is a simple educational programming environment that lets beginners program a robot. It introduces popular programming techniques and also some robotics and artificial intelligence. The robot can be programmed in Arabic, Chinese, Dutch, German, English and Swedish.
- S2JS is for kids who have mastered Scratch and are starting to bump up against its limitations. S2JS teaches JavaScript in terms of Scratch, assuming they already know what loops and if-then-elses are, and showing how the sort of things they achieve in Scratch (and more) can also be achieved in JavaScript. Rather than teaching swathes of HTML, the DOM, CSS, etc., S2JS takes a more direct path to enable the kids to use the Canvas to start producing games and other programs they'll feel proud of. S2JS provides tutorials with live examples, and also a private work area where kids can develop their own projects. Kids can run the tutorial and development environment split-screen, so they can copy & paste code fragments to their own projects. Their work is directly sharable with their friends just by emailing a URL to their project. S2JS shows kids how to write programs that make use of smartphone features such as tilt and touch. Free.
- Scratch is a blocks-based graphical programming language to create animated stories and games.
- Snap! is a free open-source blocks-based graphical programming language implemented in JavaScript and originally derived MIT's Scratch. Snap! adds the ability to create new blocks and has first-class functions that enables the use of anonymous functions. It is actively maintained by UC Berkeley. The source is entirely hosted on GitHub.
- Stagecast Creator is a visual programming system based on programming by demonstration. Users demonstrate to the system what to do by moving icons on the screen, and it generates rules for the objects (characters). Users can create two-dimensional simulations that model a concept, multi-level games, interactive stories, etc.
- Stencyl is a visual programming and game development IDE that has been used for both educational and commercial purposes. The concept it uses of "code blocks" is based on MIT's Scratch visual programming language (which is also listed above). It also permits the use of "normal" typed code (separate or intermingled) through its own API and the Haxe programming language.
- ToonTalk is a programming language and environment that looks like a video game. Computational abstractions are mapped to concrete analogs such robots, houses, trucks, birds, nests, and boxes. It supports big integers and exact rational numbers. It is based upon concurrent constraint programming.
- TurtleAcademy is an educational logo programming site teach kids how to program with logo.
- Tynker is a visual educational programming site that teaches kids programming games. Visually it is based on Scratch but is based on a modern platform with HTML5 and JavaScript, and has many pre-made graphical backdrops and actors that you can use in your games.
Historical
- Pascal is the most well-known programming language that was designed with education in mind. From the late 1970s to the late 1980s, it was the primary choice in introductory computer science classes for teaching students programming in both the US and Europe. Its use for real-world applications has since increased, and regarding it as a purely educational programming language has since become somewhat controversial.
University
- A++ represents a more recent attempt to create a language designed to provide an efficient tool for basic training in programming.
- Curry is a teaching language[20] designed to amalgamate the most important declarative programming paradigms, namely functional programming (nested expressions, higher-order functions, lazy evaluation) and logic programming (logical variables, partial data structures, built-in search). It also integrates the two most import operational principles developed in the area of integrated functional logic languages: "residuation" and "narrowing".[21][22]
- Haskell is often used by universities in place of LISP or Scheme. Its primary goal was to function equally well as a language for teaching, research and application design.[23] It is a purely functional, extremely expressive lazy functional programming language. Sample courses are available online, as are multiple books and tutorials. An education specific compiler / IDE, called Helium has been created. Another advantage of Haskell is in teaching inductive methods. Because of the advantages of Haskell's syntax inductive proofs become as easy or easier as they are on paper, unlike the LISP/Scheme family which introduces additional syntax.[24][25]
- Flowgorithm is a graphical authoring tool which allows students to write and execute programs using flowcharts. The approach is designed to emphasize the algorithm rather than the syntax of a specific programming language. The flowchart can be converted to several major programming languages such as C#, Java, Visual Basic .NET and Python.[26]
- M2001 is a modular mathematical language for developing and presenting mathematical algorithms, from modern discrete to classical continuous mathematics. It is built on a semantic framework based in category theory, with a syntax similar to that of Pascal or Modula-2. It is designed for education only, so efficiency and ease of implementation are far less vital in its development than generality and range of application. It was created to play a strong role in forming a formal algorithmic foundation for first-year college math students.
- Picky is an imperative programming language designed for a first level, introductory programming course.[27] The language is small and simple. It has a terse syntax that derives from Pascal and C. Picky is very restrictive. The compiler and the run time include extra checks to provide safety features. Picky also provides realistic handling of basic file I/O. The language compiles to byte-code for an abstract machine called PAM. An interpreter is supplied together with the compiler. The tools are available for different operating systems, such as Plan 9 From Bell Labs, Linux, Mac OS X and Windows. The documentation includes the academic paper,[27] the white paper and a text book for a complete programming course (in Spanish, on-line version).
- Python is a cross-platform multi-paradigm interpreted scripting language which is utilized for teaching computer science in various colleges and universities around the globe.[28] Python's clear syntax, interpreted interface, and high level data structures make it an ideal instructional language for educational institutions, while the large number of existing libraries make it suitable to tackle programming tasks in the professional world beyond academia.
- Oz is a programming language designed to teach computer theory. It supports most major paradigms[29] in one language so that students can learn paradigms without having to learn multiple syntaxes. Oz contains in a simple and well-factored way most of the concepts of the major programming paradigms, including logic, functional (both lazy and eager), imperative, object-oriented, constraint, distributed, and concurrent programming. It has a canonical textbook Concepts, Techniques, and Models of Computer Programming and a freely available standard implementation the Mozart Programming System.
Languages by age and experience
The following chart helps to summarize the information above for parents and teachers.
US educational level | Approximate Age | Experience level | Appropriate languages |
---|---|---|---|
Preschool – grade 2 | 3–7 | None, not applicable | Logo, Guido van Robot, Karel, ScratchJr, Scratch, Kodu, Stagecast Creator, Lightbot, Kodable |
Grades 2–4 | 7–9 | None, not applicable | AgentSheets, Logo, Kodu, RoboMind, Scratch or Etoys, Stagecast Creator, Lightbot, Kodable |
Grades 5–8 | 10–14 | None or little | AgentSheets, Alice, Kodu, Lego Mindstorm, Etoys, Microsoft Small Basic, RoboMind, Gambas, BASIC, Phrogram, Stagecast Creator, Mama, Lightbot, Kodable |
Grades 5–8 | 10–14 | Some | AgentSheets, Squeak, Microsoft Small Basic, RoboMind, full featured BASIC, Greenfoot, Pascal, Mama, Python, Ruby |
High school | 14–17 | None or little | AgentSheets, Squeak, Microsoft Small Basic, RoboMind, full featured BASIC, Greenfoot, Pascal, Mama, Python, Ruby, Visual Basic |
High school | 14–17 | Some | AgentSheets, Squeak, RoboMind, Greenfoot or BlueJ, Mama, newLISP, OZ, Python, most other programming languages |
College | 18+ | None assumed, non-majors course | Squeak, Greenfoot or BlueJ, newLISP, Python, Visual Basic, full featured BASIC |
College | 18+ | Starting computer science or developer curriculum | Haskell, OZ, Scheme, Squeak, NetBeans BlueJ, Python |
See also
- Sugar, a GUI designed for constructive learning
- Design by numbers and Processing, two languages dedicated to artwork, originated at the MIT with both and educational and actual production purpose.
External links
- Educational programming languages at DMOZ
- Kids Like . info - educational games and toys; teach children programming, nontechnical encyclopedia article on educational programming languages, reviews and explains Scratch, Alice, Greenfoot
- Coding 4 Fun, Microsoft site for recreational coding
- BASIC vs Logo, at WikiVS
- HappyNerds, link collection for educational programming languages
References
- ↑ Brin, David (Sep 14, 2006). "Why Johnny can't code". Salon Magazine. Retrieved 4/12/09. Check date values in:
|access-date=
(help) - ↑ Microsoft corporation 2009 Getting Started Guide for Small Basic, p. 64.
- 1 2 Nourie, Dana (July 2008). "Young Developer Learning Path". Sun Microsystems. Retrieved April 3, 2009.
- ↑ "What is BlueJ?". BlueJ official site. Retrieved April 3, 2009.
- 1 2 Papert, Seymour (October 1980). Tokyo, Japan and Melbourne, Australia: 8th World Computer Congress: IFIP Congress. Missing or empty
|title=
(help);|contribution=
ignored (help) - ↑ Volume 1: Symbolic Computing Volume 2: Advanced Techniques Volume 3: Beyond Programming
- ↑ Gerald Jay Sussman and Guy Lewis Steele, Jr.. "Scheme: An Interpreter for Extended Lambda Calculus". MIT AI Lab. AI Lab Memo AIM-349. December 1975. , from Lambda Papers
- ↑ "Debunking the "Expensive Procedure Call" Myth, or Procedure Call Implementations Considered Harmful, or LAMBDA, the Ultimate GOTO". ACM Conference Proceedings. 1977. , from the Lambda Papers
- ↑ Felleisen, Matthias; Findler, Robert Bruce; Flatt,, Matthew; Krishnamurthi, Shriram (2004). "The Structure and Interpretation of the Computer Science Curriculum" (PDF). Journal of Functional Programming 14: 365–378. doi:10.1017/S0956796804005076.
- ↑ More information on the PLT group results is at Northeastern PLT: Publications.
- ↑ "About kogics Kojo". Retrieved 02-12-2011. Check date values in:
|access-date=
(help) - ↑ "About Spde". Retrieved 02-12-2011. Check date values in:
|access-date=
(help) - ↑ Cavallo, David (May 28, 2007). "Learning Squeak from Scratch". One Laptop Per Child News. Retrieved 4-3-09. Check date values in:
|access-date=
(help) - ↑ Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Amon Millner, Jay Silver, Eric Rosenbaum, Karen Brennan, Amos Blanton. "Scratch: imagine, program, share". Massachusetts Institute of Technology. Retrieved 8 January 2013.
- ↑ Ducasse, Stéphane (2005). Squeak: Learn Programming with Robots (Technology in Action). Apress. pp. 289 in ch 24: A tour or eTOY. ISBN 1-59059-491-6.
- ↑ Kay, Alan. "The Early History of Smalltalk". Retrieved 2007-09-13.
- ↑ For further discussion of why this make it easy see Meta-circular evaluator
- 1 2 Carson, Erin (20 October 2014). "Kodable gets kids programming before they can read". TechRepublic.
- ↑ Satell, Greg (7/6/2014). "Do Our Kids Really Need to Learn How to Code?". Opinion (Forbes). Forbes. Retrieved 24 October 2014. Check date values in:
|date=
(help) - ↑ M. Hanus. Teaching Functional and Logic Programming with a Single Computation Model. In Proc. Ninth International Symposium on Programming Languages, Implementations, Logics, and Programs (PLILP’97), pp. 335–350. Springer LNCS 1292, 1997.
- ↑ Curry report, Introduction. Most recent version available at
- ↑ M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, Vol. 19&20, pp. 583–628, 1994.
- ↑ Jones, Simon Peyton (2002). "Preface". The Haskell 98 report. Haskell 98 working group. Retrieved April 4, 2009.
- ↑ Wadler, Philip (1987). "Why calculating is better than scheming" (PDF). ACM SIGPLAN Notices: 83–94. doi:10.1145/24697.24706. ISSN 0362-1340.
- ↑ Bird, Richard (1998). Introduction to Functional Programming using Haskell (2nd Edition). Prentice Hall. p. 66. ISBN 0-13-484346-0.
- ↑ "About". Flowgorithm. Retrieved 2014-08-26.
- 1 2 Ballesteros, Francisco J; et al. (2015). "Picky: A New Introductory Programming Language" (PDF). Journal of Computational Science Education 6 (1): 16–24. ISSN 2153-4136.
- ↑ "Schools Using Python". Python.org.
- ↑ Programming Paradigms poster