I started learning Python in March 2016 to learn data science. My first book was “Automate the Boring Stuff with Python” by Al Sweigart, which helped me get from zero to some knowledge. I also started taking Udacity’s CS101, Introduction to Computer Science, which I wasn’t able to complete, but it also helped me a lot. I think Dave Evans is a great instructor for that course. But because I was itching to start on data analysis, I skipped completing the course. I did, however, finish another online Python training, the Codecademy Python course which I find to be commonly recommended by different bootcamps at the time. It really was a good way to get introduced to Python. But I don’t think it was enough to make me confident coding.

So early this year, after learning data analysis, data wrangling and some machine learning, I decided to enroll in edX’s CS1301x: Introduction to Computing using Python. Now that I’ve finished the course, I’m happy that I have taken it and actually felt that I should have taken it the first time I started (though that wasn’t possible as it only became available early this year.) I highly recommend this course for those who want to start learning Python instead of just reading a book on it. (Reading books, however still helped me understand Python the first time.) My final score was 99% but of course, I took this online, so there’s not a lot of pressure as probably taking it via a real class and you take exams. Also, I wasn’t a total beginner. There were a lot of exercises and problems, however and passing score is 80% (once you get 80%, the certificate is available to view.)

Some of the things I really learned from this course are classes (Codecademy teaches this, but for some reason, I didn’t appreciate it at the time), algorithms, recursive functions and Big O notation. There were other small bits that I can’t recall as I write this but these are the big topics I can think of. Because of the huge amount of exercises and problems, I think this edX course really helped me practice Python. I completed problems mostly without help, but a Slack channel for the class and a discussion group on the edX website were available for when one gets stuck. The material is a little repetitive (for enforcement) due to the additional required problems on “Smartbook”, which contains the online material, only in written format. The problems on Smartbook are graded. So the program is really time-intensive. I felt like I was really taking a class. The instructor, David Joyner, was very thorough, patient, and clear! He has a knack for explaining things very well. Although I started the program the time it started to become available in February this year, I only finished it July this year. I did stop working on it for about two months or so. So I probably spent about three months on it, working at least twenty hours a week.

While I’m at it, I will mention other resources on Python that I recommend. The book, “Python Crash Course” by Eric Matthes is great also for learning Python. I came across this book when I started to go back learning Python again after spending a few months learning data analysis. I did use the O’Reilly book, “Learning Python” by Mark Lutz but only after I have moved on past the super beginner level. I tried reading this book the time I started to learn Python and it was a little difficult to understand. I kept coming back to Al Sweigart’s book, “Automate the Boring Stuff with Python” because of his explanation on Regex, which I haven’t really found in any other Python materials I’ve come across, at least not as thoroughly discussed for a beginner like me. It really helped me to code for data extraction in the Udacity class Data Wrangling with MongoDB.

Another great Python resource is Michael Kennedy’s Python courses, which teach the way Python is used in real life, so I cannot recommend this highly enough. I learned a lot from going through his “Python Jumpstart by Building 10 Apps”. Michael illustrates how he uses it when building apps and it’s fun! But I think it’s more useful when you already have some basic knowledge so this is good to use when you’ve gone through Codecademy or edX courses I mentioned above. I’m not done going through all of his examples, but one thing I really liked was his explanation of the “shape of a Python program” and the use of “__name__ to selectively execute code”.

After all these, hopefully I won’t be as intimidated as before when writing codes. But then, the main thing is actually writing codes.

Spending a lot of time learning Python kind of distracted me from machine learning and data analysis for a while. In fact, I’ve thought about becoming a Python developer instead.