If you are looking to learn Python and want to gain your first certification in this language, an obvious route would be to take the Python Institute's 'Python Essentials Part 1' course and prepare for the PCEP (Certified Entry-Level Python Programmer) exam. This is certainly the route I went down myself recently. But what's the PCEP, I hear you ask?
Before I start talking about my experience of the course, I'd like to begin with a disclaimer. Although I'm new to Python, I have dabbled in various languages over the years. As a teenager I was able to write some simple games of my own creation in BASIC on my Commodore Amiga (as well as on my scientific calculator when I was supposed to be paying attention in maths lessons). Now, as an adult, I have achieved a certain competence in CSS - I am comfortable using media queries for example. All these experiences helped me to hit the ground running to a certain extent.
I chose 'Python Essentials Part 1' for a few reasons. First, it's totally free. There's no sign-up cost, and unlike say Coursera, there's no monthly subscription fee either. This was important as I was aware I might not get on with Python and change my mind after a few days. (I have an interest in data science and I'd been torn between learning Python and R, even going so far as to buy a book - a paper book! - on R.)
Second, the course is totally self-study with no deadlines or set timeframes. I was learning Python as part of the '100 Days of Code' challenge, but had no idea how much time I would be able to commit to studying each day. As a result, flexibility was important to me.
Third, the course is geared towards preparing the learner for a specific Python certification: the PCEP (Certified Entry-Level Python Programmer) exam. I had a personal reason for wanting certification, and knew from experience that I would be better motivated by having a specific achievement or accomplishment to aim for (rather than just 'finishing the course').
It is worth noting that while the course is free, the PCEP exam carries a cost of $59 plus tax (I paid the sterling equivalent of this). However if you don't love certificates as much as I do, you can certainly take the course without paying to sit the exam.
The final reason the course appealed is that it was the first of a pair, with 'Python Essentials Part 2' preparing the learner for the second level of Python certification: the PCAP or Certified Associate in Python Programming. I liked the fact I could continue the journey if the first leg went smoothly.
Seeing as we have been talking about cost, I should point out the PCEP is an interim step towards, but not a prerequisite for, PCAP. So the most cost-effective approach would be to skip out the PCEP exam entirely and just take the PCAP exam. However that's quite a lot of studying to do before you have a nice shiny certificate to show for it.
The course, accessed via the edube.org website, is divided into four modules:
Each module is then further broken down into sections and subsections, and these can all be navigated quickly via a 'List of contents' that slides out as a sidebar.
The 'My Progress' page is intended to give you an overview of your progress but never seemed to work properly for me. It still resolutely refuses to admit that I have completed modules 2 and 3. I really have! Although infuriating, this minor glitch didn't have any impact on my ability to study, complete the course and sit the exam.
The learning materials are heavily text-based, which suited me and my preferred learning style (as you may be able to deduce by the thousands of words I am writing now). However if you are an audio-visual learner then this course might not be ideal as there are no recordings.
Breaking up all the reading are brilliant 'lab' sections, which pose a coding problem and invite you to solve it. The scenario is outlined on the left of the page and a Python console is displayed on the right, enabling you to enter and run your code directly through the website. The console timed out unexpectedly a few times, but otherwise worked perfectly.
Each lab gives an 'estimated time' for completion, and although there is no benefit to solving the problem within that time limit it is enormously satisfying to do so if you are at all competitive. And the labs sometimes build on the work of previous labs, enabling you to create some quite nice little programs over the course of several sessions.
Similar to the lab console is a 'sandbox' area which can be accessed at any time to run some Python code (either Python 2 or Python 3). It's then easy to share this code or download it to desktop.
The sandbox functionality removes the need to install Python and a Python IDE on your machine. It makes it viable to do some of your studying on a work PC, a library computer, or - like me - a bashed-up old Chromebook while out and about.
As well as the labs, the course also contains short exercises. Usually these present you with a snippet of code and ask you what the output of the snippet will be when run. Reading and understanding someone else's code is a particular skill and one that I found more challenging than writing my own code, so the exercises are useful in that regard. Incidentally it's also a skill that's very necessary for the PCEP exam.
Finally at the end of each module is a quiz and a test, which both consist of a series of multiple choice questions to be answered in a fairly generous time limit. I am not sure quite why both are necessary, but the quiz is certainly easier than the test - so failure at the quiz may indicate that revision is required before attempting the test.
The end-of-module tests are similar in format to the PCEP exam, itself an online, multiple choice, non-proctored test. So they act as good preparation for the PCEP and ensure that there are few surprises when you do go for certification.
The course presupposes no programming experience and begins by introducing some basic concepts such as compiled versus interpreted languages. It also offers some quite nice background on the history of Python and the various members of the Python family (Cython, Jython and so on), then goes on how to install Python on your local machine. All this sets the scene quite nicely in the first module.
In fact, it is so easy to whip through the first module that you might be tempted to think that the entire course can be completed in a few days. However this is definitely not the case as modules 3 and 4 in particular are significantly more time-consuming. The course is estimated at being around 42 hours of study in total - and for me at least, that was pretty much spot on. I completed it in the first 30 days of my '100 Days of Code' challenge but some days involved more than the minimum one hour of study.
While the course does not assume any programming experience, it does require a certain level of mathematical ability and knowledge. Concepts like binary are explained very much in passing, while many of the code examples and labs are based on well known mathematical problems such as Pythagoras' Theorem or the Collatz conjecture. Being able to understand a simple algebraic equation is a necessity. It made me wish I'd paid a bit more attention in maths lessons rather than writing a 'Play Your Cards Right' game on my Casio FX.
The content of the course generally proceeds in a logical order, but a few sections are questionable. For example module 3 covers, among other things, bitwise operators. I've looked at another couple of equivalent Python courses - one general, and one data science focused - and neither of these covered bitwise operators. Certainly they seem less immediately useful than, say, Lists, which come after bitwise operators in the 'Python Essentials Part 1' course.
The interactive 'lab' sections were a personal highlight, but are rather inconsistently scattered throughout the course. At times I hit three or four in a row, while at other times several hours of study went past without a single lab. I would have preferred a more consistent pattern of say one lab for every hour of study.
The quality of the course materials is high, though some of the code snippets in the final module in particular contained small errors - inconsistent variable names and so on - which stopped them from working. Where I spotted these, I reported them by leaving a comment on the 'Discussion' tab that appears on every page. I believe this tab may be a new feature as there were very few comments from other users.
Python Essentials Part 1 is an excellent course and, being free, certainly more than worth the entrance fee. It also acts as excellent preparation for the PCEP exam, at least in my experience as I went on to pass it with a score of 90% - earning me this natty interactive badge:
Frankly, my success is much more likely to be a reflection on the quality of the course materials than on any innate ability I may possess. I mentioned looking at two other Python courses - this was the best of the three, and certainly the one that hit the best balance between passive and active learning.