Home » Resources

Computational Thinking, Programming…and the Google App Inventor

August 3, 2010
14 comments

MindStormsappinventorThe ‘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

what-is-logoIt’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 establishingintimate contact with some of the deepest ideas from science, from mathematics, and from the art of intellectual model building.”

Turtle geometry with Logo

Turtle geometry with Logo

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.

computational thinkingThere 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).

Workshop on the Nature and Scope of Computational ThinkingResearchers 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.

Bottom line, programming should be used as a means to introduce kids to ways of thinking and problem solving that will be useful to them in many different spheres of human endeavor. If in the process they get hooked to computer science and end up in careers involving programming, that would not be a very shabby outcome, either!

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.

Lego_MindStorms_NXT2.0softwareA 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.previewKTurtle (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_for_linuxLittle 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.

scratch1Scratch (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:

SqueakSqueak (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.

AliceSpashScreenAlice (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.

Text Editors

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 (Linux):
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.

Emacs (Linux):
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!

Shuchi Grover is an educational technologist with graduate degrees in computer science and education. An alumnus of Harvard University, she is currently pursuing a PhD at Stanford University. Her doctoral work focuses on computational thinking in K-12.


Charles Profitt is a systems administrator for a K-12 school district in Western NY and has worked in information technology since the 90s. He has experience with Windows, OS X and Linux both as desktops and servers. He is currently an Ubuntu Member and a Fedora Ambassador. He also serves as the lead contact for LUGOR (Linux User Group of Rochester) and is the leader of the NY State Ubuntu Local Community. Charles is passionate about making a difference in kids’ lives through technology, and specifically open source tools.
print

Tags

, , ,

Categories

Comments

  1. Andrej 

    Hi, great article with some very useful resources. We use some of these programs here at our primary school where we started teaching kids to program about 3 years ago as we believe that in these days of computers kids need to have some basic understanding of how computers are programmed. And as you say… it is about teaching them how to think and solve problems. We mostly use KTurtle here (oh any by the way it also runs on Windows – http://windows.kde.org/, as we still have some machines that we haven’t upgraded to Linux yet). And later we slowly transition to Greenfoot – http://www.greenfoot.org/

  2. Shuchi Grover 

    Thanks, Andrej! We’ve added the link to KTurtle for Windows (and thanked you for pointing us to it :-) ). We’d love for you to share your experiences with Greenfoot. Perhaps we could update this list include that as well.

  3. Computational Thinking: Programming for kids « Free Trader Beowulf 

    [...] If you would like to read the rest please go to the full article. [...]

  4. cprofitt 

    Thanks for the update on KTurtle. I am excited to hear that you are using the programs with your students. I like that you called it ‘upgrading’ to Linux too.

  5. Maxmad 

    You may add “pyJunior” from Jono Bacon:
    http://www.jonobacon.org/2010/04/08/making-programming-easier-for-kids-with-pyjunior/
    It looks promising.

  6. Shuchi Grover 

    I just came across another article on computational thinking – How Journalists Can Incorporate Computational Thinking into Their Work – http://www.poynter.org/column.asp?id=31&aid=187439. We weren’t kidding when we suggested the importance of CT in all careers, not just STEM :)

  7. gasstationwithoutpumps 

    I think that you shortchange Scratch here: it is a suitable first programming language through high school. There are good reasons why it was the model for Google App Inventor, which does look like a very nice environment also.

  8. Shuchi Grover 

    Let me start by saying that we at SmartBean are huge fans of Scratch, and it’s probably got more airtime on this site than any other of the programming environments for kids listed here (http://www.thesmartbean.com/search/?q=scratch). (I should add that I was personally involved in helping convert Scratch commands to Hindi for use in India way back in 2007 :) ). Its “low floor” makes it a great introduction to programming for young kids, and while I agree with your assessment that it could be used by high school students as well, you’d be hard pressed to find kids in high school who would not want to graduate very quickly to Java or C++ because of the computational flexibility that those languages offer. Scratch is limited by its inability to create functions and procedures (especially useful for recursive algorithms). This limitation has been taken care of by BYOB (an offshoot of Scratch out of Berkeley) which probably also deserves mention here.

  9. Jono Bacon recommends pyJunior « Free Trader Beowulf 

    [...] Bacon recommends pyJunior I posted about my co-authored article on Smartbean yesterday and a very influential mover and shaker commented, indirectly, on the [...]

  10. Karen North 

    I have been saying this for over a decade. It is a fighting battle to get educational decision makers to do something. Teachers want something different, they just have no time to develop much less teach this. What is needed is online small-step CS Modules K-5 that can be used in computing centers by the students. After-all, this is 21st century education, let the students drive their own learning. Scratch is great, but it must be teacher led to get students started. Same with all the other fabulous online software. We need professional training videos and lesson links similar to what are available with office and graphic products. These need to be free and in the cloud. If we can get the students started on computational thinking young, we just might save a generation and get beyond school reform. Looking for action plans!

  11. Tweets that mention Computational Thinking, Programming…and the Google App Inventor – SmartBean -- Topsy.com 

    [...] This post was mentioned on Twitter by Greg Linch, Andrew Nacin. Andrew Nacin said: RT @greglinch: "programming should be used to intro kids to ways of thinking & prob solving that will be useful" in different spheres http://bit.ly/aMsaS6 [...]

  12. Knowledgenetworks 

    Thanks for a very insightful post. The connection between logic and programming, and between logic and any other learning endeavor is abundantly clear. Unfortunately, in the Indian context at least, the emphasis is more on the rote method of instruction, with little leeway for creative exploration of tools and ideas. The changes being brought about in the Education system may, to some extent, change the direction of thought process. CCE is an attempt to do this. But it has its own pitfalls, as the first change is required in the teacher’s mindsets.

  13. Computer languages for kids « Gas station without pumps 

    [...] I have not seen all of them personally. Smartbean has posted a pretty good (though not complete) list with some information about the more popular teaching [...]

  14. Program or Be Programmed: Ten Commands for a Digital Age – SmartBean 

    [...] the last real choice you get to make.” Rushkoff’s latest work is an apt postscript to this SmartBean article that encourages children and parents to (at least) dabble in [...]

Leave a Comment

About Us | Contact Us | Customer Service | Help | RSS | Privacy Policy | Terms of Use