Beginner’s Mind

As I embarked on my journey to learn python, I began by exploring a number of different approaches.  I finally settled on using “beginner’s mind” (shoshin to those of you out there that know anything about Zen Buddhism).

Rather than just dive in and build on my existing programming skills and experience, I decided to start completely from scratch. Fortunately, MIT’s Introductory Computer Science class (6.00 Introduction to Computer Science and Programming) is available in its entirety – including all 24 lectures – on MIT’s OpenCourseWare.

I fired up Lecture #1 (Goals of the course; what is computation; introduction to data types, operators, and variables) and spent an enjoyable hour remembering what it was like to be in 10-250.  If you want a taste, here’s the lecture.

The lectures are all up on iTunes so I’m going to watch #2 on my way from Keystone to Boulder this morning (Amy is driving). I’ve got plenty of reading to do and I look forward to diving into the problem sets.

While watching the lecture, Professor Eric Grimson reminded me that this was not a course about “learning Python”, rather it was a course aimed at providing students with an understanding of the role computation can play in solving problems. A side benefit is that I will learn Python and – in Eric’s words – “feel justifiably confident of [my] ability to write small programs that allow them to accomplish useful goals.”

Beginner’s Mind can be a powerful thing.

  • Looking forward to diving into problem sets? While I had little problem with the 6.001 problem sets (like you, I’d done quite a bit of programming before taking the class, a rarity at the time), the phrase is reminiscent of banging one’s head, repeatedly, into a wall.

    • Oh – c’mon – problem sets are fun.

  • I read your last post and I can relate a little. Remember Pascal 7 was all about OOP, seemed really cool around 1994, the same year the Java hype started with OOP: it’s so reusable, extensible, secure, platform independent, etc. Read lots of books about OOP that year, even wrote a couple of simple Java “applications” (like a web spider) but I found scripting with REXX, Perl, and PHP more rewarding, never looked back. Maybe you’re thinking about Python to write something for Android but I’m not going that route, in the big scheme of things everything is “mobile” and Android is just another quirky flavor of Linux.

  • Hi Brad!

    I have actually watched all of these lectures and they are very good. That last paragraph …

    “a course aimed at providing students with an understanding of the role computation can play in solving problems”

    … is paramount I felt and the more I followed through it became clear how the mechanism of thinking is what matters rather than the syntax of the language.

    I’m not sure if you have ever seen Professor Malan’s lectures for the CS50 course that he teaches at Harvard?
    I followed that course also and it is excellent. It uses C as the main language but the concept is the same in that the focus is on the thinking mechanisms rather than purely on the syntax and libraries of the language. The CS50 course also features a lively Google groups forum where anyone can post questions/issues and its amazing how quickly and keen people are to reply and help out! Amazing to see the free educational material that is now accessible to anyone with an internet connection.

    Also, I have been following your blog/twitter for a while now, some great posts and links, thanks! I have been to Colorado a few times and always amazed by its beauty and plethora of outdoor activities, would love to move to Boulder/Broomfield some day and check out some of that snow shoeing!


    • I haven’t seen malan’s course but will take a look.

  • Brad – funny, I embarked on the same journey a few weeks ago although with no background in coding. Tried a few different resources. Started the 6.00 course as well but found the problem sets hard without access to the recitations and found the course a little too heavy on theory for my purposes. If you do continue with it, I recommend this as a companion:, it’s a site where you can join a community of others taking the online course, compare problem set solutions, etc.

    I ended up using this instead of the MIT course: and find its style suits me and my purposes better.

    As for text editors which you asked about in a tweet, I’ve tried the following which are both good:

    plus IDLE for the MIT class.

    Good luck and enjoy!

    • Ron – great suggestions. Thanks.

  • Maig1984

    This is awesome Brad!, i am always into learning “new” old stuff. 🙂 Thanks.

  • Great tip, Brad. I’m joining you as a “classmate” and having fun. Thanks!

  • Editors:

    * osx TextMate
    * Windows/Linux Komodo

    More important than an editor, install ipython and make that your command line environment. tab completion and automatic help is great.

    There is a local python meetup that’s a helpful group.

  • Brad, Thanks for pointing this course out. I have been using LearnPythonTheHardWay and had been wanting to understand more of the theory. The lectures so far have been great at supplementing my learning from there.

  • Thanks for sharing This Brad. I am planning to be your online classmate :). Would be worth refreshing things..

  • Mike Greczyn

    Great post. Learning should be a lifelong endeavor, which is why I’m also learning Python and enjoying my own case of Beginner’s Mind. I haven’t done any programming since the mid 90s… I downloaded some of Prof. Grimson’s MIT lectures as well, but right now I’m working my way through a book called Python Programming for the Absolute Beginner. I decided on Python when I came across this book at Tattered Cover (and after reading Peter Norvig’s essay ‘Teach Yourself Programming in 10 Years’). Before that I was trying to get through the SICP book (available in it’s entirety online), but was having trouble getting the MIT Scheme software to work on my thinkpad and was itching to just write some code. I’m finding that I really look forward to spending an hour or so digging through a chapter and writing some small programs, and I wish I had experienced the same enthusiasm as an undergrad.