Introduction

This series of videos is aimed at the complete beginner. The only thing I am going to assume about you is:

  • That you have installed Python3 (or above) unto your computer (installing Jupyter Notebook is also a good idea).
  • Speak English.
  • Are keen to learn Python.

About the Guide

I have designed this lecture series with Python3.5 in mind. If you are using earlier of more recent versions of Python then some of the code may work unexpectedly (or not at all).

For this class we will be using Jupyter Notebook. Jupyter Notebook allows you to write code side-by-side with text boxes, allowing for nice looking lecture slides. For more of an explanation/help regarding Jupyter notebook please see the "INSTALL HELP & AN INTRODUCTION TO JUPYTER NOTEBOOK" lecture.

Updates, Errors, Corrections, Suggestions, etc

I’ve done my best to provide quality materials but I’m human and mistakes happen. So with that in mind please do feel free to leave me comments/corrections/criticism, etc. I'll do my best to add corrections in a timely fashion.

About Me

Before we begin I'd like to be clear about who I am and my experience with programming:

  • I am now a junior developer (when I started writing this guide I was a beginner myself)
  • I did not study computer science (my degree is in Philosophy, actually).
  • Everything I know about Python I taught myself.

Make no mistake guys, I have every intention of making good quality materials but the simple reality is that I am some dude with a mere three years experience in Python trying his best to teach it. I sincerely hope I do a good job but in the meantime I can only be upfront and honest about my understanding and experience.

This lack of experience on my part can, I think, be seen as a positive or a negative. One the one hand it means the materials themselves are more likely to contain errors and/or bad practices when compared to materials produced by professionals (but hey, if other developers contribute to this project then maybe this problem can be eliminated, hint hint).

On the bright-side though what happens if I actually do a good job with this project? Doesn’t that motivate/inspire at least some of you? If I can learn Python well enough to teach it then why can’t you do the same?

I’m guessing that most of you reading this document are, like me, self-taught. I’m guessing that you don’t have a computer science degree but are nonetheless looking to cement your first job in the industry, or maybe you are here just learn enough Python to do your current job better. In either case, I’m hoping my lack of actual qualifications inspire you to believe in yourself.

So there you go, you guys now have a simple choice: to continue to listen to this n00b or find some other materials with which to learn Python.

Just Do It!


In [9]:
from IPython.lib.display import YouTubeVideo

YouTubeVideo('ZXsQAXx_ao0')


Out[9]:

If the above two lines of code work correctly a should see an embedded Youtube clip of Shia LeBeouf. I posted the clip because its I think its funny, but there is also seriousness point being made; If you want to get anything in life then at some point you simply have to stop with the excuses and, to quote Mr. LaBeouf "Just do it".

But, while I'm here I might as well make a very brief detour and talk about Python. I got a video playing with just two lines of code!

from IPython.lib.display import YouTubeVideo

The first line of code 'imports' a 'function' called 'YouTubeVideo'. I'll explain what this means in more detail later on. But for now, I just want you to realise that most of the time programming is about using code that other people have already written.

Indeed, the entire reason I can get a video playing in just two lines of code is because somebody else on this earth has already spent the effort doing the difficult bit. I can just reuse thier code, no point reinventing the wheel!

As for the second line of code:

YouTubeVideo('ZXsQAXx_ao0')

What so you think that mysterious collection of characters are? Once you have figured it out, why not see if you can figure out how to play a different video.

How did I learn?

Some of you maybe wondering how I started. Well the main three things I did to get where I am today is:

  • Completing online courses
  • Solving programming puzzles
  • BUILDING STUFF!!
  • Getting a Job

In my opinion the 'building stuff' is the most important, I'll explain why in the homework section (yes guys, this series of lectures comes with homework!)

Online Courses

For online courses there are a lot of websites out there. My personal favorties are:

I'm walking proof that these websites can get you a job as a software developer if you decide to use them. Coursera and Edx has a wide range of material, meanwhile FreeCodeCamp is more focused on Web Development.

For Programming Puzzles...

There are a few websites out there, but my overall favourite is codewars.com. I'd strongly recommend you sign up and give a few puzzles a go. If you want to actually learn how to program you simply have to get coding and this website will give you plenty of opportunities to practice. Moreover, the the ranking system should help give you a sense of accomplishment and progress as you beat harder and harder puzzles.

Once you get more experienced, I would recommend checking out LeetCode. LeetCode programming puzzles have a much higher 'barrier to entry' (many of the "easy" problems will probably require 3 months of programming/algorithm experience in order to solve). Meanwhile the easy problems on codewars can often be solved with just a few hours of experience in a language.

In my opinion this is the main reason why I think you should start with codewars. But, as you get more experienced I recommend switching over to LeetCode because lots of companies tend to ask "leetcode" type problems during technical interviews. Ergo, its the latter website that will help you once/if you start searching for a software developer job.

HOMEWORK ASSIGNMENT

Your task for this week is to think of a cool project. If you had the skills and time, what would you build?

  • A game?
  • An robot that files your taxes?
  • A Cure for Cancer?

Okay okay, finding a cure of cancer would be a huge project, so we might want to tone down the ambition just a bit! As it so happens Python is actually pretty good for "Bioinformatics", so maybe instead of trying to cure cancer we should dream of writing software that can scan a DNA sequence looking for various abnormalities. Now that is both a meaningful AND doable project.

What about games? Well, we are never going to be able to make a game like Call of Duty by ourselves, and moreover Python is not particularly well-suited to games programming (try C# or C++ instead). However, if we once again tone down the ambition I’d say building a game like say Final Fantasy III certainly is achievable. In later lectures I’ll talk about how to build Chess and Minesweeper in Python.

In short, What's your programming dream? Once you've figured that out try to come up with something a bit more realistic. Hold onto this idea, This is your motivation. Learning Python is not going to be easy, there are going to be times where you fall and stumble and if you don’t have a good reason to get back up you may just give up.

To succeed you are going to need to be motivated and that is the idea behind this first homework:

Find your motivation guys. Its bloody important!


In [ ]: