Nov 1, 2019

Python Curriculum


aving spent time at SIGNAL 2018, I felt inspired to return back to the command line and strengthen my knowledge of working with Python. My end goal was to feel a higher level of comfort when it came to explaining how to create bots and use APIs. Over the past year or so, I've been learning Python and creating small applications here and there. However, I found that I could never truly explain why it was necessary to take the steps I had taken. Or more important just what certain technical concepts meant.

When I returned home from SIGNAL, I wanted to be able to do more with Twilio products. I was lucky to learn about Autopilot and figured I could work my way up to giving that a try. Before sitting down and reading Twilio documentation, I decided that it was more important to take a step back even further and start at ground 0.

Over the past few months or so, you may have seen me mention all of the courses in which I'm taking to help strengthen my skillset. Some of you have even inquired as to which courses one should take if they're pursuing Python.

Well, my answer has never necessarily been straight forward. Why? Well, for the most part we all possess different goals. For me, my goal is to work more with AI bots and messaging. Therefore, when I created my personal cirriculum, I did quite a bit of research to see which skills would be necessary to do well in that arena. I would start with one concept and then work my way backwards to see what other foundational knowledge was needed before pursuing the topic. Below is the end result of completing that exercise:

Command Line

More often than enough, you'll find yourself executing code from the command line if you're working with Python. Rather than just be familiar with how to execute Python code, I found it necessary to learn basic commands. This set the foundation for the later need to install packages and use Git.

Shell Workshop
Learn the Command Line

Git & Github

Whether you're working alone or with other developers, it's important to understand and use version control. Being that most (if not all) devs use Git and/or Github, I figured it'd be useful to learn how these two things work.

Learn Git
Version Control with Git
Writing READMEs
Github Learning Lab
How to use Git & Github
Github & Collaboration


Given that my programming language of choice is Python, I wanted to go back and strengthen any particular foundational skills that would be useful once I got to building my own bots.

Learn Python 3
Programming Foundations with Python


The Modern Python 3 Bootcamp
Complete Python Bootcamp: Go from Zero to Hero in Python 3

Web Servers

I had never deployed a Python app and figured it'd be useful to know how to do so. I also wanted to be able to explain how the Internet and servers work (yanno, just in case I ever end up on Jeopardy or something).

HTTP & Web Servers
Full Stack Foundations


There are various frameworks to choose from when it comes to Python. Most often, I come across Django and Flask as options in Python tutorials. I'm going to give both a try to see which one I like most.

Mega Flask Tutorial
Getting Started with Django


Do I know what an API is? Sure. Do I know how much more outside of that? Nope. However, some of the most powerful (and entertaining) apps/websites that I've come across use APIs in some capacity. Rather than just plug in a few values and say 'viola! here's the data!', I wanted to dive deep into learning more about APIs.

Intro to Javascript
Intro to AJAX
Authentication & Authorization: OAUTH
REST APIs with Flask and Python
Designing RESTful APIs
Learn the Watson API

Bots & AI

This section goes without saying - it's my final end goal. Since I'm most familar with Slack, Twilio and Alexa, I figured I would give those 3 a try to strength my skillset in building bots with those platforms.

Easy-Peasy Bots
Twilio SMS Python
Introduction to Alexa
Conversational Design with Alexa

You may be wondering why I find it necessary to repeat learning the same content on different platforms. The reality of the matter is that no one instructor or coure will ever teach you EVERYTHING there is to know about a topic. Not to mention, all instructors/platforms have different teaching styles. Often times, if I get stuck on one topic, I usually find a better explanation once I go back and learn the same concept elsewhere. Having a variety will expose you to more!