Educational programming language
Encyclopedia
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.
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.
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 microcomputer
s 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. 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
.
recommended path is Greenfoot to BlueJ to Netbeans/BlueJ to Netbeans/Java.
, 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 structure
s, 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 list
s are one of Lisp languages' major data structure
s, 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.
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
that is designed primarily as a learning
Learning
Learning is acquiring new or modifying existing knowledge, behaviors, skills, values, or preferences and may involve synthesizing different types of information. The ability to learn is possessed by humans, animals and some machines. Progress over time tends to follow learning curves.Human 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 codeMachine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...
was the first and only way to program computers. Assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...
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
Type system
A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...
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
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...
architecture
Computer architecture
In computer science and engineering, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modelling of those systems....
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 ComputerLittle man computerThe Little Man Computer is an instructional model of a computer, created by Dr. Stuart Madnick in 1965. The LMC is generally used to teach students, because it models a simple von Neumann architecture computer - which has all of the basic features of a modern 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 architectureVon Neumann architectureThe term Von Neumann architecture, aka the Von Neumann model, derives from a computer architecture proposal by the mathematician and early computer scientist John von Neumann and others, dated June 30, 1945, entitled First Draft of a Report on the EDVAC...
, memory contains both instructions and data. The user loads data into the mailboxes and then signals the little man to begin execution.
- Next Byte CodesNext Byte CodesNext Byte Codes is a simple language with an assembly language syntax that can be used to program Lego Mindstorms NXT programmable bricks. The command line compiler outputs NXT compatible machine code, and is supported on Windows, Mac OS and Linux...
(NBC) is a simple language with assembly language syntax that is used to program Lego Mindstorms NXTLego Mindstorms NXTLego Mindstorms NXT is a programmable robotics kit released by Lego in late July 2006.It replaced the first-generation Lego Mindstorms kit, which was called the Robotics Invention System. The base kit ships in two versions: the Retail Version and the Education Base Set . It comes with the NXT-G...
programmable bricks. The command line compiler emits NXT compatible machine code, and supports Windows, Mac OS, Linux.
- Little Computer 3 (LC-3LC-3Little Computer 3, or LC-3, is a type of computer educational programming language, an assembly language, which is a type of low-level programming language. It features a relatively simple instruction set, but can be used to write moderately complex assembly programs, and is a theoretically viable...
), 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.
- DLXDLXThe DLX is a RISC processor architecture designed by John L. Hennessy and David A. Patterson, the principal designers of the MIPS and the Berkeley RISC designs , the two benchmark examples of RISC design. The DLX is essentially a cleaned up and simplified MIPS, with a simple 32-bit load/store...
is a reduced instruction set computerReduced instruction set computerReduced instruction set computing, or RISC , is a CPU design strategy based on the insight that simplified instructions can provide higher performance if this simplicity enables much faster execution of each instruction. A computer based on this strategy is a reduced instruction set computer...
(RISC) processor architecture by the main designers of the MIPSMIPS architectureMIPS is a reduced instruction set computer instruction set architecture developed by MIPS Technologies . The early MIPS architectures were 32-bit, and later versions were 64-bit...
and the Berkeley RISCBerkeley RISCBerkeley RISC was one of two seminal research projects into RISC-based microprocessor design taking place under ARPA's VLSI project. RISC was led by David Patterson at the University of California, Berkeley between 1980 and 1984, while the other was taking place only a short drive away at Stanford...
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 collegeCollegeA college is an educational institution or a constituent part of an educational institution. Usage varies in English-speaking nations...
-level computer architecture courses.
- MIXMIXMIX is a hypothetical computer used in Donald Knuth's monograph, The Art of Computer Programming . MIX's model number is 1009, which was derived by combining the model numbers and names of several contemporaneous, commercial machines deemed significant by the author...
and MMIXMMIXMMIX is a 64-bit RISC instruction set architecture designed by Donald Knuth, with significant contributions by John L. Hennessy and Richard L. Sites...
are hypothetical computers used in Donald KnuthDonald KnuthDonald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...
's monograph, The Art of Computer ProgrammingThe Art of Computer ProgrammingThe Art of Computer Programming is a comprehensive monograph written by Donald Knuth that covers many kinds of programming algorithms and their analysis....
(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 binaryBinary numeral systemThe binary numeral system, or base-2 number system, represents numeric values using two symbols, 0 and 1. More specifically, the usual base-2 system is a positional notation with a radix of 2...
and decimalDecimalThe decimal numeral system has ten as its base. It is the numerical base most widely used by modern civilizations....
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-bit64-bit64-bit is a word size that defines certain classes of computer architecture, buses, memory and CPUs, and by extension the software that runs on them. 64-bit CPUs have existed in supercomputers since the 1970s and in RISC-based workstations and servers since the early 1990s...
RISCReduced instruction set computerReduced instruction set computing, or RISC , is a CPU design strategy based on the insight that simplified instructions can provide higher performance if this simplicity enables much faster execution of each instruction. A computer based on this strategy is a reduced instruction set computer...
instruction setInstruction setAn instruction set, or instruction set architecture , is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O...
architecture (ISA). For MMIX, Knuth collaborated with the architects of the MIPSMIPS architectureMIPS is a reduced instruction set computer instruction set architecture developed by MIPS Technologies . The early MIPS architectures were 32-bit, and later versions were 64-bit...
and AlphaDEC AlphaAlpha, originally known as Alpha AXP, is a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations. Alpha was implemented in microprocessors...
ISAs.
BASIC
BASICBASIC
BASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's 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 microcomputer
Microcomputer
A microcomputer is a computer with a microprocessor as its central processing unit. They are physically small compared to mainframe and minicomputers...
s 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. 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
Microsoft Small Basic
Microsoft Small Basic is a simplified variant of the BASIC programming language introduced by Microsoft in October 2008. With a bare minimum of concepts, Microsoft accredits this as an easy programming language for beginners to grasp. The language itself has only 14 keywords, and the environment...
, BASIC-256
Basic-256
The project started in 2007 inspired by the article “Why Johnny can't code” by David Brin. Its main focus is to provide a simple and comprehensive environment for middle/high school students to learn the basics of computer programming....
and SiMPLE
SiMPLE
SiMPLE is a programming development system that was created to provide easy programming capabilities for everybody, especially non-professionals.- History :...
, to more full featured BASICs like Visual Basic .NET
Visual Basic .NET
Visual Basic .NET , is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic , which is implemented on the .NET Framework...
and Gambas
Gambas
Gambas is the name of an object-oriented dialect of the BASIC programming language as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic...
.
- Visual Basic .NETVisual Basic .NETVisual Basic .NET , is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic , which is implemented on the .NET Framework...
with a freely available Visual Basic Express Edition including an K-12 learning center and Beginner adult learning center
- Microsoft Small BasicMicrosoft Small BasicMicrosoft Small Basic is a simplified variant of the BASIC programming language introduced by Microsoft in October 2008. With a bare minimum of concepts, Microsoft accredits this as an easy programming language for beginners to grasp. The language itself has only 14 keywords, and the environment...
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 keywords and each of them is quite natural. Object specific libraries for things of general interest and of interest to kids (for example FlickrFlickrFlickr is an image hosting and video hosting website, web services suite, and online community that was created by Ludicorp in 2004 and acquired by Yahoo! in 2005. In addition to being a popular website for users to share and embed personal photographs, the service is widely used by bloggers to...
) children are able to create entertaining interactive programs, on the net or on the desktop. The system utilizes the Microsoft Visual StudioMicrosoft Visual StudioMicrosoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...
IDE to provide auto-completionIntelliSenseIntelliSense is Microsoft's implementation of autocompletion, best known for its use in the Microsoft Visual Studio integrated development environment...
and context sensitive helpTooltipThe tooltip or infotip is a common graphical user interface element. It is used in conjunction with a cursor, usually a mouse pointer. The user hovers the cursor over an item, without clicking it, and a tooltip may appear—a small "hover box" with information about the item being hovered...
.
- GambasGambasGambas is the name of an object-oriented dialect of the BASIC programming language as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic...
which is a freely available easy to use BASIC for Linux with a wikibook on Gambas available.
- Basic-256Basic-256The project started in 2007 inspired by the article “Why Johnny can't code” by David Brin. Its main focus is to provide a simple and comprehensive environment for middle/high school students to learn the basics of computer programming....
http://www.basic256.org/ an easy to use version of BASIC designed to teach anybody the basics of computer programming. It uses traditional BASIC control structures (gosubGOSUBGOSUB is a command in many versions of the BASIC computer programming language. A GOSUB statement jumps to a line elsewhere in the program. That line and the following lines up to a RETURN are used as a simple kind of a subroutine without parameters or local variables.The GOSUB command may be used...
, for loopFor loopIn computer science a for loop is a programming language statement which allows code to be repeatedly executed. A for loop is classified as an iteration statement....
s, gotoGotogoto is a statement found in many computer programming languages. It is a combination of the English words go and to. It performs a one-way transfer of control to another line of code; in contrast a function call normally returns control...
) 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.
- SiMPLESiMPLESiMPLE is a programming development system that was created to provide easy programming capabilities for everybody, especially non-professionals.- History :...
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 BASICBASICBASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....
. 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.
Java based
Sun'sSun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
recommended path is Greenfoot to BlueJ to Netbeans/BlueJ to Netbeans/Java.
- GreenfootGreenfootGreenfoot is an interactive Java development environment designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games....
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.
- BlueJBlueJBlueJ is an integrated development environment for the Java programming language, developed mainly for educational purposes, but also suitable for small-scale software development....
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.
- NetBeans BlueJ EditionNetBeans BlueJ EditionNetBeans BlueJ Edition is an integrated development environment meant to transition students from the introductory IDE BlueJ to the more professional IDE NetBeans. The first release of the IDE is now available for download....
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.
- NetBeansNetBeansNetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...
/ JavaJava (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
This is a professional level platform. NetBeans refers to both a platform for the development of applications for the network, and an integrated development environmentIntegrated development environmentAn integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...
(IDE) developed using the NetBeans Platform. The NetBeans Platform is a reusable frameworkSoftware frameworkIn computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
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-sourceOpen sourceThe term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
integrated development environment written entirely in Java using the NetBeans Platform. NetBeans IDE supports development of all Java application types (Java SEJava Platform, Standard EditionJava Platform, Standard Edition or Java SE is a widely used platform for programming in the Java language. It is the Java Platform used to deploy portable applications for general use...
, webWeb applicationA web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...
, EJBEnterprise JavaBeanEnterprise JavaBeans is a managed, server-side component architecture for modular construction of enterprise applications.The EJB specification is one of several Java APIs in the Java EE specification. EJB is a server-side model that encapsulates the business logic of an application...
and mobileMIDletA MIDlet is an application that uses the Mobile Information Device Profile of the Connected Limited Device Configuration for the Java ME environment...
applications) out of the box. Among other features are an AntApache AntApache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....
-based project system, version controlRevision controlRevision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...
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 calculusLambda calculus
In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped 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
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
, including tree data structure
Tree (data structure)
In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.Mathematically, it is an ordered directed tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at...
s, automatic storage management
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
, dynamic typing
Type system
A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...
, object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
, and the self-hosting
Self-hosting
The term self-hosting was coined to refer to the use of a computer program as part of the toolchain or operating system that produces new versions of that same program—for example, a compiler that can compile its own source code. Self-hosting software is commonplace on personal computers and larger...
compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
all of which are useful for learning computer science.
The name LISP derives from "LISt Processing language". Linked list
Linked list
In computer science, a linked list is a data structure consisting of a group of nodes which together represent a sequence. Under the simplest form, each node is composed of a datum and a reference to the next node in the sequence; more complex variants add additional links...
s are one of Lisp languages' major data structure
Data structure
In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...
s, and Lisp source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
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.
- LogoLogo (programming language)Logo is a multi-paradigm computer programming language used in education. It is an adaptation and dialect of the Lisp language; some have called it Lisp without the parentheses. It was originally conceived and written as functional programming language, and drove a mechanical turtle as an output...
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 robotsTurtle (robot)Turtles are a class of educational robots designed originally in the late 1940s and used in computer science and mechanical engineering training. These devices are traditionally built low to the ground with a roughly hemispheric shell and a power train capable of a very small turning radius...
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 graphicsTurtle graphicsTurtle graphics is a term in computer graphics for a method of programming vector graphics using a relative cursor upon a Cartesian plane...
. Seymour PapertSeymour PapertSeymour Papert is an MIT mathematician, computer scientist, and educator. He is one of the pioneers of artificial intelligence, as well as an inventor of the Logo programming language....
, the inventor of Logo, was a major thinker in constructionism, a variety of constructivist learning theoryConstructivism (learning theory)Constructivism is a theory of knowledge that argues that humans generate knowledge and meaning from an interaction between their experiences and their ideas. During infancy, it was an interaction between human experiences and their reflexes or behavior-patterns. Piaget called these systems of...
. Papert argued that activities like writing would naturally be learned by much younger children providing that they adopted a computation culture. 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." 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 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. LISPs of the day used non-recursive control structures to implement lambda calculusLambda calculusIn mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus...
, primarily since LISPs were still being implemented for efficiency reasons in hardware. Guy L. Steele, Jr.Guy L. Steele, Jr.Guy Lewis Steele Jr. , also known as "The Great Quux", and GLS , is an American computer scientist who has played an important role in designing and documenting several computer programming languages.-Biography:...
and Gerald Jay SussmanGerald Jay SussmanGerald Jay Sussman is the Panasonic Professor of Electrical Engineering at the Massachusetts Institute of Technology . He received his S.B. and Ph.D. degrees in mathematics from MIT in 1968 and 1973 respectively. He has been involved in artificial intelligence research at MIT since 1964...
constructed Scheme as a fast interpreted language on top of an underlying LISP with cheap procedure calls. Pedagogically this allowed for teaching programming in terms of domain-specific languages and meta-circular evaluatorMeta-circular evaluatorA meta-circular evaluator is a special case of a self-interpreter in which the existing facilities of the parent interpreter are directly applied to the source code being interpreted, without any need for additional implementation...
s. The publication of Structure and Interpretation of Computer ProgramsStructure and Interpretation of Computer ProgramsStructure and Interpretation of Computer Programs is a textbook published in 1984 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman...
in 1984 incorporated this educational philosophy into a canonical textbook, which changed the predominance of Pascal as the university programming language.- 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 ProgramsHow to Design ProgramsHow to Design Programs is a textbook by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi on the systematic design of computer programs published in 2001 by MIT Press. The book introduces the concept of a design recipe, a six-step process for creating programs from...
and ProgramByDesign educator training.
- newLISPNewLISPnewLISP is an open source scripting language in the Lisp family of programming languages developed by Lutz Mueller and released under the GNU General Public License.-History:newLISP originated in 1991 and was originally developed on a Sun-4 workstation...
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.
- Common LispCommon LispCommon Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...
(CL) is a general-purpose (professional), multi-paradigm programming languageMulti-paradigm programming languageProgramming languages can be grouped by the number and types of paradigms supported.-Paradigm summaries:A concise reference for the programming paradigms listed in this article....
supporting a combination of proceduralProcedural programmingProcedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call...
, functionalFunctional programmingIn computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state...
and object-oriented programmingObject-oriented programmingObject-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
paradigms. As a dynamic programming languageDynamic programming languageDynamic programming language is a term used broadly in computer science to describe a class of high-level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all...
, it facilitates rapid development, with iterative compilingCompilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
into efficient run-time programs. Lisp is different from most other professional languages in the use of S-expressionS-expressionS-expressions or sexps are list-based data structures that represent semi-structured data. An S-expression may be a nested list of smaller S-expressions. S-expressions are probably best known for their use in the Lisp family of programming languages...
s to denote both code and data structure. Function and macro calls are written as lists, with the name of the function first. Developed to standardize the divergent variants of Lisp which predated it, it is not an implementation but rather a language specificationSpecification (technical standard)A specification is an explicit set of requirements to be satisfied by a material, product, or service. Should a material, product or service fail to meet one or more of the applicable specifications, it may be referred to as being out of specification;the abbreviation OOS may also be used...
. Several implementations of the CL standard exist, including proprietary products and open source software.
Scala based
- KojoKojo (programming language)Kojo is an open source programming language and integrated development environment developed by Lalit Pant a volunteer Math teacher at Himjyoti School for under-privileged girls in Dehradun India....
is an interactive desktop development environment developed primarily for educational purposes application that runs on Windows, Linux, and the Mac. 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. - Spde is an offshoot of the ProcessingProcessing (programming language)Processing is an open source programming language and integrated development environment built for the electronic arts and visual design communities with the purpose of teaching the basics of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks...
environment to support sketches written in Scala, a powerfully object-oriented and functional language.
Smalltalk based
As part of the One Laptop per Child project, Smalltalk has developed a sequence of languages, each designed to act as an introduction to the next. The structure is Scratch to Etoys to Squeak to any SmalltalkSmalltalkSmalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...
.
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 learningConstructivism (learning theory)Constructivism is a theory of knowledge that argues that humans generate knowledge and meaning from an interaction between their experiences and their ideas. During infancy, it was an interaction between human experiences and their reflexes or behavior-patterns. Piaget called these systems of...
. 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 SqueakSqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
. 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 1,500,000 projects. It is developed at MIT Media LabMIT Media LabThe MIT Media Lab is a laboratory of MIT School of Architecture and Planning. Devoted to research projects at the convergence of design, multimedia and technology, the Media Lab has been widely popularized since the 1990s by business and technology publications such as Wired and Red Herring for a...
.
- EtoysEToys (Programming Language)Etoys is a child-friendly computer environment and object-oriented prototype-based programming language for use in education.Etoys is a media-rich authoring environment with a scripted object model for many different objects that runs on different platforms and is free and open source.- Brief...
is based on the idea of programmable virtualVirtualThe term virtual is a concept applied in many fields with somewhat differing connotations, and also, differing denotations.The term has been defined in philosophy as "that which is not real" but may display the salient qualities of the real....
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 2D2D computer graphics2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models and by techniques specific to them...
and 3D3D computer graphics3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...
graphicsGraphicsGraphics are visual presentations on some surface, such as a wall, canvas, computer screen, paper, or stone to brand, inform, illustrate, or entertain. Examples are photographs, drawings, Line Art, graphs, diagrams, typography, numbers, symbols, geometric designs, maps, engineering drawings,or...
, imageImageAn image is an artifact, for example a two-dimensional picture, that has a similar appearance to some subject—usually a physical object or a person.-Characteristics:...
s, textPlain textIn computing, plain text is the contents of an ordinary sequential file readable as textual material without much processing, usually opposed to formatted text....
, particles, presentations, web-pages, videoVideoVideo is the technology of electronically capturing, recording, processing, storing, transmitting, and reconstructing a sequence of still images representing scenes in motion.- History :...
s, sound and MIDIMusical Instrument Digital InterfaceMIDI is an industry-standard protocol, first defined in 1982 by Gordon Hall, that enables electronic musical instruments , computers and other electronic equipment to communicate and synchronize with each other...
, the ability to share desktops with other Etoy users in real-timeReal-time computingIn computer science, real-time computing , or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"— e.g. operational deadlines from event to system response. Real-time programs must guarantee response within strict time constraints...
, so many forms of immersive mentoringMentorshipMentorship refers to a personal developmental relationship in which a more experienced or more knowledgeable person helps a less experienced or less knowledgeable person....
and play can be done over the InternetInternetThe Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...
. It is multilingualMultilingualismMultilingualism is the act of using, or promoting the use of, multiple languages, either by an individual speaker or by a community of speakers. Multilingual speakers outnumber monolingual speakers in the world's population. Multilingualism is becoming a social phenomenon governed by the needs of...
, and has been used successfully in United StatesUnited StatesThe United States of America is a federal constitutional republic comprising fifty states and a federal district...
, EuropeEuropeEurope is, by convention, one of the world's seven continents. Comprising the westernmost peninsula of Eurasia, Europe is generally 'divided' from Asia to its east by the watershed divides of the Ural and Caucasus Mountains, the Ural River, the Caspian and Black Seas, and the waterways connecting...
, South AmericaSouth AmericaSouth America is a continent situated in the Western Hemisphere, mostly in the Southern Hemisphere, with a relatively small portion in the Northern Hemisphere. The continent is also considered a subcontinent of the Americas. It is bordered on the west by the Pacific Ocean and on the north and east...
, JapanJapanJapan is an island nation in East Asia. Located in the Pacific Ocean, it lies to the east of the Sea of Japan, China, North Korea, South Korea and Russia, stretching from the Sea of Okhotsk in the north to the East China Sea and Taiwan in the south...
, KoreaKoreaKorea ) is an East Asian geographic region that is currently divided into two separate sovereign states — North Korea and South Korea. Located on the Korean Peninsula, Korea is bordered by the People's Republic of China to the northwest, Russia to the northeast, and is separated from Japan to the...
, IndiaIndiaIndia , officially the Republic of India , is a country in South Asia. It is the seventh-largest country by geographical area, the second-most populous country with over 1.2 billion people, and the most populous democracy in the world...
, NepalNepalNepal , officially the Federal Democratic Republic of Nepal, is a landlocked sovereign state located in South Asia. It is located in the Himalayas and bordered to the north by the People's Republic of China, and to the south, east, and west by the Republic of India...
, and elsewhere. The program is aimed at children 9-12.
- SqueakSqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
is a modern, open source, full-featured implementation of the SmalltalkSmalltalkSmalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...
programming language and environment. SmalltalkSmalltalkSmalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...
is an object-orientedObject-oriented programmingObject-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
, dynamically typedType systemA type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...
, reflectiveReflection (computer science)In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior at runtime....
programming languageProgramming languageA programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." Like Lisp, it has image-based persistence, so everything is modifiable from within the language itself (see Smalltalk#Reflection). It has greatly influenced the industry introducing many of the concepts in object-oriented programming and just-in-time compilationJust-in-time compilationIn computing, just-in-time compilation , also known as dynamic translation, is a method to improve the runtime performance of computer programs. Historically, computer programs had two modes of runtime operation, either interpreted or static compilation...
. Squeak is the vehicle for a wide range of projects including multimedia applications, educational platforms and commercial web applicationWeb applicationA web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...
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-CObjective-CObjective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
.
Children
- AgentSheetsAgentSheetsAgentSheets is an educational Cyberlearning tool to create Web-based simulation games. AgentSheets is used worldwide to teach students programming and related information technology skills through game design...
is a game and simulation authoring tool that is simple enough to be used by middle school students to learn about computer science by making video games, yet sophisticated enough to allow NASA scientist to create simulations of Space Shuttle payload. AgentSheets is supported through a complete curriculum called Scalable Game Design starting with simple Frogger-like games all the way up to Sim-like games with sophisticated artificial intelligence. AgentSheets supports game (animation, interaction, sound, speech synthesis/recognition (Mac)) and science applications (plots, output to spreadsheets, 3D plot (Mac)). English, Greek, and Japanese versions are available. AgentSheets formed the basis for LegoSheets a programming language for the Lego MindstormsLego MindstormsThe LEGO Mindstorm series of kits contain software and hardware to create small, customizable and programmable robots. They include a programmable 'Brick' computer that controls the system, a set of modular sensors and motors, and LEGO parts from the Technics line to create the mechanical...
. which had a less steep learning curve than Brick LogoLego LogoLego Logo was a version of the Logo computer programming language which could manipulate robotic Lego bricks attached to a computer. It was implemented on the Apple II computing platform and was used in American and other grade schools in the late 1980s and early 1990s.Lego Logo was a precursor to...
.
- AliceAlice (software)Alice is a freeware object-oriented educational programming language with an integrated development environment . Later versions are implemented in Java. Alice uses a drag and drop environment to create computer animations using 3D models...
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 and a drag and drop style of programming. The target audience is middle school girls though most children with computer experience will find it entertaining and educational. A variant of Alice designed 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 childs 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).
- 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 edication 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 (Robo.in).
- 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. More information and download is at (RA-CTI / Greek Ministry of Education).
- Guido van RobotGuido van RobotGuido van Robot is an educational tool to help students learn the Python programming language, named after the creator of Python, Guido van Rossum. GvR uses the idea behind Karel the Robot, making the learning of Python programming more interesting...
is a robot control program similar to Logo or Karel J. Robot, with a minimal PythonPython (programming language)Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
syntax. It is designed to be minimalistic and generic to any high level language. There is a variant that includes the full Python syntax and a canonical set of lessons called RUR-PLERUR-PLERUR - Python Learning Environment is an educational tool to help students learn the Python programming language. RUR-PLE uses the idea behind Karel the Robot, making the learning of Python programming more interesting...
.
- Laby, designed with education in mind (it's 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.
- PythonTurtlePythonTurtlePythonTurtle is an educational environment for learning the programming language Python. It is modeled after a similar application for learning the didactic Logo programming language that was popular as an educational tool in the 1990s, with the difference being that PythonTurtle teaches Python,...
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 HackHackety HackHackety Hack is an open source application that teaches individuals how to create software. It combines an IDE with an extensive Lessons system. The cross-platform desktop application also has integration with the website, where "Hackers" can share what they've learned, ask questions, and submit...
is a free RubyRuby (programming language)Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...
-based environment aiming to make learning programmingComputer programmingComputer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
easy for beginners, especially teenagers.
- 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++C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, while Karel J. Robot is a version of Karel implemented in JavaJava (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
. - KoduKõduKõdu is a village in Käru Parish, Rapla County in western-central Estonia....
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. - Learn to Program BASIC is a BASICBASICBASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....
interpreterInterpreter (computing)In computer science, an interpreter normally means a computer program that executes, i.e. performs, instructions written in a programming language...
with an interactive course intended to teach the language to middle school students. Game-specific additions to the BASIC language include 2D spriteSprite (computer graphics)In computer graphics, a sprite is a two-dimensional image or animation that is integrated into a larger scene...
support. Programs written in "LTPB" could be executed on computers without the software by means of a freely-distributable "runner". - Lego MindstormsLego MindstormsThe LEGO Mindstorm series of kits contain software and hardware to create small, customizable and programmable robots. They include a programmable 'Brick' computer that controls the system, a set of modular sensors and motors, and LEGO parts from the Technics line to create the mechanical...
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 ClubhouseComputer ClubhouseThe Computer Clubhouse is a worldwide network of after-school learning settings, founded by Mitchel Resnick and Natalie Rusk of the MIT Media Lab in Boston, USA...
s.
- MamaMama (software)Mama is an educational object-oriented programming language designed to help young students start programming by providing all language elements in the student mother tongue...
is an educational object orientedObject-oriented programmingObject-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
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 AliceAlice (software)Alice is a freeware object-oriented educational programming language with an integrated development environment . Later versions are implemented in Java. Alice uses a drag and drop environment to create computer animations using 3D models...
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. NET, and intends to prepare a beginner to graduate to these or other professional development environments.
- RoboMindRoboMindRoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot...
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, English and Swedish. - Stagecast CreatorStagecast CreatorStagecast Creator is a visual programming language intended for use in teaching programming to children. It is based on the programming by demonstration concept, where rules are created by giving examples of what actions should take place in a given situation...
is a visual programming system based on programming by demonstrationProgramming by demonstrationIn computer science, programming by demonstration is an End-user development technique for teaching a computer or a robot new behaviors by demonstrating the task totransfer directly instead of programming it through machine commands....
. 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.
Historical
- PascalPascal (programming language)Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object 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++A++A++ stands for abstraction plus reference plus synthesis which is used as a name for the minimalistic programming language that is built on ARS. Created by Dr...
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 designed to amalgamate the most important declarative programming paradigms, namely functional programming (nested expressions, higher-order functions, lazy evaluation) and logic programmingLogic programmingLogic programming is, in its broadest sense, the use of mathematical logic for computer programming. In this view of logic programming, which can be traced at least as far back as John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative representation language, and a...
(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”. - HaskellHaskell (programming language)Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...
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. It is a purely functional, extremely expressive lazyLazy evaluationIn programming language theory, lazy evaluation or call-by-need is an evaluation strategy which delays the evaluation of an expression until the value of this is actually required and which also avoids repeated evaluations...
functional programmingFunctional programmingIn computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state...
language. Sample courses are available online, as are multiple books and tutorials. An education specific compiler / IDE, called HeliumHelium (Haskell)Helium is a compiler and a dialect of the functional programming language Haskell. It has been designed to make learning Haskell easier by giving clearer error messages...
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.
- M2001M2001M2001 is a modular educational mathematical programming language for developing and presenting mathematical algorithms, from the modern discrete to the classical continuous mathematics...
is a modularModular programmingModular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
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-2Modula-2Modula-2 is a computer programming language designed and developed between 1977 and 1980 by Niklaus Wirth at ETH Zurich as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith...
. 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.
- OzOz (programming language)Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming....
is a programming language designed to teach computer theory. It supports most major paradigms 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 ProgrammingConcepts, Techniques, and Models of Computer ProgrammingConcepts, Techniques, and Models of Computer Programming is a textbook published in 2004 about general computer programming concepts from MIT Press written by Université catholique de Louvain professor Peter Van Roy and Royal Institute of Technology, Sweden professor Seif Haridi.Using a carefully...
and a freely available standard implementation the Mozart Programming SystemMozart Programming SystemThe Mozart Programming System is a multiplatform implementation of the Oz programming language developed by an international group, the Mozart Consortium, which originally consisted of Saarland University, the Swedish Institute of Computer Science, and the Université catholique de Louvain.Mozart...
.
- Qi IIQi (programming language)Qi is a functional programming language developed by Dr Mark Tarver and introduced in April 2005. A new version was reimplemented and issued as Qi II in November 2008. The first version was free software, licensed under GPL...
is a functional programmingFunctional programmingIn computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state...
language. The Qi core language is a simplification of the Lisp language, but it includes most of the features common to modern functional programming languages such as pattern matchingPattern matchingIn computer science, pattern matching is the act of checking some sequence of tokens for the presence of the constituents of some pattern. In contrast to pattern recognition, the match usually has to be exact. The patterns generally have the form of either sequences or tree structures...
, curryingCurryingIn mathematics and computer science, currying is the technique of transforming a function that takes multiple arguments in such a way that it can be called as a chain of functions each with a single argument...
, partial applications, guards and (optional) static type checkingType systemA type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...
. It also includes an embedded PrologPrologProlog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of...
as part of the distribution called Qi Prolog. The combination of all these features within the Lisp environment makes Qi in many senses a rationalization and modernization of Lisp. Qi is free for non commercial use, and has a free canonical textbook Functional Programming in Qi.
Languages by age and experience
The following chart helps to summarize the information above for parents and teachers.
US educational level Experience level Appropriate languages Preschool - grade 2 None, not applicable Logo style: Logo, Guido van Robot Guido van RobotGuido van Robot is an educational tool to help students learn the Python programming language, named after the creator of Python, Guido van Rossum. GvR uses the idea behind Karel the Robot, making the learning of Python programming more interesting...
, Karel, Scratch, Baltie 2, Stagecast CreatorStagecast CreatorStagecast Creator is a visual programming language intended for use in teaching programming to children. It is based on the programming by demonstration concept, where rules are created by giving examples of what actions should take place in a given situation...Grades 2-4 None, not applicable Logo Logo (programming language)Logo is a multi-paradigm computer programming language used in education. It is an adaptation and dialect of the Lisp language; some have called it Lisp without the parentheses. It was originally conceived and written as functional programming language, and drove a mechanical turtle as an output...
, RoboMindRoboMindRoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot...
, Scratch or EtoysEToys (Programming Language)Etoys is a child-friendly computer environment and object-oriented prototype-based programming language for use in education.Etoys is a media-rich authoring environment with a scripted object model for many different objects that runs on different platforms and is free and open source.- Brief...
, Stagecast CreatorStagecast CreatorStagecast Creator is a visual programming language intended for use in teaching programming to children. It is based on the programming by demonstration concept, where rules are created by giving examples of what actions should take place in a given situation...Grades 5-8 None or little Lego Mindstorm Lego MindstormsThe LEGO Mindstorm series of kits contain software and hardware to create small, customizable and programmable robots. They include a programmable 'Brick' computer that controls the system, a set of modular sensors and motors, and LEGO parts from the Technics line to create the mechanical...
, EtoysEToys (Programming Language)Etoys is a child-friendly computer environment and object-oriented prototype-based programming language for use in education.Etoys is a media-rich authoring environment with a scripted object model for many different objects that runs on different platforms and is free and open source.- Brief...
, AgentSheetsAgentSheetsAgentSheets is an educational Cyberlearning tool to create Web-based simulation games. AgentSheets is used worldwide to teach students programming and related information technology skills through game design...
, AliceAlice (software)Alice is a freeware object-oriented educational programming language with an integrated development environment . Later versions are implemented in Java. Alice uses a drag and drop environment to create computer animations using 3D models...
, RoboMindRoboMindRoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot...
, Baltie 3, learning orientedGambasGambas is the name of an object-oriented dialect of the BASIC programming language as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic...
BASICBASICBASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....
, Phrogram, Stagecast CreatorStagecast CreatorStagecast Creator is a visual programming language intended for use in teaching programming to children. It is based on the programming by demonstration concept, where rules are created by giving examples of what actions should take place in a given situation...
, MamaMama (software)Mama is an educational object-oriented programming language designed to help young students start programming by providing all language elements in the student mother tongue...Grades 5-8 Some Squeak SqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
, RoboMindRoboMindRoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot...
, full featured BASIC, GreenfootGreenfootGreenfoot is an interactive Java development environment designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games....
, PascalPascal (programming language)Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
, MamaMama (software)Mama is an educational object-oriented programming language designed to help young students start programming by providing all language elements in the student mother tongue...
, PythonPython (programming language)Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...High school None or little Squeak SqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
, RoboMindRoboMindRoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot...
, GreenfootGreenfootGreenfoot is an interactive Java development environment designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games....
, PascalPascal (programming language)Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
, full featured BASIC, MamaMama (software)Mama is an educational object-oriented programming language designed to help young students start programming by providing all language elements in the student mother tongue...High school Some Squeak SqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
, RoboMindRoboMindRoboMind is a simple educational programming environment with an own scripting language that allows beginners to learn the basics of computer science by programming a simulated robot...
, GreenfootGreenfootGreenfoot is an interactive Java development environment designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games....
or BlueJBlueJBlueJ is an integrated development environment for the Java programming language, developed mainly for educational purposes, but also suitable for small-scale software development....
, newLISPNewLISPnewLISP is an open source scripting language in the Lisp family of programming languages developed by Lutz Mueller and released under the GNU General Public License.-History:newLISP originated in 1991 and was originally developed on a Sun-4 workstation...
, MamaMama (software)Mama is an educational object-oriented programming language designed to help young students start programming by providing all language elements in the student mother tongue...
, OZOz (programming language)Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming....
, most other programming languagesCollege None assumed, non-majors course Squeak SqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
, GreenfootGreenfootGreenfoot is an interactive Java development environment designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games....
or BlueJBlueJBlueJ is an integrated development environment for the Java programming language, developed mainly for educational purposes, but also suitable for small-scale software development....
, newLISPNewLISPnewLISP is an open source scripting language in the Lisp family of programming languages developed by Lutz Mueller and released under the GNU General Public License.-History:newLISP originated in 1991 and was originally developed on a Sun-4 workstation...
, full featured BASICCollege Starting computer science or developer curriculum Haskell Haskell (programming language)Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...
, OZOz (programming language)Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming....
, Scheme, QiQi (programming language)Qi is a functional programming language developed by Dr Mark Tarver and introduced in April 2005. A new version was reimplemented and issued as Qi II in November 2008. The first version was free software, licensed under GPL...
, SqueakSqueakThe Squeak programming language is a Smalltalk implementation. It is object-oriented, class-based and reflective.It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers...
, NetBeansNetBeansNetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...
BlueJ.NetBeans BlueJ EditionNetBeans BlueJ Edition is an integrated development environment meant to transition students from the introductory IDE BlueJ to the more professional IDE NetBeans. The first release of the IDE is now available for download....
External links
- Kids Like . info - educational games and toys; teach children programming, nontechnical encyclopedia article on educational programming languages, reviews and explains Scratch, Alice, Greenfoot
- Don's Box, discussion on which languages to use for teaching kids, wide range of opinion
- Coding 4 Fun, Microsoft site for recreational coding
- BASIC vs Logo, at WikiVS
- HappyNerds, link collection for educational programming languages
- 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