12 Sites & Apps for Learning to Program

Richard Byrne - PracticalEdTech.com

For some of us of a certain age, Logo was our introduction to computers and programming 30+ years ago. Logo is still accessible today. Dr. Gary Stager has repeatedly said that it is still the best way to introduce students to programming. Most recently in this June 15th article (http://stager.tv/blog/?p=4056). Logo is the basis for many other sites and apps that teachers can use to help students learn to program. Here are twelve of the best options.  

When the conversation amongst educators turns to programming, Scratch (https://scratch.mit.edu/) is often the first resource that is mentioned. Scratch allows students to program animations, games, and videos through a visual interface. Students create their programs by dragging together blocks that represent movements and functions on their screens. The blocks snap together to help students see how the "if, then" logic of programming works. Watch the video at https://vimeo.com/65583694 to learn more about Scratch.

Scratch Jr. is based on the aforementioned online Scratch program. Scratch Jr for iPad (https://itunes.apple.com/us/app/scratchjr/id895485086) and for Android (https://play.google.com/store/apps/details?id=org.scratchjr.android) uses the same drag and drop programming principles used in Scratch. On Scratch Jr students can program multimedia stories and games. To program a story or game on Scratch Jr. students select background settings for each frame of the story. Then in each frame students select the actions that they want their characters to take. Students snap programming pieces together to make characters move and talk in their stories and games.

Snap! (http://byob.berkeley.edu/) is a drag-and-drop programming interface designed to help students learn to program. Snap! uses a visual interface that works in your browser on your laptop as well as on your iPad. To design a program in Snap! drag commands into a sequence in the scripts panel. The commands are represented by labeled jigsaw puzzle pieces that snap together to create a program. You can try to run your program at any time to see how it will be executed. After previewing your program you can go back and add or delete pieces as you see fit. Snap! may remind some people of Scratch. That is because the Snap! developers call their program "an extended re-implementation of Scratch." The potential benefit of Snap! over Scratch is that teachers who have a mix of iPads, Android tablets, and laptops in their classrooms can have all of their students use the same programming interface.

The MIT App Inventor (http://appinventor.mit.edu/explore/) allows students to create and publish their own Android applications. The MIT App Inventor works in your web browser (Chrome is recommended). The only download that is required for App Inventor 2 is the optional emulator. The emulator allows people who don't have Android devices to text their apps on their desktops. If you have an Android device then the emulator is not required and you don't need to worry about installing it. MIT provides excellent support documentation and curriculum for classroom use for new users of App Inventor.

Google Blockly's (https://developers.google.com/blockly/) interface will remind you of the MIT App Inventor and Scratch. Google Blockly, like Scratch and the MIT App Inventor, uses jigsaw pieces containing commands that you can snap together to create an application. The blocks can be dragged, dropped, and rearranged as many times as you like. Google has five working demonstrations of Blockly that you can try right now. Google Blockly could be a good tool for students to use to play with logic commands in a relatively easy to understand environment. Blockly doesn't require any typing, just clicking, dragging, and dropping with a mouse or on a touch screen.

Crunchzilla (http://www.crunchzilla.com/) is a service that students can use to learn to write Javascript programs. There are two versions of Crunchzilla; Code Maven and Code Monster. Code Monster is designed for students of middle school age. Code Monster (http://www.crunchzilla.com/code-monster) contains 58 short lessons that take students from the very basics of things like resizing and repositioning objects to complex creation of animations. Students can work through the lessons in sequence or jump directly to any of the lessons. Students receive instant feedback on each lesson because the code that they write and the results of the code are displayed side by side.

Code Maven (http://www.crunchzilla.com/code-maven) offers 59 lessons for students to work through at their own pace to learn programming fundamentals. After completing the Code Maven tutorials students are ready to move on to Game Maven where they can work through 37 lessons in which they will create three simple online games.

TouchDevelop (https://www.touchdevelop.com/) is a great platform through which students can learn to program simple animations and games. On TouchDevelop students program a series of actions by entering sequences of commands such as "move forward" and "turn right" that are carried out on the screen by a chosen figure such as a turtle. In addition to the directions commands, students program the distances covered on screen, the colors, the animations, and the images to appear on screen. All commands have to be entered into correct sequences of "if, then" logic in order for everything to display as intended. TouchDevelop works on most modern web browsers including Chrome for iPad. Students completed programs can be saved online and or exported for use as Windows apps or HTML5 applications.

CodeMonkey (https://www.playcodemonkey.com/) is a fun game through which students learn some basic programming skills. In the game students have to help a monkey get his bananas. The game presents students with a series of thirty progressively more difficult challenges in which they have to help a monkey reach his bananas. Students help the monkey get his bananas by correctly programming the movements of the monkey. CodeMonkey provides little tutorials for to help students through the challenges.

Thunkable (https://thunkable.com) is a free platform for designing, testing, and publishing your own Android apps (support for iOS apps is coming soon). Through Thunkable you can create your apps even if you don't know how to write code. That is possible because Thunkable uses a drag-and-drop design framework. That framework, based on the MIT App Inventor, shows you jigsaw-like pieces that have commands labeled on them. Your job is to put the pieces together to make your apps work. Thunkable offers detailed written tutorials and video tutorials.

Daisy the Dinosaur (https://itunes.apple.com/us/app/daisy-the-dinosaur/id490514278?mt=8) is a free iPad app designed to introduce young students to  some programming basics. The app asks students to create commands for Daisy the Dinosaur to carry out. There is a free play mode in which students can make Daisy do whatever they want. But to get started you might want to have students work through the beginner challenges mode. Daisy the Dinosaur asks students to enter commands in the correct sequence in order to make Daisy complete tasks correctly. Daisy the Dinosaur could be used with students as young as Kindergarten age.

Hopscotch (https://itunes.apple.com/us/app/hopscotch-make-games!-learn/id617098629) is a free iOS app that introduces students to programming logic. The app originally launched as an iPad-only app. Last week the developers released an iPhone-friendly version of the free app. In Hopscotch students put command boxes into order to make cartoon avatars move and draw lines. Students can program one or all of the cartoon avatars to move and follow commands based on touch or on the movement of their iPads.