List of educational programming languages

An educational programming language is a programming language that is designed mostly as an instrument for learning, and less as a tool for writing programs to perform 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 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 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 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 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 Microsystems's recommended path is Greenfoot to BlueJ to Netbeans-BlueJ to Netbeans-Java.[3]

Lisp-based

Lisp is the second oldest family of programming languages in use today, and as such has many 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 computing. As one of the earliest 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 the languages' major data structures, and Lisp source code is made of lists. Thus, 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 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 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] The first unit of the Bootstrap Curriculum uses the Racket language.

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 education level Approximate age Experience level Appropriate languages
Preschool – grade 2 3–7 None, not applicable Logo, Guido van Robot, Karel, Scratch Jr, 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 Mindstorms, 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 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 (September 14, 2006). "Why Johnny can't code". Salon. Retrieved April 12, 2009.
  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). Redefining Childhood: The Computer Presence as an Experiment in Developmental Psychology. Tokyo, Japan and Melbourne, Australia: 8th World Computer Congress: IFIP Congress.
  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. http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf, 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 February 12, 2011.
  12. "About Spde". Retrieved February 12, 2011.
  13. Cavallo, David (May 28, 2007). "Learning Squeak from Scratch". One Laptop Per Child News. Retrieved April 3, 2009.
  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 January 8, 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 September 13, 2007.
  17. For further discussion of why this make it easy see Meta-circular evaluator
  18. Free Online Books
  19. Story Telling Alice
  20. SGP Systems
  21. Blockly
  22. CiMPLE Original Developers Weblog
  23. ThinkLabs
  24. Cubiverse
  25. Cubiverse Wiki
  26. Cubiverse API
  27. CodeMonkey
  28. Code Monster from Crunchzilla
  29. Laby
  30. Lightbot
  31. Lightbot Jr
  32. Looking Glass
  33. Turtle graphics module, based on TK
  34. Python Turtle Demo
  35. 1 2 Carson, Erin (20 October 2014). "Kodable gets kids programming before they can read". TechRepublic.
  36. Satell, Greg (July 6, 2014). "Do Our Kids Really Need to Learn How to Code?". Forbes. Retrieved October 24, 2014.
  37. Mama educational programming principles
  38. S2JS
  39. 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.
  40. Curry report, Introduction. Most recent version available at
  41. M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, Vol. 19&20, pp. 583–628, 1994.
  42. Jones, Simon Peyton (2002). "Preface". The Haskell 98 report. Haskell 98 working group. Retrieved April 4, 2009.
  43. Wadler, Philip (1987). "Why calculating is better than scheming" (PDF). ACM SIGPLAN Notices: 83–94. doi:10.1145/24697.24706. ISSN 0362-1340.
  44. Bird, Richard (1998). Introduction to Functional Programming using Haskell (2nd Edition). Prentice Hall. p. 66. ISBN 0-13-484346-0.
  45. "About". Flowgorithm. Retrieved August 26, 2014.
  46. 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.
  47. "Schools Using Python". Python.org.
  48. Programming Paradigms poster
This article is issued from Wikipedia - version of the 12/2/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.