Hour of Code and Adventures in Programming, Music & Robotics

The defibrillators are warming up to put another jolt into Hour of Code this week during Computer Science Education Week (Dec 7-13). If you’re not aware of the event, the official definition is ‘a one-hour introduction to computer science, designed to demystify code and show that anybody can learn the basics.’ It’s a fantastic global grassroots movement that essentially happens year-round; however, you’ll see a ramp up of publicity, events and it’s presence in various apps over the next week.
Code.org is the repository of actual tutorials you can get stuck into through just your browser, that includes web programming learning blocks in even the popular flavours of Minecraft, Star Wars and Frozen.

Game-oriented Intro to Programming Apps [geared towards K-12]:

There are a few great apps that run with this game-oriented approach of easing into coding. Many of them with free LITE Hour of Code versions or lessons:

 

Visual Programming Languages

Code is daunting to look at and can be a turn-off to the uninitiated (of any age) – like any foreign language really. Fortunately there are some very powerful yet quite  easy to pickup Visual programming languages that have been around since the 1960s. I’ll highlight 3 that are a great starting place and which are still in active use today.

Scratch

Scratch was developed by the MIT Media Lab and first released in 2003 for ages 8 and up. It is highly impressive, still actively developed, supported by many of the top computer companies and sports a thriving community of over 14 million freely available programming projects. Beyond the desktop, it can be found in LEGO Mindstorm and Arduino robotics applications besides their own native languages (more on these later).

Alice

Alice was developed in Germany at the Programming Systems Laboratory. It is another top language to introduce beginners into programming in a 3D environment and the concepts of event and object-oriented programming.

LOGO

LOGO is the godfather here having been developed in 1967 and remembered today mainly for it’s ‘turtle graphics’ or moving a turtle robot around the screen with a series of commands. For a comprehensive resource of everything LOGO check out the LOGO Foundation. A rather recent site, the LOGO Interpreter is a free web-based environment that interprets programming straight into standard web code of HTML, CSS, JavaScript without the need for any other software.

Deeper Dive: Leveling up to more powerful programming languages

Eventually this will all lead to learning a couple of the more common ‘grown-up’ programming languages such as Python, Javascript, C++, or Apple’s new kid on the block, Swift. These are generally easier-to-learn and pretty established essential starting places for developing programming skills.

Python is one of the oldest languages around and amazing still used on the web and other applications, it also has syntax that is not overly confusing to interpret. Javascript is more recent and grew out of the web and has now firmly established itself a pillar of standards-based web development along with HTML and CSS. It is also continually cropping up in other places as a robust multi-purpose language. Swift is barely a year old and for Mac/iOS app development only. However it is rapidly taking the crown from Objective C as the fastest growing in popularity programming language of all time. It has also just been open-sourced today by Apple and will be developed in plain view on GitHub which is a very exciting turn of the coin from Apple. Heck, even if you have no interest in learning to code in Swift, here is a unique opportunity to watch Apple developers crafting their stock in trade – hour by hour.

What an amazing era we are in where the fundamentals of almost any school of learning can be had for admission price of simply having access to a computing device and the internet. I realise there is still a significant barrier of entry beyond the first-world, but that is rapidly changing.

There are unlimited educational resources (of varied quality) for free & paid on the internet of course. I’d suggest starting with the official links above which will lead to many quality resources. There are too many that are ever-changing to begin listing here but there’s a nice collection by educators I discovered recently for Swift Education.
For an app-based approach you’ll find both dedicated language apps as well as most of the higher-caliber sources offering a portal to their entire e-learning course catalogs.

Single course apps (Free)

  • JavaScript Tutorial (iOS) – 17 lectures, 8+ hours

  • Learn Python Pro (iOS) – game-like social competitive learning

  • Learn JavaScript (IOS) – game-like social competitive learning

  • Lrn – Learn to code in HTML, CSS, Javascript, Ruby & Python (iOS) – this is geared towards learning web programming but includes the prevalent Javascript, Python used in some many other applications.

  • Major online learning portals (Free to Freemium)

    Special Events

    Robotic/Mini computer kits

    And when you’re ready to take this into the physical space, there’s been no better time to cheaply enter into the wonderful world of DIY computer and robotic projects. Venture out and pick up one of the many variants of these kits of awesome:

    • LEGO Mindstorm – the most kid-friendly introduction to robotics but even used at the university level. It’s a serious investment of $400-500 though for the most recent EV3 kits, but earlier versions can be found for cheaper online. You can program them with it’s own native visual programming language but can be extended with Scratch using a free helper library or check out this amazing open-source online programming environment Open Roberta Lab.
    • Arduino – a hacker’s paradise, you can do pretty much ANYTHING your imagination can conjure up with this super-affordable circuit board kit. It has it’s own native C-based language, Arduino, but you can use many other common languages such as C++, Python and JavaScript, not to mention all of the visual programming languages detailed above.
    • Raspberry Pi – the smallest cheapest computer with a complete Linux server OS on it. There is a fantastic and fervent online community around it and it highly adaptable like the Arduino. You can even combine the two boards for hybrid projects taking advantage of connectivity of Arduino with the compact computing of the Pi. Fusion-Ha!

    Coding for Visual Arts

    Any language can produce 2D or 3D visuals that can be displayed on a screen or projected or transmitted through external sources. One in particular that is intentionally suited for this (and that I occasionally tutor in at the university level) is called Processing. It is Java-based and thus can be written and compiled on Mac/Windows/or several Linux variants, even iOS to a degree. However it the processing language is a simpler layer above that (about the same complexity as Python) that compiles into Java behind the scenes. The beauty of it for beginners is being able to write as little as a dozen lines of code that grants some immediate gratification in computer graphics. It doesn’t end there thought as it can be extended with hundreds of external libraries that open the doors to 3D animation, typography, music, data manipulation and visualisation, external device control and so on.

    Coding for Music

    This topic is close to my heart, so I’ll cover a few avenues where you can explore the intersection of music and code. There are 3 open-source music languages that have been around for awhile:

  • SuperCollider

  • PureData (Pd)

  • MobMuPlat (iOS) – is only a front-end for a Pd music app you write on your Mac and control it from MobMuPlat.
    I’d be really stoked if someone came out with an iOS environment for the object-oriented language SuperCollider, but there is:

  • CsoundPad (iPad) – a free Csound compiler.

  • textsound (iPad) | textsound lite (not Free) compiler for pD that hasn’t been updated in 3 years so I’d be cautious and be prepared to request a refund if it doesn’t operate as expected..

  • Modular Synthesis anyone?

    It could also be argued that modular synthesis has some strong programming logic flow to it. The following iOS apps are also reminiscent of the desktop power that Max and AudioMulch have:

  • audulus (iOS) – highly-anticipated shiny new 3.0 version coming out Dec 8. Previous version has been pulled until then.

  • Jasuto (iOS)

  • zMors Modular (iPad)


  • UPDATED 2015-12-07: added info on Swift and began a list of Special Events during Computer Science Education Week.

    UPDATED 2016-04-16: added Kids ‘n’ Code app and section on Visual Programming languages.

    Jason Shanks

    Jason is a Musician, UX Designer/Web Developer, Apple Consultant, Mac Genius in a past life and all around Apple Freak for 25+ years now. His first reaction to himself when conceiving of starting FWAP was, "ON,NAAB!" Which was later revealed to mean Oh No, Not Another Apple Blog!