Computational Thinking, Programming…and the Google App Inventor
The ‘About’ section of Google’s App Inventor site acknowledges the work of mathematician and educator, Seymour Papert – “The educational perspective that motivates App Inventor holds that programming can be a vehicle for engaging powerful ideas through active learning. As such, it is part of an ongoing movement in computers and education that began with the work of Seymour Papert and the MIT Logo Group in the 1960s.”
The mainstreaming of Papert’s vision may end up being one of Google’s most enduring legacies to K-12 education. So what were Papert’s views on children, computers and “powerful ideas”? Are they relevant today? Why should we introduce our kids to programming and how? SmartBean’s Shuchi Grover provides answers to all this and more. Guest author Charles Profitt provides a comprehensive list of open source programming environments to introduce children of various ages to programming and computational thinking.
Seymour Papert and Logo
It’s been over a quarter of a century since ‘Mindstorms’ – MIT professor Seymour Papert’s seminal book on kids and computers- took the education world by storm. The book was less about teaching with/about/from computers (which sadly constitute the topical tensions of technology integration in schools) as it was about allowing kids to be creative through computers. 26 years on, and we rarely see kids in schools using computers in the constructionist way Papert envisioned – children programming computers and acquiring “a sense of mastery over a piece of the most modern and powerful technology” and through this endeavor establishing “intimate contact with some of the deepest ideas from science, from mathematics, and from the art of intellectual model building.”
Papert’s research led to the creation of the Logo programming language, which was designed to be powerful enough for research yet simple enough that it could be used by children. It is still a great tool to introduce kids to several ideas of programming, although Scratch – a more recent product from MIT Media Lab’s stables may be considered easier on kids with its iconic, visual interface where blocks of instructions snap together like colorful LEGO bricks.
‘Computational Thinking’ and STEM to provide the fillip?
Sadly, the term “Mindstorms” and Papert’s legacy seem to be limited largely to the popular Lego Mindstorms Robotics kits (that got their name as a result of a research partnership between Lego and MIT Media Lab) and after-school robotics activities. The vast majority of schools have dared not stray into the realm of “geeks” (the popular (mis)perception of people who can program) – in the belief that such activity is beyond the reach of kids – and teachers. They could not be more wrong. Fortunately though, there are many who have not given up on the powerful idea that through technology children can create personally meaningful projects – and learn to problem solve, test, and create. The recent push for nurturing creativity and problem solving skills as essential 21st century skills provides weight to the rationale for exposing kids to the art – and joy – of programming. Kids as “creators” not “consumers” is the mantra of progressive pedagogues that we’d like to use to inspire our readers as well.
There is also strong interest amongst the national bodies of science, education and research in introducing kids to ideas of computational thinking (CT) as a basic skill alongside reading, writing and arithmetic in the K-12 years. The need for this is fueled by the belief that computational thinking builds the analytical ability necessary for children to excel not only in STEM (Science, Technology, Engineering and Math) subjects, but in many other professional endeavors and also day-to-day life itself. (See articles such as this and this that have appeared in mainstream media in recent months). (The image on the left links to a ground-breaking article by Jeannette Wing of CMU on the importance of computational thinking in everyday life).
Researchers and educators who are backing the drive for computational thinking believe that while computational thinking is about much more than ‘just programming’, many curricula that foster this skill – such as modeling & simulations, robotics, and game design – include programming as an integral part. (See this earlier SmartBean article by Shuchi Grover which deals with this topic and discusses simple ideas for building computational thinking skills in children).
The recent buzz among educators around the Google App Inventor is no coincidence. As this New York Times article suggests, it is part of Google’s serious intent to get children (and other non-programming folk) to dabble in programming. This article calls the App Inventor a “slick tool for schools” that will help in teaching kids algorithmic thinking and programming.
Introducing Kids to Programming
No doubt a parent who has never programmed before may find this whole idea a bit daunting, but we assure you – the barrier, if any, will be a mental – not a technological – one, as most programming environments for kids are friendly and easy to use even by children as young as 8 or 9. So parents, dabble right along with your kids
In the following sections, we will share with you a list of some good open source and/or free programming environments to introduce kids to the idea of programming.
A brief word about Lego Mindstorms. These kits include programmable bricks and involve programming in the block programming environment that comes bundled with the kit. While these could provide an authentic context for a child to learn to program, the depth of programming is limited to the programmable actions controlled by the brick. Furthermore, the programming blocks in the software encapsulate a lot of the functionality and thus hide a lot of the computational ideas involved in programming, which is good for newbies, but not so great for kids who are capable of or interested in more flexibility and complexity in their programming projects.
There are several good programming environments that run on Windows, Mac and Linux machines. Which one you choose would depend on the level of depth that is desired and the child’s age. Needless to say, an open source environment such as Linux provides many more opportunities for the serious programmer, so consider providing your child with a Linux machine (even if it just means partitioning an existing Windows or Mac machine), if they wish to go deep. (Check out Charles Profitt’s popular SmartBean article titled Introducing your Child to Linux for more on Linux environments for kids.)
(Click on the titles or accompanying images to download.)
Lower elementary school:
KTurtle (Linux, Windows)
If you are using KDE you can use KTurtle (the graphical environment on most Linux machines) to teach kids the basics of math, geometry and programming. The program is based loosely on Logo in that it tries to translate the programming language to the native language of the programmer. KTurtle for Windows can be downloaded here (Thanks, Andrej!).
Little Wizard (Windows, Linux)
Little Wizards is a program that was specifically created with primary school children in mind. It focuses on teaching kids the basic elements of all programming languages, including: variables, expressions, conditions, logical blocks and loops. All of these elements is represented by an icon which allows the building of a program to be done using only a mouse.
Scratch (Linux, Windows, Mac OS X)
Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art — and share your creations on the web. As young people create and share Scratch projects, they learn important mathematical and computational ideas, while also learning to think creatively, reason systematically, and work collaboratively. Older children in upper elementary and middle school as well may use Scratch for more advanced projects with more complex plots.
Google’s App Inventor programming environment borrows heavily from Scratch and other block programming environments for children.
4th/5th Grade and Middle School:
Squeak (Linux, Windows, OS X)
Squeak is a modern, open source, full-featured implementation of the powerful Smalltalk programming language and environment. Squeak is highly portable – even its virtual machine is written entirely in Smalltalk making it easy to debug, analyze, and change. Squeak is the vehicle for a wide range of projects from multimedia applications, educational platforms to commercial web application development. They have great examples at http://www.squeakland.org/ which include e-toys.
Alice (Window, Mac OS X)
Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating programming experience.
Middle and High School (and above):
Once students reach sixth grade they can use ‘adult’ programming environments and the challenge will come from the complexity of their programming projects and the computational and algorithmic concepts they involve. Popular programming languages to graduate to are – Java, C++ and Python. Open Source programming environments such as Ubuntu (Linux) excel in providing unlimited access to the operating system and complex concepts of Computer Science. Development in Linux requires little more than a text editor or a complete IDE (Integrated Development Environment).
For a student just learning to program using an IDE can seem like a good thing, but many people will argue that it distracts from learning the language and focuses efforts on learning the idiosyncrasies of the particular IDE. While many mature programmers learn to program using a simple text editor, most eventually end up using an IDE for building applications. IDEs include a set of tools that aid application development. Most IDEs have features that allow programmers to:
- Write and edit source code
- See errors as you type
- See highlighted code syntax
- Automate repetitive tasks
- Compile code
- Debug Code
- Use drag-and-drop utilities for easy building of features, such as graphic objects or creating database connections
Deciding to go with or without an IDE depends on how comfortable your child is with the idea of programming. The IDE scaffolds the nitty gritty details of syntax checking, and compiling and building the code before running. Every programmer needs to be exposed to these steps and ideas sooner or later.
Open Source IDEs (Integrated Development Environments)
Here is a short list of Open Source IDEs:
- KDevelop (Linux, Solaris) – integrated development environment for KDE
- Eclipse (Linux, OS X, Windows) – C and C++ development
- NetBeans (Linux, OS X, Solaris, Windows) – Integrated Development Environment for Java, C/C++, Ruby, UML, etc.
- Lazarus (Linux) – a free RAD tool for Free Pascal
- VDKBuilder (Linux) – VDK Builder is a clone of C++ Builder
- Anjuta IDE (Linux) – This IDE is for C/C++ and GNOME/Gtk+ applications
- MonoDevelop (Linux, Windows) – a GNOME IDE primarily designed for C# and other CLI (.NET) languages
- Geany (Linux, Windows) – a small and lightweight integrated development environment
As you can see from the list, one advantage open source has is a large selection of options that you can try without having to spend hundreds of dollars.
There are several free text editors for programmers. TextWrangler and Dashcode for the Mac and Notepad++ for Windows are some popular text editors.
In open source world there are two camps. The mighty tribe of Emacs and the powerful tribe of Vim. For those of us not in one tribe or the other it is best to not enter in to the discussion. The best way to explain this is imagine Emacs as being the NY Yankees and Vim as the Boston Redsox; fans of one ‘team’ will never agree with fans of the other ‘team’. Both Vim and Emacs are tremendous text editors. Here is what they claim to be:
Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.
Vim is often called a “programmer’s editor,” and so useful for programming that many consider it an entire IDE. It’s not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files.
GNU Emacs is an extensible, customizable text editor and more. At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing.
Both of these editors are very full featured and can take a lot to learn. There are books dedicated to each. They both fit the example of how the editor can distract from learning the language. If you are just beginning I would suggest using a more simple tool, but I wanted readers to be aware of the powerful tools available in the FOSS world.
Linux also comes with two GUI editors, gedit (Gnome) or kedit (KDE), which are both capable text editors that have the ability to handle writing code.
So, what are you waiting for? START YOUR JOURNEY INTO PROGRAMMING TODAY!