Greenfoot

Last updated

Greenfoot
Developer(s) Michael Kölling, Computing Education Group, King's College London
Stable release
3.8.2 / 1 December 2023;10 months ago (2023-12-01)
Repository none OOjs UI icon edit-ltr-progressive.svg
Operating system Cross-platform
Platform Java
Available in Multilingual
Type Integrated Development Environment
License GPL-2.0-or-later with the Classpath exception
Website www.greenfoot.org

Greenfoot is an integrated development environment using Java or Stride 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.

Contents

Greenfoot is being developed and maintained at King's College London, with support from Oracle. It is free software, released under the GPL license. Greenfoot is available for Windows, macOS, Linux, Solaris, and any recent JVM.

History

The Greenfoot project was initiated by Michael Kölling in 2003, and a first prototype was built by Poul Henriksen (master's student) and Michael Kölling (supervisor) in 2003/2004. [1] From 2005 development was continued involving the other members of the BlueJ Group.

Greenfoot is being developed and maintained at King's College London, [2] where the development team moved from the University of Kent.

The first full release, Greenfoot version 1.0, was published on 31 May 2006, with further releases following occasionally thereafter. [3]

In May 2007, the Greenfoot project was awarded the "Duke's Choice Award" in the category "Java Technology in Education", and in 2010 it won the "Premier Award for Excellence in Engineering Education Courseware".

In March 2009, Greenfoot project became free and open source software, and licensed under GPL-2.0-or-later with the Classpath exception.

In August 2009, a textbook [4] was published that teaches programming with Greenfoot.

In 2017, Greenfoot was extended to support a second programming language, Stride (in addition to Java). Stride is intended to make programming easier for novices, support younger users, and facilitate the transition from block-based languages. Its most notable difference is the use of a frame-based editor.

Use and programming model

publicvoidact(){setLocation(getX()+4,getY());// Moves the Actor 4 cells to the rightsetRotation(getRotation()+2);// Rotates the Actor 2 degrees clockwise}
An example of a simple act method in Greenfoot
Actora=getOneIntersectingObject(Asteroid.class);if(a!=null){// we have hit an asteroid!explode();}
An example of simple collision detection

The Greenfoot programming model consists of a World class (represented by a rectangular screen area) and any number of actor objects that are present in the world and can be programmed to act independently. The world and actors are represented by Java objects and defined by Java classes. Greenfoot offers methods to easily program these actors, including method for movement, rotation, changes of appearance, collision detection, etc.

Programming in Greenfoot at its most basic consists of subclassing two built-in classes, World and Actor. An instance of the world subclass represents the world in which Greenfoot execution will occur. Actor subclasses are objects that can exist and act in the world. An instance of the world subclass is automatically created by the environment.

Execution in Greenfoot consists of a built-in main loop that repeatedly invokes each actor's act method. Programming a scenario, therefore, consists mainly of implementing act methods for the scenario's actors. Implementation is done in standard Java. Greenfoot offers API methods for a range of common tasks, such as animation, sound, randomisation, and image manipulation. All standard Java libraries can be used as well, and sophisticated functionality can be achieved.

Design

Greenfoot aims to motivate learners quickly by providing easy access to animated graphics, sound and interaction. The environment is highly interactive and encourages exploration and experimentation. Pedagogically, the design is based on constructivist and apprenticeship approaches.

Secondly, the environment is designed to illustrate and emphasize important abstractions and concepts of object-oriented programming. Concepts such as the class/object relationship, methods, parameters, and object interaction are conveyed through visualizations and guided interactions. The goal is to build and support a mental model that correctly represents modern object-oriented programming systems.

Learner community

For users of Greenfoot, a community site called the Greenfoot Gallery [5] provides a platform to publish and discuss their projects. Anyone can set up an account on the Greenfoot Gallery and publish their work. When published, scenarios run live in a web browser, and are instantly playable by anyone worldwide. The ability to easily publish programming projects to the internet is seen as a significant motivator for young learners.

Educator community

For educators, the project provides the Greenroom, [6] a community site to discuss teaching strategies, exchange experiences and share material. In addition to a discussion forum, the Greenroom provides a shared repository of teaching resources, including numerous worksheets, project ideas, slide sets and other teaching aids.

Releases

In version 2.0, the editor and API received some major changes from the previous version 1.5.6. The editor added support for code completion, coloured scope highlighting, improved find and replace, and a new navigation view. [7] A built-in sound recorder was added, as well as better support for sound in scenarios through a new high level sound class called GreenfootSound . It adds the ability to pause and loop sounds, as well as adding MP3 support. Version 3.0 added support for the Stride language, [8] and included a novel frame-based editor. [9]

See also

Related Research Articles

In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space, which is written as if it were a normal (local) procedure call, without the programmer explicitly writing the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client–server interaction, typically implemented via a request–response message passing system. In the object-oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually, they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important.

In software engineering and computer science, abstraction is the process of generalizing concrete details, such as attributes, away from the study of objects and systems to focus attention on details of greater importance. Abstraction is a fundamental concept in computer science and software engineering, especially within the object-oriented programming paradigm. Examples of this include:

<span class="mw-page-title-main">Ole-Johan Dahl</span> Norwegian computer scientist

Ole-Johan Dahl was a Norwegian computer scientist. Dahl was a professor of computer science at the University of Oslo and is considered to be one of the fathers of Simula and object-oriented programming along with Kristen Nygaard.

A programming paradigm is a relatively high-level way to conceptualize and structure the implementation of a computer program. A programming language can be classified as supporting one or more paradigms.

An object-oriented operating system is an operating system that is designed, structured, and operated using object-oriented programming principles.

In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard way to build and deploy applications and is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate the development of software applications, products and solutions.

<span class="mw-page-title-main">BlueJ</span> IDE for Java Programming Language

BlueJ is an integrated development environment (IDE) for the Java programming language, developed mainly for educational purposes, but also suitable for small-scale software development. It runs with the help of Java Development Kit (JDK).

In computer science, message passing is a technique for invoking behavior on a computer. The invoking program sends a message to a process and relies on that process and its supporting infrastructure to then select and run some appropriate code. Message passing differs from conventional programming where a process, subroutine, or function is directly invoked by name. Message passing is key to some models of concurrency and object-oriented programming.

In object-oriented programming, inheritance is the mechanism of basing an object or class upon another object or class, retaining similar implementation. Also defined as deriving new classes from existing ones such as super class or base class and then forming them into a hierarchy of classes. In most class-based object-oriented languages like C++, an object created through inheritance, a "child object", acquires all the properties and behaviors of the "parent object", with the exception of: constructors, destructors, overloaded operators and friend functions of the base class. Inheritance allows programmers to create classes that are built upon existing classes, to specify a new implementation while maintaining the same behaviors, to reuse code and to independently extend original software via public classes and interfaces. The relationships of objects or classes through inheritance give rise to a directed acyclic graph.

<span class="mw-page-title-main">Michael Kölling</span> German computer scientist

Michael Kölling is a German computer scientist, currently working at King's College London, best known for the development of the BlueJ and Greenfoot educational development environments and as author of introductory programming textbooks. In 2013 he received the SIGCSE Award for Outstanding Contribution to Computer Science Education for the development of the BlueJ.

<span class="mw-page-title-main">Mark Guzdial</span>

Mark Joseph Guzdial is a Professor in the College of Engineering at the University of Michigan. He was formerly a professor in the School of Interactive Computing at the Georgia Institute of Technology affiliated with the College of Computing and the GVU Center. He has conducted research in the fields of computer science education and the learning sciences and internationally in the field of Information Technology. From 2001–2003, he was selected to be an ACM Distinguished Lecturer, and in 2007 he was appointed Vice-Chair of the ACM Education Board Council. He was the original developer of the CoWeb, one of the earliest wiki engines, which was implemented in Squeak and has been in use at institutions of higher education since 1998. He is the inventor of the Media Computation approach to learning introductory computing, which uses contextualized computing education to attract and retain students.

Sophia Drossopoulou is a computer scientist, currently working at Imperial College London, where she is Professor in Programming Languages. She earned her Ph.D. from the Karlsruhe Institute of Technology.

In object-oriented programming, behavioral subtyping is the principle that subclasses should satisfy the expectations of clients accessing subclass objects through references of superclass type, not just as regards syntactic safety but also as regards behavioral correctness. Specifically, properties that clients can prove using the specification of an object's presumed type should hold even though the object is actually a member of a subtype of that type.

<span class="mw-page-title-main">Object-oriented programming</span> Programming paradigm based on the concept of objects

Object-oriented programming (OOP) is a programming paradigm based on the concept of objects, which can contain data and code: data in the form of fields, and code in the form of procedures. In OOP, computer programs are designed by making them out of objects that interact with one another.

Agent-oriented programming (AOP) is a programming paradigm where the construction of the software is centered on the concept of software agents. In contrast to object-oriented programming which has objects at its core, AOP has externally specified agents at its core. They can be thought of as abstractions of objects. Exchanged messages are interpreted by receiving "agents", in a way specific to its class of agents.

An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.

John Rosenberg is an Australian higher education consultant, professional Board Director, Australian academic, information technology (IT) professional and the former Senior Deputy Vice-Chancellor and Vice-President at La Trobe University in Victoria, Australia.

<span class="mw-page-title-main">Frame-based editor</span>

A frame-based editor is a specific kind of structure editor, typically used as a source code editor for the manipulation of computer programs. Program elements are represented by frames, which form the standard atomic unit of manipulation in the editor.

In type theory, session types are used to ensure correctness in concurrent programs. They guarantee that messages sent and received between concurrent programs are in the expected order and of the expected type. Session type systems have been adapted for both channel and actor systems.

<span class="mw-page-title-main">Michael E. Caspersen</span> Danish computer scientist

Danish computer scientist Michael Edelgaard Caspersen has spent his academic life furthering computer science education, at all levels. His research interests are computing education, programming didactics, programming methodology, and object-oriented programming. He is best known for his work on computing education research and development, particularly his work to promote informatics as a fundamental discipline for all.

References

  1. "P. Henriksen Masters thesis: A Direct Interaction Tool for Object-Oriented Programming Education". Archived from the original on 14 February 2007. Retrieved 15 April 2007.
  2. Greenfoot contributors
  3. Version history Archived 2 April 2007 at the Wayback Machine
  4. Textbook: Introduction to Programming with Greenfoot
  5. Greenfoot Gallery
  6. Greenroom
  7. "Greenfoot 2.0 – The new features – mik's blog". Blogs.kent.ac.uk. 13 October 2010. Archived from the original on 12 October 2011. Retrieved 5 July 2013.
  8. "Stride – An introduction". blogs.kcl.ac.uk. 28 October 2016. Retrieved 22 August 2017.
  9. "Frame-Based Editing". blogs.kcl.ac.uk. 26 June 2017. Retrieved 22 August 2017.

Bibliography