So you want to learn to program?

January 16, 2012, 8:00 am

To follow up on my last post about the importance of programming for everyone, I’m making a personal commitment to get my own coding skills up to “halfway-decent” level in 2012. The more I teach with Conrad Wolfram’s TED talk in the back of my mind, and the more I dig into computational geometry as a new research area, the more I see the need to be able to write good code. I’ve tried this before as a sort of lone ranger, sitting down with a terminal window and an O’Reilly book in front of me, with the intent of working through the book, but I never stuck with it. Fortunately, there are more good resources out there than ever to help:

  • There’s CodeYear and Codecademy. Codecademy provides simple, self-guided lessons on programming. Currently there are a number of lessons on Javascript, and there are more lessons in more languages on the way. CodeYear is a layer on top of Codecademy where you can sign up to receive Codecademy lessons by email. ProfHacker did a writeup on Codecademy back in September that gives another overview. I’ve worked through the “Getting Started with Programming” lesson from Week 1 and it was a lot of fun.
  • You can also sign up for Stanford University’s massively-open online Introduction to Computer Science course that starts up In February. This course sounds much more like a traditional university course, with online video lectures, assignments,and quizzes. The course will focus on Python It’s not for credit, but there will be a discussion forum for students (“users”?) of the course that should add a nice human touch. I’ve signed up for this course as well as another Stanford MOOC on cryptography. If I had the time, I’d also do their courses on algorithms and information theory… and a few others besides. Sigh.
  • Don’t forget MIT’s OpenCourseWare class on Introduction to Computer Science and Programming, which was one of the main inspirations for my inverted MATLAB class and was a great help in preparing me to teach that class. It’s expertly taught, and the assignments and course materials are top-notch.
  • And for the math people, Project Euler provides a great set of mathematical computer programming problems that will sharpen your skills in both math and programming. These range from fairly straightforward (“Find the sum of all the multiples of 3 or 5 below 1000″) to forbiddingly complex and are not posed in any particular language, so you can choose your favorite platform and go to it — or try to solve problems in multiple languages. I’ve set a goal to solve at least three of these problems in Python by spring break.

It’s a great time to be a learner, especially if you want to learn to program.


This entry was posted in Crypto, Math, Python, Technology and tagged , , , , , , , , , , . Bookmark the permalink.