What programming language should I use/learn?

I get asked often, "Which programming language should I start with?" or "I teach _______ which language would be the best for my classroom?" My goal is not to promote one language but show you the benefits of each of the more popular choices out there and let you make your own decision. There really is no one "best" language, just the best language for what you are interested in doing.

As always I promote technology that:

  1. Enhances or encourages learning. Programming is one great way to implement Computational Thinking into your class.
  2. The software is free and open source.

Disclaimer: These are intended to be a summary. They are presented in no particular order.

Python

Free? FOSS (Free as in zero cost and open source)
Requires an installation? Yes but there are web based options like sage math notebook. Python comes preinstalled on Mac and Linux.
Strengths: 
  • The syntax is very high level so you and your students can take your ideas and very quickly turn them into code. 
  • Python is interpreted so as soon as you press enter or run the code you can see the results. 
  • It has a large number of modules and support for graphics (e.g. VPython), physics, math, language parsing and more.
  • Great for prototyping, web, data mining/processing, and almost anything!
Recommended Tutorials:
    Codingbat


Javascript

Free? FOSS
Requires an installation? No
Strengths:
  • Coupled with HTML5 and CSS allows you to add a lot of power and interactivity to your web pages and applications.
  • Gives you to access web APIs (directory of available APIs) and use other services.
FYI: Javascript fails silently (meaning if there is a bug, it just won't work the way you intended, there won't be an error message) so use lots of debugging techniques and logs to debug. This is far easier than it may sound and is useful to learn regardless of what language you are using.
Recommended Tutorial:


Processing

Free? FOSS
Requires an installation? Yes
Strengths:
  • Designed to be very easy to make something visual, beautiful and/or interactive.
  • With both Processing and Arduino, it provides an introduction to C++ that is less intimidating.
Recommended Tutorials:
    Examples in the Processing software (Select File and then Examples)


Arduino

Free? 
  • Hardware: No but Open Source (Sparkfun, Adafruit, and Radio Shack are trusted suppliers)
  • Software:  FOSS
Requires an installation? Yes
Strengths:
  • Works with off the shelf parts (e.g. motors, LEDs) to cheaply and easily build projects that sense, move, light up, etc.
  • Many "shields" are available to easily add functionality like Bluetooth, Wifi, audio, etc.
  • Hardware is relatively inexpensive (~$20-30)
  • Interfaces easily with Processing to add interactivity and data visualization.
Recommended Tutorials:
    Examples in the Arduino software (Select File and then Examples)
    Sparkfun Education

Subscribe and follow Phil for more on education and technology.