Learning Programming

I am pretty much self taught. I've had some college-level classes, but most of my useful knowledge and skills have come from self-directed learning. With that in mind, it is kind of ironic that part of my current job responsibility is teaching Python to new users. Or, maybe that make me uniquely qualified.

To someone interested in learning programming, or anything in general, I would offer the following advice:
  • Figure out how you learn best. There are video lectures, books, classroom courses. I learn best when shown an example and given the opportunity to change it or use it somehow.
  • Find something of interest to you, and then find a way to use what you want to learn to do it. Most of my electronics experience comes from making a model train move. Our most successful students at work have projects requiring some programming that they can apply the lessons to.
  • Don't buy a book or pay for a course unless you know you need it and it is not available elsewhere. There is too much good stuff on the internet and every time I purchase a book, my interest quickly moves in some other direction.
With that in mind, here are some of the resources I've found valuable for learning programming and electronics:

Codecademy allows you to explore modules on various subjects for a number of programming languages including Javascript and Python. An amazing teaching tool is the ability to write and execute code in the browser, allowing you to experiment with and be tested on fundamental topics. There is even the ability to write your own instructional modules, such as I did here to explore creating functions while calculating leap years in Javascript.

Udacity provides more of a college course experience with weekly assignments and video lecture snippets. It includes the ability to interactively write and test code. They use Python to teach everything from Intro To Computer Science to Applied Cryptography.

The Python Challenge is unique in that it teaches by presenting you with a series of challenging puzzles which can only be solved by learning techniques that are only hinted at in subtle clues. Once you solve a level, you can see all the various methods other people have used to accomplish the same task. 

For learning electronics, both my favorite electronics suppliers, SparkFun (https://www.sparkfun.com/tutorials) and Adafruit (http://learn.adafruit.com/), have educational portions of their website that give tutorials on how to use the various components they sell. Additionally, Adafruit is developing the WebIDE for the Raspberry Pi which I feel is a valuable tool for both developing code on the system and teaching fundamental Python. I like to demonstrate the WebIDE every chance I get, which included Pycon2013, the Corvallis Maker Festival, and more to come!

Of course, I am just scratching the surface, but as with anything, you have to start somewhere . . .

1 comment:

  1. Hi Ken - I came across your blog and thought you might be interested in exploring Everpath, a site I'm making that brings together coding resources into one place. It's at www.everpath.org, and I've been teaching myself to build it. I hope you'll find more interesting coding courses to explore there. I'd definitely appreciate your comments and suggestions for improvement as well.