Python Jumpstart by Building 10 Apps is a course designed as an introduction to Python. This course is not your typical introduction found on Coursera or EDX, which are usually designed around some weeks-long introduction that get you to objects around week 8. This course - which you can reasonably complete in a week if you are dedicated - will get you into the more advanced topics within hours, not weeks.
This is a 'learn by watching me do' course in which the author develops each application in front of your eyes. If you do the projects side-by-side, you will learn a lot. You won't learn everything that he knows, especially as it pertains to specific library knowledge, but you will get the flavor of the library and should have the proper vocabulary to explore StackOverflow and the library documentation to figure out the specifics.
There is a total of 7.2 hours of instruction for $69 with lifetime access. This doesn't sound like much course time, but it is quite information dense.
The author, Michael Kennedy, is an experienced Python developer who runs a weekly podcast Talk Python to Me in which he speaks with contributing members of the Python community. I highly recommend giving this a listen.
If you are new to Python or just haven't practiced for a while, this course is for you. Additionally, if you just missed some things along the way - 'lambdas' anyone? - you will find that the course material is organized in such a way that you can easily focus in on the particular topic that you missed. I'm an embedded C guy with very hack-ish knowledge of Python, so this course has been very helpful to me.
As an electronics guy, I didn't actually take any courses in programming beyond assembly. As a result, I was never exposed to actually building a program as a professional might. Kennedy takes you through each application, first sketching out the rough program or file 'flow' and then adding detail. By the third application, the viewer can predict the sequence of events that will start the course. The familiarity of format between the modules gives the user a familiar hand-hold as they move on to each new application.
Kennedy supplies his code in the form of a git repository. This is a great thing to reference from time-to-time, but do not copy/paste from his code. You will miss something. For instance, named tuples format:
import collections
# this one is wrong!
MovieResult = collections.namedtuple(
'MovieResult',
'Title', 'Poster', 'Type', 'imdbID', 'Year'
)
# this is correct
MovieResult = collections.namedtuple(
'MovieResult',
'Title, Poster, Type, imdbID, Year'
)
# see the difference?
Because of a basic misunderstanding in format, I simply missed the nuance of the format of named tuples and - without typing it myself - I would have had to find the issue on my own at some later time.
Kennedy performs his development in PyCharm - a Python IDE - and a significant amount of screen time is
dedicated to showing you how to get the most out of PyCharm. This was a bonus for me since I use PyCharm, but may be a drawback for you.
If you are on the edge, the ease with which Kennedy performs many basic and more advanced tasks with the keyboard-only may convince you that
PyCharm is The Way. You should note that there is a 'Community Edition' of PyCharm that is free and is quite capable. For this series of
videos, you likely won't notice the difference between the 'Pro' and 'Community' editions. You would if you were developing for web applications
or other more advanced applications than just Python.
The lessons are still perfectly applicable to those who would prefer VIM or EMACS, but you might be annoyed by the continual references to how PyCharm will help you out. Overall, the choice to use PyCharm should enable new users to move forward without too many issues, seeing results quickly.
Kennedy has 7.2 hours in which to show you Python and he really pulls it off. This course covers what many 2-semester Python courses would cover. Just look at the curriculum to quell your doubts. If you are an in-betweener - like me - who doesn't want to tackle beginner-style 'for' loops but does want to delve deeper into Python than you have in the past, this is your guy.
To the right is one of the application outlines. The layout is very typical of each of the courses. The application is always introduced first. It is then sketched out and a bit of code is written. Through the coding process, Kennedy moves through with a fluid train of thought, giving the most obvious C-like solutions first, then refining to more "Pythonic" solutions. Somewhere just after introducing a new Python feature, Kennedy will have a specific video just to elaborate on a 'Core Concept'. After the core concept, application development continues as if it were never interrupted. I find this to be an effective teaching/learning format.
The course does start using file I/O in the last few applications and these files are not provided! One of them is a 2.5GB text file, so you
probably don't want to download it to test your program. You do want something, however, so I
forked the repository and added a couple of small files so that the bare bones
of the required files were present for a couple of applications. Look in /apps/
Kennedy does touch on application structure, but doesn't go quite far enough. When looking around on github, I often see applications packaged into a directory, then another application in another directory, with imports going from one to another in a fashion that I don't completely understand. I feel like 10 minutes dedicated to this topic would really help the new and semi-seasoned Python developer in his/her jumpstart.
There are two topics that I would like to have seen covered that didn't receive a mention: testing and profiling. Testing and profiling are an integral part of modern application development and merit a significant percentage of the Talk Python to Me air time. Since snap ci and other continuous integration services are frequently sponsoring episodes of the podcast, I expect that a few videos focused on testing would give the author an opportunity for sponsorship. I realize that testing in particular could easily be its own course, so I look forward to seeing this one on the course list soon.
A few videos on string manipulation and searching - such as with regular expressions - would have been appropriate, but it doesn't feel like it is missing. The course does cover using the CSV module, which accounts for half of the string search/manipulation that I perform. If you think that you know the CSV module, you should watch anyway. There is a cool little trick that makes unpacking CSV data easy and robust.
I'm not advanced enough to know if application deployment should be a course of its own or get its own half-hour here. Kennedy does touch on a method or two to get code to execute in Python2 and Python3 environments, but not the whole picture. A few minutes on application deployment would be very helpful.
If you are looking for a modern GUI course, you might want to pass on this one. All user interaction is completed in the command line, allowing the viewer to learn Python. Some courses/languages - I'm looking at you, Java - try to introduce the paradigm of GUI development to beginners still trying to learn the syntax and concepts of the language. Kennedy's simple user interaction allows the user to focus on Python manipulations, not frames and panes.
Most videos are in the 3-6min range, with the longest video at 13:21. These are pretty bite-sized and you could easily spread the information-dense 7.2-hour course out over a more lengthy amount of time. If you watch these straight-through, you will miss out on half of the value of the course. Take your time, pause the video, re-watch sections that you missed, and type out the examples yourself. Experienced programmers should expect to dedicated 12-ish hours to the task. Beginners should checkout some books or tutorials for when they don't fully understand an example. I would expect new programmers to easily spend 30 hours or more learning the terminology and techniques.
I came at this course having developed a few small applications for my own purposes. I have exposure to most of the material already, so I was able to do about 3 applications/day without much of a problem.
There isn't anything in this course that isn't covered elsewhere for free. That being said, I have spent many hours learning the 'getting started gotchas' one hard lesson at a time. Had I gone through this a few years back, I suspect that I wouldn't have had some of the headaches that I suffered through.
For a beginner, I would recommend trying to develop one app/day. That may be ambitious, particularly on the last few applications. Try not to move forward without actually understanding what is being shown. The topics highlighted by the author as a 'Core Concept' should be understood thoroughly before advancing.
For the in-betweeners, I would still recommend watching this course through in its entirety and manually typing out the applications that have features that you aren't familiar with. I feel like I could run through some portion of these videos every few months and learn a bit more every time.
For the seasoned Python developer, this is likely a pass. Having said that, I would be very surprised if anyone - including Michael! - wasn't able to pick up a new trick or remember an old trick long-forgotten.
I highly recommend this course to developers of all vintages, but I suspect that it hits its sweetest spot with coders already familiar with at least one other object-oriented language.
My thanks to Michael Kennedy for publishing his video series and for permission to utilize his images and artwork. Keep up the great work!