My Experience with the Python Institute PCEP

Joe Farnelli
9 min read5 days ago

--

Introduction

Having just taken and passed my Certified Entry-Level Python Programmer (PCEP) offered by the Python Institute, I wanted to share a little about my preparation for the exam and what can be expected from the exam, without violating the integrity of the testing progress.

A computer displaying computer code
Photo by Mohammad Rahmani on Unsplash

Background

A little about my background leading up to taking the exam. I had toyed around with Python programming on and off for a few years, never progressing much farther than “Hello World” programs, user input and if statements. In the fall of 2023, I had to take an Introduction to Python Programming course for college, and I ended up failing it due to my obligations with the military getting in the way of deadlines, and while my professor had tried to accomodate me to some degree, by the time I had returned to my coursework, there was merely days left in the semester (or it may have already been over, with final grades due in a few days, I can’t rightly remember). The moral of the story is that I was unable to pass this class, and frankly I did not learn much from it.

I started using Mimo, a free mobile app used to study a few different programming languages. I signed up for the Python learning path on Mimo, and a few weeks later, after studying for a few minutes a day, I ended up completing the learning path, and moving on to a more adanced Python course that was offered on the same app. This helped me learn more advanced techniques such as using APIs, interacting with JSON data and more. After finishing this learning path, I briefly started an SQL focused learning path before deciding I should be using the knowledge that I have now before I start to forget it, because in programming, everything needs to be muscle memory to some degree or else you will forget what you are doing.

I may have been at a slight advantage in grasping certain programming concepts, due to my interest in the subject since I was 10–12 years old when I first started learning FreeBASIC, HTML and CSS, and soon after this infatuation turned into learning how to develop video games, so I learned a scripting language known as GML (GameMaker Language) which was used exclusively with the game engine, GameMaker, developed by YoYo Games. This background helped me with understanding syntax, but by the time my Python education was having me learn about classes, object oriented programming (OOP) and even some data types such as lists, and tuples, were pretty challenging to understand fully and be able to implement in my projects.

The previous paragraph was designed only to express that everyone’s pathway may be different, but the end goal is always achievable, while your main struggle may be understanding syntax, my main struggles were trying to translate what I already understood in a different language into the language of Python 3. Having also done some crash courses in JavaScript and other languages, I often found myself confusing syntax across different languages, which meant I would need to practice over and over to be able to differentiate these languages in my mind.

A man working at a computer
Photo by Christin Hume on Unsplash

Project

After this discussion of my initial education on the Python language, let’s discuss how I cemented my knowledge to a point where I felt comfortable taking an exam based around my knowledge.

As an avid gamer, and developer of games since before I was even a teenager, I thought to myself, “what better way to use my newfound programming knowledge than to push myself to make a video game with it”. So I began dreaming up the game I would use, the tools I would need to learn, and unlike the video game projects I’ve worked on in the time since my last full game release (2013 or 2014, I forget), I had to make sure my scope was reasonable so this didn’t become another project I would never be able to finish.

I settled on a few key ideas, I wanted the simplest game I could think of, I wanted to rely on the smallest amount of libraries, modules, and overall assets as possible, and lastly, I wanted to make the game feel somewhat complete, the goal was not necessarily to make the game fun, the goal was to make a game, that people would be able to look at and understand that it is a game, nothing more.

I’ve always been a fan of watching game developers on YouTube work on their game jam projects. For the un-initiated, a game jam is a short development competition, usually less than a month, sometimes 24 hours to a week, where participants are tasked with making a game. Most of the time these game jams spawn tons of “micro games”, very often these projects are not very intuitive, but are simply concepts of what could turn into full fledged games, think of a one level game demo that a store might offer to try to get you to pay for the full version of the game.

Once I defined the game that I wanted to make, I set myself some goals and got to work. Using PyGame for the functionality and graphics rendering of the game, I began working on my project. After about two days I had a fully playable game, though it lacked many GUI elements and other things that a game would normally have. I had created a very simple game where the player character moves up and down the screen using the arrow keys or “W” and “S” keys, and shoots with the spacebar at enemies that come from the right side of the screen and move towards the left side. If the enemy gets to the end of the screen, the player loses health, if the player kills the enemy before that, his kill count increases. The kill count led to a system where enemies get faster each “wave” (every ten kills). I also implemented an ammo count, reloading mechanics, and semi-random ammo drops appearing on the screen, which the player has to walk into in order to collect so that they don’t run out of ammo. When the player eventually does die, the screen goes black, says “Game Over”, presents the player with their kill count and gives them the option to restart the game or quit.

That is exactly how simple I kept this project, eventually after a week of development I felt like it was complete. I added sound effects, GUI elements to show the player how much health they have, ammo in their magazine, unloaded ammo, their kill count, and what wave they were currently on. I implemented being able to turn on full screen support, and I spent a large amount of time trying to figure out how to make certain events trigger without having infinite loops running to wait for certain conditions, as this ended up being the culprit of my game crashing tons of different times, for tons of different issues. After that week was up, I was done with the game.

A video game console with a controller on top of it
Photo by Nikita Kachanovsky on Unsplash

Exam

After I was done developing my game, I decided that I was in need of something new to work towards. I decided I didn’t want to bite off another week long project at this time, and so, me being a cyber security nerd and knowing that the I.T. realm is big on certifications, I figured I would look around and see if programming is similar. I eventually came across a few options for certifications in Python, but it seemed that The Python Institute’s PCEP was the most recognized in the industry for the first step, whether the certification is truly needed, or helps at all on a resume appears to be a different debate, with many users on Reddit and other websites advising people not to waste their money or time, and to work on their portfolio instead if they want to get a job.

I was not deterred by the negative sentiment, in my eyes, the exam was cheap enough, and unlike many of the cyber security certifications I am accustomed to researching, I did not have to go to a testing center, and I did not need to do the Python exam through Pearson VUE, which is the industry standard distributed testing platform. This was a concern for me because I was away on a work trip without the ability to go to a testing center, and the computer I brought with me did not have a built in camera or microphone, so upon talking to a representative of OpenEDG, the native testing platform for The Python Institute, and their sister institutes, I was ecstatic to find out that my hardware limitations would not affect my ability to take the exam.

I decided I was ready, and I took the exam. I was happy to realize that I had learned nearly the whole curriculum to some degree or another, though some noteworthy shortcomings of mine were some of the lesser used operators (namely floor division), multi-line comments (i had never used them before), and some of the mathematics which were just too complex for me to do in my head at times. Even with these issues, I was able to pass the exam with a respectable score.

A pile of books and a notebook
Photo by Debby Hudson on Unsplash

Lessons Learned

Mimo prepared me fantastically for the exam, however Mimo missed a few key points: some of the lesser used operators and multi-line comments.

My game development project helped my confidence and helped cement my knowledge of all of the Mimo courses where I feared I may have been brainlessly clicking through and not learning from my mistakes. If my game development project did not necessarily add to my list of skills (other than learning how to read documentation for PyGame), it helped me gain the confidence to be able to feel comfortable taking the PCEP exam.

I would recommend anyone that is interested in taking the PCEP thoroughly read through the curriculum for the eam and make sure that you have all of your bases covered. There are practice tests available online, W3 schools practice tests are a great resource as well. I took my W3 Schools Python exam the day prior, to gauge where I was and if I was confident enough to take the PCEP exam. Upon passing W3 schools exam, I was sure I was ready.

Conclusion

The PCEP was a great test of my knowledge, and unbeknownst to me at the time of taking it, my college recognized the certification and I was able to present it and instead of needing to retake the Python class that I failed, my requirement to the class was waived.

I did not expect or even think this was a possibility, I took the exam for my own knowledge, out of boredom and so that I had something new to add to my resume, and the pathway that brought me to passing the PCEP also gave me a new project to add to my portfolio, in my game development project.

Please see the “Sources” section for more information on the PCEP, the curriculum and my GitHub page for the game project. Feel free to contribute, modify or whatever else, it’s open source.

Sources

--

--

Joe Farnelli
Joe Farnelli

Written by Joe Farnelli

Cyber Security Student, Soldier, History Nerd, Music Lover — Instagram @IAmJoeFar