List of educational programming languages

An educational programming language (EPL) is a programming language used primarily as a learning tool, and a starting point before transitioning to more complex programming languages.

Types of educational programming languages

Assembly languages

Initially, machine code was the sole method of programming computers. Assembly language (ASM), introduced mnemonics to replace low-level instructions, making it one of the oldest programming languages still used today. Numerous dialects and implementations exist, each tailored to a specific computer processor architecture. Assembly languages are low-level and more challenging to use, as they are untyped and rigid. For educational purposes, simplified dialects of assembly languages have been developed to make coding more accessible to beginners.

Assembly languages are designed for specific processor architectures, and they must be written with the corresponding hardware in mind. Unlike higher-level languages, educational assembly languages require a representation of a processor which can be virtual or physical. These languages are often used in educational settings to demonstrate the fundamental operations of a computer processor.

This image describes the program Little Man Computer (LMC)'s interface
An image of Little Man Computer (LMC)'s interface
A CARDIAC simulator running a program that demonstrates subroutines (starting at locations 80 and 90)
Animation that shows how the WDR paper computer adds two numbers using a loop
  • Little Man Computer (LMC), (1965) is an instructional model of a simple von Neumann architecture computer. It includes the basic features of modern computers and can be programmed using machine code (usually in decimal) or assembly. The model simulates a computer environment using a visual metaphor of a person (the "Little Man") in a room with 100 mailboxes (memory), a calculator (the accumulator) and a program counter. LMC is used to help students understand basic processor functions and memory management.
  • CARDIAC (1968) is very similar to LMC, but introduces some refinements such as negative numbers, a four-digit accumulator, storing the return address for subroutines in location 99, and an accumulator shift instruction. It was distributed by Bell Labs to high school students as a cardboard kit. Input and output are done via virtual punch card decks (represented by paper strips), which is also how programs are loaded into CARDIAC initially, unlike LMC.
  • MIX (1968) and MMIX (1999) are computer models featured in Donald Knuth's (Art of Computer Programming). The MIX computer is designed for educational purposes, illustrating how a basic machine language operates. Despite its simplicity, it can handle complex tasks typical of high-performance computers. MIX allows programming in both binary and decimal, with software emulators available for both models. MMIX, which superseded MIX, is a 64-bit RISC instruction set architecture, modernized for teaching contemporary computer architecture.
  • Instructo paper computer (1979) was published by McGraw Hill Education and was intended to teach computer concepts to middle school students. Compared to LMC or CARDIAC, this paper computer is a bit more playful, featuring start/stop/reset "buttons" and jump switches. However, its instruction set is quite advanced, with instructions for printing strings, multiplication and division, printing fractions, and even calculating roots and powers. Like the CARDIAC, it uses an elaborate layout with multiple paper strips inserted in various places on the page. An open manila folder was typically used when students had to build the paper computer themselves from scratch.
  • WDR paper computer (1983) is a very minimalist paper computer with only five CPU instructions that was introduced on a German TV show for computer education. Only a pen (for the program counter) and matchsticks or coins (for the register contents) are needed for its operation. Its very limited instruction set means that programs are typically quite a bit longer than e.g. on the LMC or CARDIAC.
  • DLX (1994) is a reduced instruction set computer (RISC) processor architecture created by key developers of the MIPS and Berkeley RISC designs. DLX is a simplified version of MIPS, offering a 32-bit load/store architecture commonly used in college-level computer architecture courses.
  • Next Byte Codes (NBC), (2007) is a simple assembly language used for programming Lego Mindstorms NXT programmable bricks. The NBC compiler produces NXT-compatible machine code and is supported on Windows, macOS and Linux.
  • Little Computer 3 (LC-3), (2019) is an assembly language with a simplified instruction set, enabling the writing of moderately complex assembly programs. It includes many features found in more advanced languages, making it useful for teaching basic programming and computer architecture. It is primarily used in introductory computer science and engineering courses.
  • Chombit (2020) is a 32-bit CPU architecture implemented by the Hybrix virtual machine. Project documentation describes the architecture as educationally oriented, incorporating features such as framed registers and a secondary stack used to track garbage-collection roots. Despite these simplifications, it remains a conventional processor model, including explicit instruction timing and memory-mapped I/O.

BASIC variants

BASIC (Beginner's All-purpose Symbolic Instruction Code) was invented in 1964, to provide computer access to non-science students. It became popular on minicomputers during the 1960s and became a standard computing language for microcomputers during the late 1970s and early 1980s. The goals of BASIC were focused on the need to learn to program easily and they are to:

  • Be easy for beginners to use.
  • Be interactive.
  • Provide clear and friendly error messages.
  • Respond quickly.
  • Not require an understanding of computer hardware or operating systems.

What made BASIC attractive for education was the small size of programs that could illustrate a concept in a dozen lines. BASIC continues to be frequently self-taught with tutorials and implementations.

See also: List of BASIC dialects by platform

BASIC offers a learning path from learning-oriented BASICs such as Microsoft Small Basic, BASIC-256 SIMPLE and to more full-featured BASICs like Visual Basic (.NET) and Gambas.

  • Microsoft Small Basic is a restricted version of Visual Basic (classic), which is designed as "an introductory programming language for beginners". It's intentionally minimal with just 15 reserved words (keywords) for basic functions. By providing specific libraries for topics that interest children, they can create programs for both the web and desktop environments. For example, with 6 lines of code, it is possible to demonstrate a random network image viewer using Flickr as the source. The system uses the Microsoft Visual Studio integrated development environment (IDE) to provide auto-completion and context-sensitive help.
  • Basic-256 is 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 easy understanding of program control flow. It has a built-in graphics mode that allows children to draw pictures on the screen after minutes.
  • SiMPLE is a programming development system that was created to provide easy programming abilities for everybody, especially non-professionals. It is somewhat like Applesoft BASIC. It is compiled and lets users make their own libraries of often-used functions. "Simple" is a generic term for three slightly different versions of the language: Micro-SIMPLE (uses only 4 keywords), Pro-SiMPLE, and Ultra-SiMPLE (using 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 student's first look at programming.
  • SmallBASIC is a fast and easy-to-learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. It includes trigonometry, matrix, and algebra functions, a built-in IDE, a powerful string library, system, sound and graphic commands, and a structured programming syntax.

C-based

  • Ch is a C/C++ interpreter designed to help non-CS students learn math, computing and programming in C and C++. It extends C with numerical, 2D/3D graphical plotting and scripting features.

Java-based

Lisp-based

Logo-based

  • 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. 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, one of the creators of Logo, was a prominent figure in constructionism, a variety of constructivist learning theories. Papert argued that activities like writing would naturally be learned by much younger children provided that they adopt a computing culture. Logo was designed to introduce children to programming through visual aids and concepts in a technology-focused curriculum. "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 by children as young as 3 years old 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. Logo is available on multiple platforms, offered in both free and commercial versions for educational use.

Scala-based

  • Kojo is an interactive desktop development environment, developed primarily for educational purposes. The application runs on Windows, Linux and macOS. Kojo is a learning environment, with many different features that help with the exploration, learning and teaching of concepts in computer programming, critical thinking, math, science, art, music, creative thinking, computer and internet literacy.

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. Each provides graphical environments that 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 have fully featured application development languages that have been around and well-respected for decades; Scratch is a children's learning tool.

  • Scratch 1.0 is implemented in Smalltalk. See below for more information.
  • 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 Etoys users in real-time). Many forms of immersive mentoring and play can be done over the Internet. It is multilingual and has been used successfully in the United States, Europe, South America, Japan, Korea, India, Nepal and elsewhere. The program is aimed at children between the ages of 9-12.
  • Squeak is a modern, open-source, full-featured implementation of the Smalltalk language and environment. Smalltalk is an object-oriented, dynamically typed, reflective programming language created 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 (see Smalltalk#Reflection). 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.

Pascal

  • Pascal is an ALGOL-based programming language designed by Niklaus Wirth in approximately 1970 with the goal of teaching structured programming. 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 to general usage.

Other

Children

University

See also

References

  1. ↑ Matt, Fred C. (1979). "Instructo Paper Computer Manual" (PDF). Computer History Museum. Retrieved May 7, 2026.
  2. ↑ Chris Staecker (June 17, 2022). Mr Matt's Instructo Paper Computer: Paper Computers #3. Retrieved May 7, 2026 – via YouTube.
  3. ↑ "Framed registers". Chombit Reference. Retrieved December 21, 2025.
  4. ↑ Microsoft corporation 2009 Getting Started Guide for Small Basic, p. 64.
  5. ↑ Kenlon, Seth. "Learn the Lisp programming language in 2021 | Opensource.com". opensource.com. Retrieved October 14, 2024.
  6. ↑ "What is the Lisp (List Processing) Programming Language? – A Definition from TechTarget.com". WhatIs. Retrieved October 14, 2024.
  7. 1 2 Papert, Seymour (October 1980). Redefining Childhood: The Computer Presence as an Experiment in Developmental Psychology. Tokyo, Japan and Melbourne, Australia: 8th World Computer Congress: IFIP Congress.
  8. ↑ "About kogics Kojo". Retrieved February 12, 2011.
  9. ↑ Cavallo, David (May 28, 2007). "Learning Squeak from Scratch". One Laptop Per Child News. Retrieved April 3, 2009.
  10. ↑ 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.
  11. ↑ Kay, Alan. "The Early History of Smalltalk". Archived from the original on April 29, 2011. Retrieved September 13, 2007.
  12. ↑ For further discussion of why this make it easy see Meta-circular evaluator
  13. ↑ Hemmendinger, David. "Pascal". Encyclopædia Britannica, 5 Apr. 2024, https://www.britannica.com/technology/Pascal-computer-language. Accessed 12 June 2024.
  14. ↑ "Pascal - Free Pascal wiki". wiki.freepascal.org. Retrieved October 11, 2024.
  15. ↑ "About – Alice". Retrieved October 7, 2024.
  16. ↑ "Storytelling Alice – Alice". Retrieved November 7, 2023.
  17. ↑ EducationWorld (September 21, 2012). "ThinkLABS RoboLAB". EducationWorld. Retrieved October 8, 2024.
  18. ↑ CiMPLE Original Developers Weblog Archived July 21, 2011, at the Wayback Machine
  19. ↑ "ThinkLABS -". September 20, 2012. Archived from the original on September 20, 2012. Retrieved October 9, 2024.
  20. ↑ "Physical EToys - General description of the project". Tecnodata.
  21. ↑ "Hackety Hack". GitHub. Retrieved October 9, 2024.
  22. ↑ HL ModTech (January 23, 2018). Logo Programming - Turtle Academy Lesson 1. Retrieved October 9, 2024 – via YouTube.
  23. ↑ Mama educational programming principles
  24. ↑ "Imagine, Program, Share". Scratch Statistics (in Latin). May 25, 2023. Retrieved November 17, 2024.
  25. ↑ "Group Overview ‹ Lifelong Kindergarten". MIT Media Lab. Retrieved October 8, 2024.
  26. ↑ 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.
  27. ↑ "Curry report, Introduction". Archived from the original on October 4, 2009.
  28. ↑ Hanus, M. (1994). "The Integration of Functions into Logic Programming: From Theory to Practice". Journal of Logic Programming. 19&20: 583–628. doi:10.1016/0743-1066(94)90034-5. hdl:11858/00-001M-0000-0014-ADB0-F.
  29. ↑ "About". Flowgorithm. Retrieved August 26, 2014.
  30. ↑ "The Racket Language". Indiana University. Retrieved April 10, 2026.
  31. ↑ Programming Paradigms poster
  32. ↑ "Mozart Programming System". mozart2.org. Retrieved October 25, 2024.