Create+a+computer+program+(simple)


 * Programming Environments for beginners**

At least two environments allow you to write short programs without having to install any programming tool. They do require a login but any pseudonym can be used. They also allow for the easy remix of material. As a teacher, you can provide a template program that the learners have for task to expand


 * [|jsdo.it] and jsfiddle.net for javascript - includes jQuery, processingjs, raphael
 * wonderfl.net for actionscript - runs on the desktop, allows export to android mobiles.
 * [|google code playground] - ideal for complete beginners. No login required. Change existing code, see consequences immediately. Try, in particular Javascript, Libraries > jQuery, Visualization, and Maps.
 * [|Cloud based IDE] (no install required)

IDE for beginners / Multimedia apps development
 * Scratch - http://scratch.mit.edu/ (primary)
 * Processing - http://processing.org/ (secondary, adult)
 * AppInventor - http://appinventor.googlelabs.com/about/ - Simlar to Scratch but to develop real applications. Only that they run strictly on android mobile devices.
 * AdobeRome - http://rome.adobe.com/ - web based app. For the design of multimedia apps. Development stopped but it remains a free application.
 * Microsoft Visual Studio Express - http://www.microsoft.com/express/ - Free but Microsoft only.

Online lessons
Code academy - http://www.codecademy.com/learn has tracks for learning javascript or python. Code School - http://www.codeschool.com/.focuses on javascript, ruby and rails. Khan academy recently added computer science lessons: http://www.khanacademy.org/cs. Mostly javascript but some about python as well: http://www.khanacademy.org/science/computer-science/v/python-lists. The ruby community has http://hackety.com/ to teach the absolute basics of programming from the ground up. Treehouse - http://teamtreehouse.com/?cid=199

Javascript, jQuery
Pros: Javascript is ranked amongst the 20 most popular computer languages in the world, according to the [|TIOBE index] of January 2011. It is in high demand in NZ. I can be used to program on desktop as well as mobile devices.

Cons: It is a client side language. It runs within the browser. For security reasons. It has very limited means of interaction with the computer in which the browser runs. It cannot directly access the file system or attached devices like camera.


 * [|JavaScript in one page]
 * [|javascript reference sheet] (alongside other embeddable languages)
 * [|javascript cheat sheet]
 * [|javascript reference], by visibone
 * Useful sites to learn javascript easily

The easiest way to get anything done in javascript is with the jQuery library.


 * [|jQuery for absolute beginners video series]
 * [|jQuery for Complete Beginners]
 * [|jquery cheat sheet]

Devices / Bridges
Javascript can be used to develop mobile applications for pretty much any device, iPhone, iPad, Android. The best solution for this is [|phonegap]. Some technical skills are required to get the dependencies (mobile SDK) set up properly. Once in place, easy to use.

Ruby
Pros: in the top 10 of most popular computer languages in the world, according to the [|TIOBE index] of January 2011. Tier 1 of [|community size ranking]. It is in growing demand in NZ.

Cons: It is a server-side language. It requires access to a server. This can be arranged outside of any internet connection via [|MAMP] on Macs, [|WAMP] on Windows or [|Xampp] for these platforms and Linux. Some knowledge of html/javascript is needed for the design of the visual interface.

Tutorials References / Cheatsheets
 * [|Ruby4kids]
 * [|Beginning|Programming with the Ruby Programming Language]
 * TeachingKids RailsBridge - Encouraging kids to create computer applications by providing support and curricula
 * [|Hackety] - aim to teach the absolute basics of programming from the ground up, with no previous programming experience needed.
 * [|Ruby reference sheet] (alongside other scripting languages).
 * [|Ruby Quick Reference]
 * [|Ruby Cheat Sheet]

Devices / Bridges

 * [|Rhodes] let you deploy Ruby code onto mobile devices.

Lua
Pros: Lua is #21 in the [|TIOBE index] of January 2011. One of the fastest growing language after jQuery as per this graph of [|growth in demand over 4 years]. Very lightweight and minimal install. All you need to build Lua is an ANSI C compiler (gcc is a popular one). This however requires some familiarity with the command line environment.

Cons: Tends to be used mostly in some specialist communities. In some demand, in specialized fields like game programming. Used as a scripting language in many multi-player game environments, like for instance, [|world of warcraft]. Extras installs are required to provide GUI components, like for instance, [|Murgalua].


 * [|Lua for beginners]
 * [|Lua Reference Sheet] (with a useful comparison to Javascript)
 * [|ref sheet]

Devices / Bridges

 * [|Corona] can be used to create iOS apps with Lua
 * Lua in fact compiles to C, which pretty much provides universal access. It can be used to write [|Android apps]

Processing
Pros: simplified Java. Knowledge can be transfered to more complex OO languages.

Cons: Used mostly in specialist communities, mostly art / exhibitions (generative art). Not much used in the industry.


 * [|Processing]
 * [|OpenProcessing], a community portal with sample code

Rebol
Pros: Very lightweight language, quite simple to learn, yet powerful enough. Cross platform. Comes with a GUI environment.

Cons: Not much used in the industry


 * [|Rebol]

**Visual Basic**

Pros: #7 in [|Tiobe Index] of January 2001 but Tier 3 of [|community size ranking]. Simple language. Allows for GUI programming. Can be used to write macros within MS Office applications. The free to use Visual Studio Express can be used as IDE.

Cons: Microsoft only. Expected to progressively fall out of popularity as Microsoft introduced C# as primary language for its .NET framework. That's one of the only modern languages to show a downward trend in [|job demands over the last 4 years (US data)].


 * [|Visual Basic .NET 2010 Express - A "From the Ground Up" Tutorial]

Perl
Not covered. Great history. Many libraries. But too often illegible. As scripting languages, Python is far more legible and as powerful. Ruby or Processing are better alternatives to teach programming to complete beginners.


 * [|Perl reference sheet] (alongside other scripting languages like Python and Ruby)

**Web Resources**

Education theory
 * Lowering the Barriers to Programming: a survey of programming environments and languages for novice programmers, started to date (2003) but co-written by no other than Randy Rausch (CMU, behind Alice).

Tutorials
 * [|Google Code University], Tutorials and Introductions
 * [|Showmedo.com] screencasts showing how to do things in different programming languages.

Scripting

 * [|Scripting: Higher Level Programming for the 21st Century], by John K. Ousterhout

Job Trends

 * [|relative in job trends (US) for different languages over the last 4 years]
 * [|What Programming Language to Learn (Next)]

Cheat Sheets

 * [|Best Cheat Sheets for Web Developers]
 * [|Cheat Sheet Roundup - Over 30 Cheatsheets for developers]
 * [|Cheat-Sheets.org], cheat sheets, round-ups, quick reference cards, quick reference guides and quick reference sheets in one page