Educational programming language
From Seo Wiki - Search Engine Optimization and Programming Languages
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.
As part of the One Laptop per Child project, Smalltalk has developed a flow of languages each designed to act as an introduction to the other. The structure is Scratch to Etoys to Squeak to any Smalltalk. Each provides graphical environments which may be used not just to teach programming concepts to kids, but also physics and mathematics simulations, story-telling exercises, etc., through the use of constructive learning. Smalltalk and Squeak are fully featured application development languages that have been around and well respected for decades; Scratch is a children's learning tool.
- Scratch is a visual programming language based on and implemented in Squeak. It has the goal of teaching programming concepts to children and letting them create games, videos, and music. In Scratch, all the interactive objects, graphics, and sounds can be easily imported to a new program and combined in new ways. That way, beginners can get quick results and be motivated to try further. In the Scratch community over 100,000 projects have been developed and uploaded. It is developed at MIT Media Lab.
- Etoys is based on the idea of programmable virtual entities behaving on the computer screen. Etoys provides a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users. It includes 2D and 3D graphics, images, text, particles, presentations, web-pages, videos, sound and MIDI, the ability to share desktops with other Etoy users in real-time, so many forms of immersive mentoring and play can be done over the Internet. It is multilingual, and has been used successfully in United States, Europe, South America, Japan, Korea, India, Nepal, and elsewhere. The program is aimed at children 9-12 
- Squeak is a modern, open source, full-featured implementation of the Smalltalk programming language and environment. Smalltalk is an object-oriented, dynamically typed, reflective programming language created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." Like Lisp, it has image-based persistence, so everything is modifiable from within the language itself (see Smalltalk#Reflection).. It has tremendously 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 as well as easy to debug, analyze, and change, as its virtual machine is written entirely in Smalltalk The main site maintains a list of free tutorials, and Stéphane Ducasse maintains a large collection of Free Online Books related to Smalltalk and Squeak. The commonly used professional language in greatest use today which incorporates many of Smalltalk's ideas is Objective-C.
- Greenfoot is an interactive Java development environment developed primarily for educational purposes. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games. It is mainly aimed at programming education (object-oriented programming with Java) at high school and early university level.
- BlueJ is an integrated Java environment specifically designed for introductory teaching, first year college student. It eliminates some of Java's complex syntax, the difficulties of I/O and represents the object/class relationships visually. The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners (the Blue system). The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualization and interaction techniques to create a highly interactive environment that encourages experimentation and exploration.
- NetBeans BlueJ Edition is an integrated development environment (IDE) meant to transition students from the introductory IDE BlueJ to the more professional IDE NetBeans. Sun provides a free curriculum, designed for and tested in high schools for use in teaching Java/BlueJ.
- NetBeans / Java This is a professional level platform. NetBeans refers to both a platform for the development of applications for the network, and an integrated development environment (IDE) developed using the NetBeans Platform. The NetBeans Platform is a reusable framework for simplifying the development of other desktop applications. The platform offers services common to desktop applications, allowing developers to focus on the logic specific to their application. The NetBeans IDE is an open-source integrated development environment written entirely in Java using the NetBeans Platform. NetBeans IDE supports development of all Java application types (Java SE, web, EJB and mobile applications) out of the box. Among other features are an Ant-based project system, version control and refactoring.
Lisp is the second oldest family of computer languages in use today, and as such has a host of dialects and implementations at a wide range of difficulties. Lisp was originally created as a practical mathematical notation for computer programs, based on lambda calculus, which makes it particularly well suited for teaching theories of computation. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, object-oriented programming, and the self-hosting compiler all of which are useful for learning computer science.
The name LISP derives from "LISt Processing language". Linked lists are one of Lisp languages' major data structures, and Lisp source code is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or even new domain-specific languages embedded in Lisp. So Lisps are useful for learning language design, and creating custom languages.
A reasonable learning path would be Logo followed by any educational variant such as Scheme or newLISP, followed by a professional variant such as Common LISP.
- Logo is a language that was specifically designed to introduce children to programming. The first part of learning Logo deals with "turtle graphics" (derived from turtle robots used as early as 1969 with proto-Logo. In modern implementations, an abstract drawing device, called the turtle, is used to make programming for children very attractive by concentrating on doing turtle graphics. Seymour Papert, the inventor of Logo, was a major thinking in constructionism, a variety of constructivist learning theory. Papert argued that activities like writing would naturally be learned by much younger children providing that they adopted a computation culture. 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 see also LISPs of the day used non-recursive control structures to implement lambda calculus, primarily since LISPs were still being implemented for efficiency reasons in hardware. Guy L. Steele, Jr. and Gerald Jay Sussman constructed Scheme as a fast interpreted language on top of an underlying LISP with cheap procedure calls. Pedagogically this allowed for teaching programming in terms of domain-specific languages and meta-circular evaluators. The publication of Structure and Interpretation of Computer Programs in 1984 incorporated this educational philosophy into a canonical textbook, which changed the predominance of Pascal as the university programming language.
|“|| The publication of Abelson and Sussman’s Structure and Interpretation of Computer Programs (sicp) (Abelson et al., 1985) revolutionized the landscape of the introductory computing curriculum in the 1980s. Most importantly, the book liberated the introductory course from the tyranny of syntax. Instead of arranging a course around the syntax of a currently fashionable programming language, sicp focused the ﬁrst course on the study of important ideas in computing: functional abstraction, data abstraction, streams, data-directed programming, implementation of message-passing objects, interpreters, compilers, and register machines.
Over a short period, many universities in the US and around the world switched their ﬁrst course to sicp and Scheme. The book became a major bestseller for MIT Press. Along with sicp, the Scheme programming language (became widely used. It was no longer the subject of a few individual courses at Indiana University, MIT, and Yale, but the language of choice in introductory courses all over the world.
- Since then the Scheme community has introduced several pedagogic programming environments for less advanced courses of particular notes it the PLT Scheme outreach effort with its DrScheme environment, freely available text How to Design Programs and TeachScheme! educator training.
- newLISP aims to provide a fast, powerful, cross-platform, full-featured scripting version of the Lisp programming language which uses only a modest amount of system resources such as disk space and memory. It is particularly suited for learners because of its simple, consistent, streamlined, Lisp environment that minimizes the learning curve and maximizes programmer productivity and pleasure.
- Common Lisp Common Lisp is a general-purpose (professional), multi-paradigm programming language. It supports a combination of procedural, functional and object-oriented programming paradigms. As a dynamic programming language, it facilitates rapid development, with iterative compilation into efficient run-time programs. Common Lisp is different from most other professional languages in the use of S-expressions 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 specification. Several implementations of the Common Lisp standard are available, including proprietary products and open source software.
BASIC is a language invented in 1964 to provide computer access to non-science students. It became popular on mini computers during the 1960s, and became the standard computing language for microcomputers during the late 1970s and early 1980s. The goals of BASIC were focused on the needs of learning to program easily: be easy for beginners to use, be interactive, provide clear and friendly error messages, respond quickly, do not require an understanding of computer hardware or operating systems. What made basic particularly useful for education was the small size of programs. Useful programs to illustrate a concept could be written in a dozen lines. At the same time BASIC did not require mathematical or computer science sophistication.  BASIC continues to this day to be a language which is frequently self taught with excellent tutorials and implementations. See List of BASIC dialects by platform for a complete list. BASIC offers a learning path from learning oriented BASICs such as Microsoft Small Basic, BASIC-256 and SiMPLE, to more full featured BASICs like Visual Basic .NET and Gambas.
- Visual Basic .NET with a freely available Visual Basic Express Edition including an K-12 learning center and Beginner adult learning center
- Microsoft Small Basic is an 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 Flickr) children are able to create entertaining interactive programs, on the net or on the desktop. The system utilizes the Microsoft Visual Studio IDE to provide auto-completion and context sensitive help.
- BASIC-256  an easy to use version of BASIC designed to teach young children the basics of computer programming. It uses traditional BASIC control structures (gosub, for loops, goto) for ease of understanding program flow-control. It has a built-in graphics mode that allows children to draw pictures on screen after minutes. It includes tutorials that introduce programming concepts through fun exercises.
- SiMPLE is a programming development system that was created to provide easy programming capabilities for everybody, especially non-professionals. SiMPLE is vaguely reminiscent of the AppleSoft BASIC. SiMPLE is a compiled language. In addition, SiMPLE allows users to create their own libraries of frequently used functions. "Simple" is a generic term for three slightly different versions of the language: Micro-SiMPLE to use only 4 keywords, Pro-SiMPLE, and Ultra-SiMPLE use of 23 keywords.
- AgentSheets is an award winning 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 well as 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 Mindstorms. which had a less steep learning curve than Brick Logo
- Alice is a free programming software designed to teach event driven object oriented programming to children. Programmers create interactive stories using a modern IDE interface with 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 Balties 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#. Additional usage information can be found at the (SGP Systems).
- Guido van Robot is a robot control program similar to Logo or Karel J. Robot, with a minimal Python 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-PLE.
- Karel, Karel++, and Karel J. Robot are languages aimed at absolute beginners, used to control a simple robot in a city consisting of a rectangular grid of streets. While Karel is its own programming language, Karel++ is a version of Karel implemented in C++, while Karel J. Robot is a version of Karel implemented in Java.
- Learn to Program BASIC is a BASIC interpreter with an interactive course intended to teach the language to middle school students. Game-specific additions to the BASIC language include 2D sprite support. Programs written in "LTPB" could be executed on computers without the software by means of a freely-distributable "runner".
- Lego Mindstorms is a line of Lego sets combining programmable bricks with electric motors, sensors, Lego bricks, and Lego Technic pieces (such as gears, axles, and beams). Mindstorms originated from the programmable sensor blocks used in the line of educational toys. The first retail version of Lego Mindstorms was released in 1998 and marketed commercially as the Robotics Invention System (RIS). The current version was released in 2006 as Lego Mindstorms NXT. A wide range of programming languages is used for the mindstorms from Logo to BASIC to derivatives of Java, Smalltalk and C. The Mindstorm approach to programming now have dedicated physical sites called Computer Clubhouses.
- 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.
- RoboMind is a simple educational programming environment that lets beginners program a robot. It introduces popular programming techniques and also some robotics and artificial intelligence. The robot can be programmed in Arabic, Chinese, Dutch, English and Swedish.
- Stagecast Creator is a visual programming system based on programming by demonstration. Users demonstrate to the system what to do by moving icons on the screen, and it generates rules for the objects (characters). Users can create two-dimensional simulations that model a concept, multi-level games, interactive stories, etc.
- A++ represents a more recent attempt at creating a programming 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 programming (logical variables, partial data structures, built-in search). It also integrates the two most import operational principles developed in the area of integrated functional logic languages: “residuation” and “narrowing”.
- Haskell is often used by universities in place of LISP or Scheme. Its primary goal was to function equally well as a language for teaching, research and application design. It is a purely functional, extremely expressive lazy functional programming language. Sample courses are available online, as are multiple books and tutorials. An education specific compiler / IDE, called Helium has been created. Another advantage of Haskell is in teaching inductive methods. Because of the advantages of Haskell's syntax inductive proofs become as easy or easier as they are on paper, unlike the LISP/Scheme family which introduces additional syntax. 
- Oz is a programming language designed to teach computer theory. It supports most major paradigms  in a single language so that students can learn paradigms without having to learn multiple syntaxes. Oz contains in a simple and well-factored way most of the concepts of the major programming paradigms, including logic, functional (both lazy and eager), imperative, object-oriented, constraint, distributed, and concurrent programming. It has a canonical textbook Concepts, Techniques, and Models of Computer Programming and a freely available standard implementation the Mozart Programming System.
- Qi II is a functional programming 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 matching, currying, partial applications, guards and (optional) static type checking. It also includes an embedded Prolog 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.
|Age||Experience Level||Appropriate Languages|
|Preschool - 2nd grade||None / Not applicable||Logo style: Logo, Guido van Robot, Karel. Scratch, Baltie 2, Stagecast Creator|
|2nd grade - 4th grade||None / Not applicable||Logo, Scratch, Etoys, Stagecast Creator|
|5th grade - 8th grade||Little or no experience||Lego Mindstorm, Etoys, AgentSheets, Alice, Baltie 3, learning oriented BASIC, Phrogram, Stagecast Creator|
|5th grade - 8th grade||Some experience||Squeak, full featured BASIC, Greenfoot, Pascal|
|High School||Little or no experience||Squeak, Greenfoot, Pascal, full featured BASIC|
|High School||Some Experience||Squeak, Greenfoot or BlueJ, newLISP, OZ. Most other programming languages.|
|College||non majors course, no experience assumed||Squeak, Greenfoot or BlueJ, newLISP, full featured BASIC|
|College||Starting computer science or developer curriculum||Haskell, OZ, Scheme, Qi, Squeak, NetBeans BlueJ.|
- Sugar, A GUI designed for constructive learning.
- A nontechnical encyclopedia article on educational programming languages, hosted on kidslike.info Reviews and explains Scratch, Alice, and Greenfoot.
- A discussion on which languages to use for teaching kids. Wide range of opinion on Don's Box
- Coding 4 Fun A Microsoft site aimed at recreation coding.
- BASIC vs. Logo at WikiVS
- ↑ Cavallo, David (May 28, 2007). "Learning Squeak from Scratch". One Laptop Per Child News. http://www.olpcnews.com/software/applications/learning_squeak_scratch.html. Retrieved 4-3-09.
- ↑ Ducasse, Stéphane (2005). Squeak: Learn Programming with Robots (Technology in Action). Apress. pp. 289 in ch 24: A tour or eTOY. ISBN 1590594916. http://smallwiki.unibe.ch/botsinc/.
- ↑ Kay, Alan. "The Early History of Smalltalk". http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html. Retrieved 2007-09-13.
- ↑ For further discussion of why this make it easy see Meta-circular evaluator
- ↑ 5.0 5.1 Nourie, Dana  (July 2008). "Young Developer Learning Path". Sun Microsystems. http://java.sun.com/developer/technicalArticles/young_dev_learning_path/. Retrieved April 3, 2009.
- ↑ "What is BlueJ?". BlueJ official site. http://www.bluej.org/about/what.html. Retrieved April 3, 2009.
- ↑ 7.0 7.1 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,, http://www.papert.org/articles/RedefiningChildhood.html
- ↑ Volume 1: Symbolic Computing Volume 2: Advanced Techniques Volume 3: Beyond Programming
- ↑ Gerald Jay Sussman and Guy Lewis Steele, Jr.. "Scheme: An Interpreter for Extended Lambda Calculus". MIT AI Lab. AI Lab Memo AIM-349. December 1975. , from Lambda Papers
- ↑ "Debunking the "Expensive Procedure Call" Myth, or Procedure Call Implementations Considered Harmful, or LAMBDA, the Ultimate GOTO". ACM Conference Proceedings. 1977. , from the Lambda Papers
- ↑ Felleisen, Matthias; Findler, Robert Bruce; Flatt,, Matthew; Krishnamurthi, Shriram (2004), "The Structure and Interpretation of the Computer Science Curriculum", Journal of Functional Programming 14: 365, doi:10.1017/S0956796804005076, http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf
- ↑ additional information on the PLT group results can be found at Northeastern PLT: Publications.
- ↑ Brin, David (Sept 14, 2006), "Why Johnny can't code", Salon Magazine, http://www.salon.com/tech/feature/2006/09/14/basic/print.html, retrieved 4/12/09
- ↑ Microsoft corporation 2009 Getting Started Guide for Small Basic
- ↑ "LegoSheets: A Programming, Simulation and Manipulation Environment for the MIT Programmable Brick". http://l3d.cs.colorado.edu/systems/legosheets/Home.html. Retrieved 4-8-09.
- ↑ Gindling, Jim; Andri Ioannidou, Jennifer Loh, Olav Lokkebo, Alexander Repenning. "LEGOsheets: A Rule-Based Programming, Simulation and Manipulation Environment for the LEGO Programmable Brick". The Center for LifeLong Learning and Design. http://l3d.cs.colorado.edu/systems/legosheets/vl95slides/. Retrieved 4-8-09.
- ↑ M. Hanus. Teaching Functional and Logic Programming with a Single Computation Model. In Proc. Ninth International Symposium on Programming Languages, Implementations, Logics, and Programs (PLILP’97), pp. 335–350. Springer LNCS 1292, 1997.
- ↑ Curry report, Introduction. Most recent version available at 
- ↑ M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, Vol. 19&20, pp. 583–628, 1994.
- ↑ Jones, Simon Peyton (2002). "Preface". The Haskell 98 report. Haskell 98 working group. http://www.haskell.org/onlinereport/preface-jfp.html. Retrieved April 4, 2009.
- ↑ Wadler, Philip (1987), "Why calculating is better than scheming", ACM SIGPLAN Notices: 83–94, ISSN:0362-1340, http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf
- ↑ Bird, Richard (1998). Introduction to Functional Programming using Haskell (2nd Edition). Prentice Hall. pp. 66. ISBN 0134843460.
- ↑ Programming Paradigms poster