Digital Education team blog
  • We support Staff and Students using technology to enhance education at UCL.

    Here you'll find updates on institutional developments, projects we're involved in, updates on educational technology, events, case studies and personal experiences (or views!).

  • Subscribe to the Digital Education blog

  • Meta

  • Tags

  • A A A

    Review: Automate the Boring Stuff with Python

    By Jim R Tyson, on 4 April 2017

    Author: Al Sweigart
    Book  $29.95 print, $23.95 e-book or from Amazon £15.54 print, £11.39 Kindle.
    Youtube fifteen free videos from the Udemy course
    Udemy: £50 (Discounted to £10 as at 4/4/2017 ) fifty one lectures following the book

    Python is often said to be a fun language to learn. Programming is sometimes said to be fun to learn. The combination ought to be fun too.  My lasting impression of these materials is that they are fun.

    Learners often find that resources for beginners self-tuition in programming are either daunting, or badly designed, or too simple minded to be of real help. This set of resources scores highly on all of these.

    Automate the Boring Stuff with Python is a book that is accompanied by a website, some youtube videos, and (for pay) a Udemy online course. There are eighteen reasonable length chapters and three appendices. The first ten chapters cover the absolute basics of procedural programming starting with simple interaction with the interpreter (do some sums!) through variables and assignment, flow control, writing functions, complex data structures, strings, input and output and debugging. There are one or two other topics that it was interesting to see dealt with relatively early such as searching with regular expressions and file manipulation – including compression, bulk filename routines – but they are simply explained and they make sense given the intention of the material (automating stuff). The book is well designed and clearly written. The website has the same material but includes an in-line interpreter so that you can type code as you go, make mistakes and correct them, and see the results when, finally, you get it right. I watched the free youtube videos and they were well made with clear explanations as were the other free tasters of the Udemy course.  The youtube videos get a big thumbs up in their comments sections.

    Overall, I think these materials are a good start for a beginning programmer who isn’t intending to become a software engineer. It would suit a learner whose aim is to write programs intended mainly for their own use. It doesn’t cover some topics that are increasingly included in early training for programmers, for example version control or test driven development, but for many learners overcoming the initial barrier to writing some effective code is more important than these aspects of best practice. The use of object methods, defensive programming and more can be tackled later.

    The second part of the book and course introduces the use of python libraries for some common and useful tasks. This section includes a variety of projects including web scraping, working with spreadsheets and word processor documents, integrating email in programs. In a higher education context you might want to include numpy, scipy, matplotlib but there are good tutorials for these – good at least for someone who already has basic coding skills and is familiar with the use of libraries – exactly where someone would be after finishing this course.  They are good choices if you want to learn scripting to automate the boring stuff, maybe periodically grabbing data from a website or a spreadsheet and transforming it before writing to a new file for example.

    It’s particularly nice that the website has an embedded interpreter, but I think you would want learners to move onto an IDE eventually and perhaps in some contexts you might want to replace the use of the in-line interpreter with iPython notebooks.

    Overall this is one of the best resources for beginning programmers I have seen and as a suite of resources it could be easily supplemented and adapted to meet an expanded or amended set of objectives.