• Save
  • Download
  • Clear Output
  • Runtime
  • Run All Cells

Loading Runtime

Hi, my name is Ryan Allred.

I've been teaching Software Development and Data Science to beginners for the past 12 years or so, and in that time I have helped thousands of beginners go from nothing to becoming employable professionals.

Data Science is a very powerful skillset to obtain. I'm so stoked that you're interested in learning it. And step one in pursuing data science is definitely learning the basics of the Python Programming language.

Throughout this course, we'll alternate between lessons that teach fundamental Python concepts and lessons that take a step back from the minutiae of coding syntax to demonstrate how those concepts play a part in actual data science work.

I'm going to try and make it as clear as I can at all points throughout the course how even the simplest of concepts that we're learning are going to pay off for you in both the near-term –in terms of us doing cool applied data science projects together– but also in the long term as they become the bedrock foundation of your Python and Data Science proficiency throughout your life.

Before we get started...

Before we get started, I want to be up-front with you about some of my teaching philosophies so that you can get an idea if this style of course is for you or not.

1) This course is for absolute beginners.

You should know that course is intended for absolute beginners. You don't need any previous programming, data science, statistics, linear algebra or calculus experience to participate in this course. You should be comfortable with basic algebra-level math, but that's all I really ask. If you do have other prerequisite knowledge, that's awesome, that's going to help you move even faster, but it's not required.

2) This course is going to be thorough.

This course is going to be thorough. Maybe even painstakingly so at times. We're going to do a lot of repetitive practice. This is on purpose, let me tell you why. Throughout my years of teaching beginners, I've heard newcomers relate to me a similar sad story many many times, it goes something like this:

  • You (an enthusiastic beginner) pick a course to teach you something code-related, maybe it's even Python or Data Science. The course teaches a concept, has you write a line of code or two as practice, gives you a gold star, and then whisks you off to learn the next concept. You feel like you are flying. You're churning through the material, nothing can stop you.
  • You finish the course feeling awesome about yourself, and you set your eye on a project you want to build with your newfound skills.
  • You open up your code writing tool of choice to start the project and... you draw a complete blank. You can't even write the first line of code. You have no idea where to start. Then you start to worry that maybe you aren't cut out for this after all. Maybe it's too hard.

That's not true! You just need more practice! And in my opinion, most courses don't give you enough practice.

I hope to give you all the practice you need and then-some. But also we're going to do a few projects together that are really well-integrated with the lessons leading up to them so that you feel prepared for attacking the project and so that you will be able to see how we can break those complex projects down into doable bite-sized portions.

In fact that important meta-skill of being able to break down a coding task into simple, minute, actionable steps that we can knockout one by one is something that we're going to deliberately practice together at different points throughout the course.

3) A three-pronged pedagogical approach

Here's what we're going to do to give you ample practice with each topic and methodically build up our skills until we can complete in-depth machine learning modeling projects using industry-standard tools.

To explain my instructional approach, I want to compare and contrast learning to code with a similarly challenging life-long learning experience –that of learning to play a musical instrument. I think you'll find that they have quite a a lot of similarities.

Growing up, I learned to play the piano. My parents had me take piano lessons. When you're learning to play an instrument your goal is often to get good enough to the point where you can play certain songs that you love, or maybe even to learn to write your own music. But, none of us are virtuosos from the first moment we sit down with an instrument –it takes a lot of practice. Years of practice. Just like you wouldn't expect to learn to play an instrument in 30 minutes, don't be fooled by content that promises to teach you Python in 30 minutes –or whatever– that's just not how it works.

To learn an instrument well, it's common to use a combination of methods that build upon each other over time. Let me explain.

"Pedagogical" - relating to the practice of teaching and its methods.

1) Drills

Drills are exercises that give you practice with a very specific technique or ability. For learning the piano, you can do drills to strengthen your fingers or increase your dexterity. Drills to learn how to play scales. Drills to learn chords or theory. Or you might repeatedly drill and practice a challenging segment of a song that you're learning. But what's common among all of these drills is they are repetitive, and they focus on one specific concept. Doing the repetitive drills isn't the funnest thing ever, but it has a big payoff because that concept is likely to be relevant to all kinds of music, it will probably show up in a lot of different songs later on, but not necessarily in every song.

When we're learning to code, we also need repetitive practice with the specific attributes of our programming language, and the concepts we learn will also pop up here and there throughout the code we write in the future. Code syntax is confusing, we're learning another language after all and it takes repetition in order for it to really sink in.

Just like when learning to play the piano, when we're learning to code, we're not really learning very much unless we've got our own fingers on our own keyboard pressing the keys –and making mistakes, honestly. My goal is to get you using your own actual fingers to write your own actual code as often as possible, it's not enough to just watch videos about programming concepts. I want to give you an excessive number of opportunities to actually practice and to actually do the real thing. I could have easily just made instructional YouTube videos about all this stuff, but I didn't, I've also made this whole website with a custom built-in notebook-based Python editor so that alongside those instructional videos you would have the opportunity practice writing your own code and to be told if that code is right or wrong. (Which is more subjective than you might think). But, within this course you'll find hundreds of repetitive code exercises to give you all the practice you could ever need to master the fundamentals of Python and Data Science.

I also I want to emphasize that you don't need to do every single exercise in this course. If I have given you 20 exercises that you can use to drill a certain concept and you feel like after doing 10 of them that you've got it down, feel free to move on at that point. I might have gone a little bit overboard in some places with the amount of available exercises.

2) Practicing "Recital Pieces"

As part of learning an instrument you might also select and practice big fancy songs that are impressive and and that you intend to perform for an audience big or small. Playing for our own enjoyment can be really fulfilling, but if we want to become professionals. We have to work for the benefit of others, so that they'll be willing to compensate us for our hard work.

The data science equivalent of this might be a fancy portfolio project that you're willing to show off to and talk about with potential employers. We'll do some big, fun data science projects together during the second half of the course, and after we've competed them together I hope that you'll feel ready to build your own big, fancy data science portfolio projects and to participating in things like Kaggle Competitions –for example– totally on your own. So if you persevere through the grind of the first half of the course, you'll be rewarded with cool projects during the second half.

3) Études

In music and particularly in the study of classical piano, these so-called "etudes" are a big deal. Etudes are relatively short but challenging pieces of music that require the use of a particularly difficult technique over and over again throughout the song. The word "etude" in French means "a study". This name is trying to convey that the piece was created with the intention of requiring the musician to study and master a particular challenging technique in order to be able to perform it. And they are intended to be performed, in fact many etudes are just as beautiful as they are impressive.

Take a look at this Chopin's "Torrent" Etude. The video is around two minutes long, see if you can tell what challenging technique this song requires the performer to have mastered:

The purpose of an etude is to be kind of a combination of a beautiful recital piece (or portfolio piece when it comes to code) and repetitive drills. It's still fully-fledged piece of music, but with the top priority being increasing the player's abilities above all else.

In my opinion, we need more "Etudes" in programming education, and I would argue that the programming equivalent of an etude is more than just a follow-along-with-me tutorial. These need to be projects that still accomplish something useful, but whose existence is first and foremost to make the person who completes them better at certain skills that have been selected by the teacher. A programming etude may not necessarily demonstrate the most elegant code or use the most cutting edge tools and techniques, but it would make the learner better at specific skills within the context of an end-to-end project.

Throughout the course we'll have some intermediary projects where we are doing useful data science things, but we're doing it in way that gives us a chance to practice Python fundamentals and see how concepts that were initially presented in isolation from each other can come together to accomplish a larger useful task. I'll make a point to call these projects "studies" to try and indicate that they're for practicing fundamental skills in a data science context, and not necessarily for using the most cutting edge tools (like Pandas, Numpy, Scikit-learn, etc) or for being the most mind-blowingly impressive projects –when we're done with them.

"Étude" - A short musical composition, typically for one instrument, designed as an exercise to improve the technique or demonstrate the skill of the player.

4) An extra emphasis on technical vocabulary (also known as "jargon").

If you can use the terms and vocabulary of a professional, then it's more likely that you will be seen and accepted as a professional. Not only that, but you will you be able to more effectively consume other data science content, read code documentation, and overall participate in the larger data science industry. And you'll sound the part when you're in job interviews –for example.

In this course we're going to be deliberate about adopting important industry jargon. In fact, you're probably going to find it annoying how much I emphasize technical vocabulary, but it will be good for you, it's one of the ways that we have to eat our vegetables –so to speak– as we're breaking into this new field.

5) This course will not be exhaustive -that would be impossible and wasteful.

The reality is that not all Python programming or data science concepts are equally useful. Especially when we're just getting started, we want to cut through the fluff and get to building useful things as quickly as possible. For me, that's when data science really comes alive. I've tried to be very purposeful and selective about which concepts are taught in which order so that we can do cool stuff as early as possible while compromising as little as possible on building a strong foundation of programming skills.

Due to this, you may notice that there are times in the course where we just hit the basics of a concept like functions, or lists, for example, and then we circle-back later on to treat the topic with even greater depth once we are more prepared to make use of all of its features.

Your feedback is appreciated

If you have any feedback on this course or if you find a bug in an exercise or just thing something's incorrect, please get in touch with me and I'll work to rectify it. The easiest way to do this currently is through the Temzee Discord channel –which is also a great place where you can: get help with your code, meet new people, get notified of any live events that are going on and be part of the growing community.

I hope that by the end of this course, not only will you feel like you have learned a great deal and that you're ready to tackle even bigger topics, but I hope that you'll feel like this is one of the best Intro to Python and Data Science courses anywhere on the internet. And I'd be honored if you'd leave it a review and recommend it to your friends.