List of educational programming languages

An educational programming language is a programming language that is designed primarily as a learning instrument and not so much as a tool for writing programs for real-world work.

Learning paths

Many educational programming languages position themselves inside a learning path, that is a sequence of languages each designed to build on the others moving a student from easy to understand and entertaining environments to full professional environments. Some of the better known are presented below.

Assembly language

Originally, machine code was the first and only way to program computers. Assembly language was the next type of language used, and thus is one of the oldest families of computer languages in use today. Many dialects and implementations are available, usually some for each computer processor architecture. It is very basic and termed a low level programming language. It is one of the more difficult languages to work with being untyped and rigid, but this is how computers work at low level. Several simplified dialects exist for education.

Low level languages must be written for a specific processor architecture and cannot be written or taught in isolation without referencing the processor for which it was written. Unlike higher level languages, using an educational assembly language needs a representation of a processor (whether virtualized or physical). Assembly is the most helpful programming language to use for learning about fundamental computer processor operation.

BASIC

BASIC which stands for Beginners All-purpose Symbolic Instruction Code, is a language invented in 1964 to provide computer access to non-science students. It became popular on mini computers during the 1960s, and became the standard computing language for microcomputers during the late 1970s and early 1980s. The goals of BASIC were focused on the needs of learning to program easily: be easy for beginners to use, be interactive, provide clear and friendly error messages, respond quickly, do not require an understanding of computer hardware or operating systems. What made BASIC particularly useful for education was the small size of programs. Useful programs to illustrate a concept could be written in a dozen lines. At the same time BASIC did not require mathematical or computer science sophistication.[1] BASIC continues to this day to be a language which is frequently self-taught with excellent tutorials and implementations. See List of BASIC dialects by platform for a complete list. BASIC offers a learning path from learning oriented BASICs such as Microsoft Small Basic, BASIC-256 and SiMPLE, to more full featured BASICs like Visual Basic .NET and Gambas.

C

Java-based

Sun's recommended path is Greenfoot to BlueJ to Netbeans/BlueJ to Netbeans/Java.[3]

Lisp-based

Lisp is the second oldest family of computer languages in use today, and as such has a host of dialects and implementations at a wide range of difficulties. Lisp was originally created as a practical mathematical notation for computer programs, based on lambda calculus, which makes it particularly well suited for teaching theories of computation. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, object-oriented programming, and the self-hosting compiler all of which are useful for learning computer science.

The name LISP derives from "LISt Processing language". Linked lists are one of Lisp languages' major data structures, and Lisp source code is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or even new domain-specific languages embedded in Lisp. So Lisps are useful for learning language design, and creating custom languages.

A reasonable learning path would be Logo followed by any educational variant such as Scheme or newLISP, followed by a professional variant such as Common LISP.

The publication of Abelson and Sussman’s Structure and Interpretation of Computer Programs (sicp) (Abelson et al., 1985) revolutionized the landscape of the introductory computing curriculum in the 1980s. Most importantly, the book liberated the introductory course from the tyranny of syntax. Instead of arranging a course around the syntax of a currently fashionable programming language, sicp focused the first course on the study of important ideas in computing: functional abstraction, data abstraction, streams, data-directed programming, implementation of message-passing objects, interpreters, compilers, and register machines.

Over a short period, many universities in the US and around the world switched their first course to sicp and Scheme. The book became a major bestseller for MIT Press. Along with sicp, the Scheme programming language became widely used. It was no longer the subject of a few individual courses at Indiana University, MIT, and Yale, but the language of choice in introductory courses all over the world.[9]

Since then the Scheme community has introduced several pedagogic programming environments for more modern approaches. Of particular note is the Racket outreach effort with its DrRacket environment, freely available text How to Design Programs and ProgramByDesign educator training.[10]

Scala-based

Smalltalk-based

As part of the One Laptop per Child project, a sequence of Smalltalk-based languages has been developed, each designed to act as an introduction to the next. The structure is Scratch to Etoys to Squeak to any Smalltalk.[13] Each provides graphical environments which may be used to teach not only programming concepts to kids, but also physics and mathematics simulations, story-telling exercises, etc., through the use of constructive learning. Smalltalk and Squeak are fully featured application development languages that have been around and well respected for decades; Scratch is a children's learning tool.

Other

Children

Historical

University

Languages by age and experience

The following chart helps to summarize the information above for parents and teachers.

US educational level Approximate Age Experience level Appropriate languages
Preschool – grade 2 3–7 None, not applicable Logo, Guido van Robot, Karel, ScratchJr, Scratch, Kodu, Stagecast Creator, Lightbot, Kodable
Grades 2–4 7–9 None, not applicable AgentSheets, Logo, Kodu, RoboMind, Scratch or Etoys, Stagecast Creator, Lightbot, Kodable
Grades 5–8 10–14 None or little AgentSheets, Alice, Kodu, Lego Mindstorm, Etoys, Microsoft Small Basic, RoboMind, Gambas, BASIC, Phrogram, Stagecast Creator, Mama, Lightbot, Kodable
Grades 5–8 10–14 Some AgentSheets, Squeak, Microsoft Small Basic, RoboMind, full featured BASIC, Greenfoot, Pascal, Mama, Python, Ruby
High school 14–17 None or little AgentSheets, Squeak, Microsoft Small Basic, RoboMind, full featured BASIC, Greenfoot, Pascal, Mama, Python, Ruby, Visual Basic
High school 14–17 Some AgentSheets, Squeak, RoboMind, Greenfoot or BlueJ, Mama, newLISP, OZ, Python, most other programming languages
College 18+ None assumed, non-majors course Squeak, Greenfoot or BlueJ, newLISP, Python, Visual Basic, full featured BASIC
College 18+ Starting computer science or developer curriculum Haskell, OZ, Scheme, Squeak, NetBeans BlueJ, Python

See also

External links

References

  1. Brin, David (Sep 14, 2006). "Why Johnny can't code". Salon Magazine. Retrieved 4/12/09. Check date values in: |access-date= (help)
  2. Microsoft corporation 2009 Getting Started Guide for Small Basic, p. 64.
  3. 1 2 Nourie, Dana (July 2008). "Young Developer Learning Path". Sun Microsystems. Retrieved April 3, 2009.
  4. "What is BlueJ?". BlueJ official site. Retrieved April 3, 2009.
  5. 1 2 Papert, Seymour (October 1980). Tokyo, Japan and Melbourne, Australia: 8th World Computer Congress: IFIP Congress. Missing or empty |title= (help); |contribution= ignored (help)
  6. Volume 1: Symbolic Computing Volume 2: Advanced Techniques Volume 3: Beyond Programming
  7. 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
  8. "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
  9. Felleisen, Matthias; Findler, Robert Bruce; Flatt,, Matthew; Krishnamurthi, Shriram (2004). "The Structure and Interpretation of the Computer Science Curriculum" (PDF). Journal of Functional Programming 14: 365–378. doi:10.1017/S0956796804005076.
  10. More information on the PLT group results is at Northeastern PLT: Publications.
  11. "About kogics Kojo". Retrieved 02-12-2011. Check date values in: |access-date= (help)
  12. "About Spde". Retrieved 02-12-2011. Check date values in: |access-date= (help)
  13. Cavallo, David (May 28, 2007). "Learning Squeak from Scratch". One Laptop Per Child News. Retrieved 4-3-09. Check date values in: |access-date= (help)
  14. Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Amon Millner, Jay Silver, Eric Rosenbaum, Karen Brennan, Amos Blanton. "Scratch: imagine, program, share". Massachusetts Institute of Technology. Retrieved 8 January 2013.
  15. 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.
  16. Kay, Alan. "The Early History of Smalltalk". Retrieved 2007-09-13.
  17. For further discussion of why this make it easy see Meta-circular evaluator
  18. 1 2 Carson, Erin (20 October 2014). "Kodable gets kids programming before they can read". TechRepublic.
  19. Satell, Greg (7/6/2014). "Do Our Kids Really Need to Learn How to Code?". Opinion (Forbes). Forbes. Retrieved 24 October 2014. Check date values in: |date= (help)
  20. 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.
  21. Curry report, Introduction. Most recent version available at
  22. M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, Vol. 19&20, pp. 583–628, 1994.
  23. Jones, Simon Peyton (2002). "Preface". The Haskell 98 report. Haskell 98 working group. Retrieved April 4, 2009.
  24. Wadler, Philip (1987). "Why calculating is better than scheming" (PDF). ACM SIGPLAN Notices: 83–94. doi:10.1145/24697.24706. ISSN 0362-1340.
  25. Bird, Richard (1998). Introduction to Functional Programming using Haskell (2nd Edition). Prentice Hall. p. 66. ISBN 0-13-484346-0.
  26. "About". Flowgorithm. Retrieved 2014-08-26.
  27. 1 2 Ballesteros, Francisco J; et al. (2015). "Picky: A New Introductory Programming Language" (PDF). Journal of Computational Science Education 6 (1): 16–24. ISSN 2153-4136.
  28. "Schools Using Python". Python.org.
  29. Programming Paradigms poster
This article is issued from Wikipedia - version of the Sunday, February 07, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.