The Ultimate Guide to Learning About Artificial Intelligence

Adam Maj
55 min readApr 30, 2020

For People Returning to This Article (Ignore if New)— Jump to Table of Contents

A quick note: please help me share this resource!

Before we jump into the content, I would be very appreciative if you shared this article wherever you see fit (Twitter, LinkedIn, Facebook, etc.). My goal is simply to reach as many people as possible to help as many as I can with this resource and in order to accomplish that, I need your help!

If you shared this article with those you know on any platform, or even directly shared it with people that you think would be interested, it would be super helpful!

You can use this link to share the article: https://link.medium.com/Mkq88OjJ65

Thanks in advance for helping me spread this resource!

There is no doubt that today, artificial intelligence is considered to be one of the most powerful and promising technologies. Lately, so much hype has been built up around it that it has become a buzzword all across the world. Over the next few years, AI has the potential to fundamentally alter life as we know it to bring about positive change.

Today, artificial intelligence is used by countless successful companies ranging from Amazon to Netflix to Google and everything in between. Every company is trying to get its hands on AI to improve products, drive forward innovation, and look toward the future.

With all this hype being built up around the technology, there are so many reasons for more and more people (like you and me) to become interested in learning about AI:

  • The current growth rate of AI means that it is getting exponentially more valuable as time goes on. This means that investing time into it now will pay dividends later. The sooner we can learn about this impactful technology, the sooner we will be able to make an impact with it.
  • The total global market for AI in 2016 was $4.06B. It is now projected to be around $169B in 2025. That’s some serious growth.
  • The amount of power you have to create solutions with this technology is immense. Artificial intelligence has been used in cancer research, gene therapy, brain-computer interface research, and everything in between.
  • If you aren’t interested in solutions, there are other motivations. The average machine learning developer makes around $114,121 annually. That puts the job in the top 10 highest paid jobs by average salary overall.
  • Most importantly: With AI at your fingertips, you will have access to so many opportunities to make a difference or achieve your personal goals that you would not have had before.

Of course, this is an inexhaustible list, so I won’t keep going on forever.

Now you may be wondering, is there a way for us to learn about artificial intelligence? Can we use its power for our own purposes? Can we create our own crazy projects with the knowledge in our hands?

The answer to all of these questions is supposed to be yes(???).

Technically, there is a massive amount of content available online for people to teach themselves about artificial intelligence. So the question is, why hasn’t everyone under the sun taught themselves? Surely there are hundreds of thousands, maybe even millions wanting to learn about AI, so why haven’t they been able to?

What's the problem?

The issue lies in the nature of the online resources for learning about AI. There are several difficulties that people encounter when trying to teach themselves about this topic which often act as major obstacles:

  • The majority of the content available online is very difficult to understand. People explain concepts using a lot of jargon and don’t take the time to fully detail how concepts work at a basic level. This makes it extremely difficult to sift through resources to actually learn things yourself (without a Ph.D. level of understanding going into it)
  • None of the courses are fully comprehensive. This means that in order to get a broad overview of any topic, you need to jump around to a number of different courses just to learn about one topic in its entirety. This can get inefficient and time-consuming (and often causes us to lose our motivation)
  • A lot of the best content costs money. This is a big barrier to entry. If you are someone who is trying to learn about AI out of interest, or you are someone who doesn’t want to spend on this, the several hundred dollar courses might be a bit of an obstacle. There are some good free courses (which I will talk about later) but they are often hard to find.
  • No one tells you how you should be going about learning AI. This might be the most significant one. Learning to code and learning about artificial intelligence is not easy at all. It's one thing to know how to copy down code and pretend that you understand it. But to actually have a fundamental understanding and be able to create something from scratch yourself is far more difficult, and it takes time to get to that point. Also, no one is telling you how to get there.

Because of these problems, it becomes very difficult to actually get a firm understanding of artificial intelligence and learn it yourself to a proficient level through online learning. That’s why I decided to create this article. I want to help all of you to pursue your interests in artificial intelligence and learn about the technology as fast and efficiently as possible.

But you might be thinking at this point: “what does this guy know? why should I listen to him?” That’s a good question. So first, why don’t I give you a brief introduction of who I am.

I’m Adam Majmudar, a 17-year-old self-taught machine learning developer.

You can connect with me at any of these places (and I encourage you to, I’m always open to meeting new people!):

  • Connect with me on LinkedIn: My LinkedIn
  • Connect with me on Twitter: My Twitter
  • Follow me and see my other articles on Medium: My Medium
  • Send me an email: adam.majmudar@gmail.com

I have been researching and studying artificial intelligence and machine learning for about four years now and have gone deep into the subject. Currently, I am in a youth accelerator that is working to train the next generation of innovators to impact billions called The Knowledge Society and I have been continuing my research on artificial intelligence and other modern technologies there.

Additionally, I have helped and am continuing to help several companies implement AI solutions (soon I will be working as an intern at Dovetale, the largest influencer marketing platform in the world, working on machine learning models, data science, etc). Finally, I have also created several AI passion projects independently (you can check out some of my work here).

Through all of the time I have spent researching AI/ML, I have had my fair share of difficulties, trials, and obstacles that I had to overcome. I’ve sifted through a large portion of the online resources on artificial intelligence and have figured out through trial and error what content is the best for learning.

As a result, I decided to compile all of my experience, thoughts, and tips into one big Ultimate Guide to Becoming an Artificial Intelligence Expert. My goal here is to make all of the knowledge in the field readily accessible to everyone so that more people can learn about the technology (and possibly use it to make a difference and bring about change in the future).

Before we dive into it, I’ll quickly talk about what I am aiming to accomplish with this resource and why it can hopefully help you on your journey to becoming an expert on artificial intelligence.

What is this resource and how will it help

There are several things about this resource that I have been intentional about to make sure that it's as valuable as possible.

  1. Designed for Beginners: I have written everything with my audience in mind. I have made sure to explain everything to a level that anyone would understand, regardless of your experience coming into this.
  2. Understandable Content: I have attempted to make everything as understandable as possible, avoiding jargon when I can or fully explaining complex terms before I use them. My goal is to make all of this content accessible and easy to learn.
  3. Fundamentals Focused Content: I provide a detailed guide to understand AI, how it works, and what it can be used for.
  4. Creation Focused Content: I provide a detailed guide to learn how to create AI yourself (going into the details of learning to code + learning machine learning).
  5. My Experience & Tips: I provide tips and observations from my experience with artificial intelligence.
  6. High-Quality Resources & Guidance: I provide countless high-quality learning resources that are available online that will be the best for you to use to learn efficiently. When necessary, I also give my guidance on how to best use these resources to learn effectively. I’m also not trying to overwhelm you with external resources and am only providing content that I believe to be truly valuable.
  7. All Together & Comprehensive: One of the main advantages of this resource is that all of the information is condensed together in a convenient location. You don’t have to go searching across the internet to a million different websites to find the content that you need. Everything that you will need is either here, or linked here for you to refer to.
  8. Free (Mostly): Almost everything in this resource is free. Of course, this article itself is completely free. Almost every resource I will recommend is free as well. There are a few (very few) that cost money, but they are not necessary and are simply convenient for those that are willing to pay a small amount (I will also give tips on how to get these for the cheapest prices if you did want to purchase them).

Finally, and I want to emphasize this point:

You won’t need to know how to code or know anything about AI to get started with this resource. However, if you do already know these things, there is plenty for you to still learn.

Now that we have all that covered, we can jump into the content!

Section 1: Gaining a Fundamental Understanding of Artificial Intelligence and Machine Learning

In this section, we will be talking about the essential information you need to know about artificial intelligence and machine learning (ranging from the basics of the simplest forms of machine learning to the complexities of deep learning). We will not be covering any specifics of programming yet so that you can get a firm understanding of the topics first.

Fundamentals First

Before we get into the content in this section, I want to touch on an important mindset which you should keep in mind through all of your learning: fundamentals first.

In general, it’s good to get into a habit of trying to understand everything you will learn at a fundamental level. This will allow you to more easily understand AI, with many complex topics that you must understand thoroughly before you can fully make use of them.

By understanding the most essential details about difficult topics, you will be able to grasp more of the specifics and when it comes time to turn the ideas into code, you will have an easier time.

Having a strong understanding of the fundamentals before you go into any hands-on experience is important, especially in this area, so that you can focus on one thing at a time. Learning how something works and THEN learning how to code it rather than trying to figure out both at the same time are vastly different experiences. The latter will often be a less efficient strategy in the long-run.

What is Artificial Intelligence?

AI (we will abbreviate artificial intelligence as AI now for convenience) is a large umbrella that covers a wide array of different subjects and intersects partially with many others.

This diagram shows the complexity of all of the topics that fall under the term of AI or are partially related (don’t worry if you don’t know what some of these things are)

It’s important to keep this in mind when thinking about the term: AI applies to a large number of different fields and studies and does NOT refer to one specific algorithm or strategy.

That being said, we can generalize all AI to a specific definition which applies to everything labeled with the term:

Simplified Definition of Artificial Intelligence: Using computers to complete tasks that usually require human intelligence. Such tasks can include image recognition (which requires you to interpret what you see around you), speech recognition (which requires you to understand language), making complex decisions based on numerous criteria, and other such tasks.

This definition should also help you to grasp how broad of a subject we are dealing with. There are so many different areas of AI that do vastly different things (we will be covering all of the major ones so don’t worry if it seems overwhelming right now).

In general, people tend to view the development of AI in three stages (which are good to know for the sake of context):

  1. Narrow Intelligence: This is the type of AI that almost every (if not every) AI algorithm that exists today falls into. Narrow intelligence refers to AI that is designed to perform one specific task (no matter how complex that task is. AIs whose task is to talk to humans or to retrieve information from the internet or to play a board game are all examples of narrow intelligence.
  2. General Intelligence: This type of AI currently does not exist yet (and it might never exist). It refers to AIs that are able to perform a wide variety of tasks. In fact, they can perform any tasks that humans are capable of. This obviously requires a much more diverse form of intelligence and is much harder to achieve. It might even require the AI to be sentient (conscious and aware of themselves). However, for now, this is nothing but science fiction and a hope for the future.
  3. Superintelligence: This is a term coined by Nick Bostrom, the author of a famous book on AI called Superintelligence. He defines superintelligence as “any intellect that greatly exceeds the cognitive performance of humans in virtually all domains of interest.” Think something like SkyNet from the terminator. People frequently like to talk about this subject along with ethical questions about AI, but just like general intelligence, as of right now it is nothing but science fiction.

Knowing about these three kinds of AI can be helpful when reading about or discussing AI in various settings. Often, many of these concepts come up and it is helpful to know about what each of them are so you can get value out of the conversation/article.

How Can Artificial Intelligence Be Used?

Now that we have a general and basic understanding of what AI as a whole is, let’s look at what its useful for. After all, there’s no point in putting time into learning about this if it won’t be useful right?

As I briefly mentioned earlier, AI can be used to solve a diversity of problems in a wide array of fields.

To get a better understanding of what AI can actually do in the real world, I find that its helpful to look at a few real-world examples, so why don’t we do just that!

Example 1: Amazon’s Alexa

Alexa (similar to Apple’s Siri or Microsoft’s Cortana if you have heard of those) is a voice assistant that people can talk to. Alexa can help you with so many different things ranging from figuring out the weather to deciding which restaurant to go to to shopping online and so much more.

The coolest part about Alexa is that she (if we can call an AI algorithm that) understands human speech and speaks back to you with a human voice. You don’t have to type or anything, you can just speak out loud and Alexa will understand!

Alexa uses different strategies like voice recognition and natural language processing (we will talk about this later) to recognize and process human voice commands into understandable statements. These are all forms of artificial intelligence (they fit our definition of using machines to complete tasks that humans would traditionally perform).

Example 2: Netflix’s Recommendations

Netflix has a recommendation system that we may not always take note of when scrolling through our favorite TV shows and movies on the platform.

Netflix keeps track of the things that each individual watches and likes and they try to recommend other media that people would like based on their viewing tendencies. They have said that about 75% of media that people watch on Netflix are a result of recommendations made by the Netflix recommendation algorithm.

Behind this algorithm are various different forms of machine learning (a subsection of AI which we will talk about soon) to deduce what shows people would be interested in based on what they typically like to watch. They are designed to help users find the right content for them in the massive sea of content on the platform and ultimately make the experience better for all of the viewers. This type of technology wouldn’t be possible without AI.

Example 3: Facebook

Facebook, the massive social media platform used by billions across the world, uses AI in a variety of different ways. I will focus on two of the most notable.

First, Facebook uses AI for facial recognition purposes. Often, when you post a picture on Facebook, it will make suggestions about whose faces are in the picture. This is done using facial recognition AI (we will talk about this much later). Second, Facebook makes advertisements using AI to target ads to the best audiences. Specific advertisements are meant for specific audiences (think baby clothing advertisements for mothers) and Facebook uses AI to figure out which people are the best to show specific ads.

Example 4: AI to Detect Cancer

Now that we have looked at a couple of examples of AI being used in some of the largest companies in the world, let’s look at some examples of AI being used to solve big problems and make an impact.

Recently, AI has been used to develop a number of different cancer detection technologies. Some of them have even performed better than humans at recognizing cancer in some cases. This type of AI uses image recognition technology.

This is clearly an extremely powerful use case of AI as it has the potential to impact millions of people and save lives. This example should give you a sense of the immense power to bring about positive change that AI can have if used correctly.

Example 5: AI to Fight the Coronavirus

During the crisis that we are going through globally at the time I am writing this article (around April/May 2020), artificial intelligence is being used to work toward finding a cure for the coronavirus. There are countless companies trying to do this now. Here is a good resource if you want to learn more about how AI is being used in the fight against the coronavirus. Here is a specific example of a company using AI to fight the coronavirus.

Hopefully, all of these examples give you a sense for how widespread and powerful AI is as a whole. It has the potential to solve a wide variety of problems and can be applied to almost any field.

If you are still curious about the different uses of AI and want to learn more, I would encourage you to do research on how AI is being used in different areas that you are interested in (I bet you can find some cool uses of AI in areas you never would have expected).

If you are looking for a good resource to learn about some general areas that AI can be used in, this is a good article.

Now that we have looked at some examples of what AI is useful for, we can get into learning about the fundamentals of AI and machine learning!

An Overview of Artificial Intelligence and Machine Learning

There is a decent amount of information that would need to go into this section. Luckily for all of us, there is an EXCELLENT video that covers this topic very thoroughly. This will be the first official resource recommendation that I have for you:

Edureka Artificial Intelligence Course (You Can Access the Video Here): This course covers all of the essentials of artificial intelligence, going into all of the major types of AI and machine learning and teaching you everything you need to know about the fundamentals of machine learning algorithms. I HIGHLY RECOMMEND you watch this video (its long but well worth the time). I will also summarize some of the most important topics from the video, and I have also posted my notes on the video when I saw it for the first time for your convenience.

Tips for this Resource: There will be some parts of this video that reference code briefly. Don’t worry about these parts right now(its ok if you don’t understand them). My goal with this video is for you to just understand the concepts, so make sure you take it slow with those and make sure that you understand every detail. If you are interested in the coding part, you can come back to this video after you learn to code.

Objective: I want you to mainly focus on the earlier parts of the video, especially focusing on the first 2 hours and 50 minutes. My goal for this video is for you to get a strong understanding of the essentials of machine learning. Don’t worry about the specifics of Reinforcement Learning, Deep Learning, or Natural Language Processing if you don’t understand them as we will get more into these topics later.

My Notes from the Edureka Artificial Intelligence Course: These are the notes that I took when I watched this video for the first time. If they are helpful for your reference or to quickly refer back to, definitely feel free to use them/reference them whenever you want to.

Just for the sake of your convenience and so that you are able to come back here to get a quick refresher when you need it without having to click onto a separate page, I will give a summary of all of the most important concepts that make up the fundamentals of AI & machine learning (or ML for short) but definitely make sure to watch the video itself to get the most value.

Make sure that once you have watched the video, you fully understand all of the topics below as these are important and recurring topics in the field of machine learning.

If you don’t understand any of the topics below, make sure to go back into the video to review.

Machine Learning is a subset of artificial intelligence that allows machines to learn from experience without having to manually program everything.

Machine Learning Definitions:

These are general definitions of the terms that will be used throughout different areas of ML.

  • Algorithm: Set of rules and statistical techniques used to learn patterns from data
  • Model: A model is trained by using a machine learning algorithm
  • Predictor Variable: Feature of the data that can be used to predict the output
  • Response Variable (I will refer to this as Output): Feature or output variable that needs to be predicted using the predictor variables. In simple terms, this is what you are trying to predict.
  • Training Data: Machine learning model is built using training data
  • Testing Data: Machine learning model tested using the testing data

The Machine Learning Process:

This is the process that you need to go through every time you are aiming to solve a problem with machine learning. This is the thought process that a machine learning developer goes through and is important to learn just to get a sense of the process (you don’t need to memorize it).

  1. Define Your Objective: What are you trying to predict? What are the target features? What is the input data? What kind of problem are you facing?
  2. Data Gathering: What kind of data is needed to solve the problem? Is this data available? How can you get this data?
  3. Data Preparation: Data cleaning involves getting rid of inconsistencies in the data set in order to make it suitable for computation. You are transforming data into a desirable format
  4. Exploratory Data Analysis: Understanding the patterns and trends in the data. All useful insights about the data and correlations are understood in this stage. This stage is very important in the machine learning process.
  5. Building a Machine Learning Model: Splitting your data into training and testing data to train your algorithm. You can choose from one of the many machine learning algorithms based on what’s best for the problem.
  6. Model Evaluation & Optimization: Testing the accuracy of your model and then tuning your model and optimizing it so it can predict what you want it to accurately. After you test your model, you need to find the accuracy of your algorithm
  7. Predictions: This is the step where you use your algorithm which has already been trained to come to valuable conclusions.

Types of Machine Learning

  • Supervised Learning: Technique in which we teach or train the machines using data that is well labeled.
  • Unsupervised Learning: Technique where the machine is trained using information that is unlabeled and we allow the algorithm to act on that information without guidance.
  • Reinforcement Learning: The part of machine learning where an agent is put in an environment and learns to behave in this environment by performing certain actions and observing the rewards which it gets from those actions.

Types of Problems Solved with Machine Learning:

  • Regression: Used for making predictions where the output is a continuous value (like a number). For example, predicting the price of something could be a regression problem.
  • Classification: Used for making predictions where the output is a categorical value. This simply means that you are predicting what category something belongs to. For example, determining if a picture is a dog or a cat would be a classification problem.
  • Clustering: Used for grouping similar things or data points into clusters. This would be like getting a bunch of pictures of cats and dogs and grouping the cats together and the dogs together (the algorithm doesn’t need to recognize which pictures are cats and which are dogs, it just needs to recognize which pictures are the same type of animal as each other. It might seem similar to classification but there is a subtle difference there.
Here is a helpful chart from the video showing different characteristics about the different types of machine learning and the types of problems that they can be used to solve.

Basic Machine Learning Algorithms:

I won’t go into detail about all of these because of how many there are (it would just go on for too long). If you want a refresher on these, make sure to read through my notes or rewatch the parts of the video that go over them.

  • Linear Regression (Regression)
  • Logistic Regression (Classification — weird right… why is it called regression but is actually classification??)
  • Decision Tree (Classification)
  • Random Forest (Classification)
  • Naive Bayes (Classification)
  • K-Nearest Neighbor (Classification)
  • Support Vector Machines (Classification & Regression)
  • K-Means Clustering (Clustering)

Hopefully, after going through that material and making sure that you have a solid understanding of the key concepts, you now feel more comfortable with the essentials of machine learning. Now that you have gotten to this point, we can move on to gaining an understanding of one of the more complicated but rewarding topics in the field of artificial intelligence: deep learning.

What are Neural Networks (Deep Learning)?

For a long period of time, machine learning algorithms had a significant barrier to their capabilities. There were some tasks that were considered far too difficult for machine learning algorithms.

Tasks that required complex thinking were often considered to be off-limits for machine learning. There was something about the thought process of humans that far outperformed that of machines. This very insight was the idea behind neural networks.

The idea of a neural network is to mimic the thought process of a human brain with a machine to achieve similar results. The whole model is modeled after how neurons in an interconnected network in the human brain fire off, hence the name “neural networks.”

Neural networks have developed and become one of the most significant parts of the field of artificial intelligence which is known as Deep Learning. This is probably the most difficult part of AI to understand, so take it slow while learning about them and be patient. It might take a while to understand, but when you do, you will arguably have overcome one of the largest hurdles to learning about AI.

Here is a helpful chart showing the relationship between AI, ML, and Deep Learning

Learning the Fundamentals of Neural Networks:

In my opinion, the best way by far to gain a fundamental understanding for how neural networks function is to watch the YouTuber 3Blue1Brown’s videos on the subject. In these videos, 3Blue1Brown gives an excellent and intuitive explanation for how they work.

This video series has four parts, but you really only NEED to watch the first part, and I would recommend watching the second part as well. The third and fourth parts go into more detail (and get more complex) and the fourth part even references calculus and some simple aspects of linear algebra so they are not absolutely not necessary. If you are curious, I would encourage you to try watching however many parts you are able to, and if you can’t understand the later parts, that is completely OK.

But what is a neural network? | Deep Learning Chapter 1: In my opinion, this is the best introductory video for neural networks that is freely available on the internet (I have seen quite a few and nothing comes close). The excellent intuitive explanation really helps to make the topic understandable for anyone.

Tips for this Resource: Just because this is a good explanation, doesn’t mean its easy. Don’t worry if you don’t fully understand everything immediately, that’s completely normal. I would encourage you to take a break and come back to the video and watch it again another time. After a couple of times, you will start to pickup more and more and your understanding will start to increase.

Gradient descent, how neural networks learn | Deep Learning Chapter 2: Watching this video is not absolutely necessary but I would highly recommend it. Gradient descent is an important concept in the study of Deep Learning and getting a solid understanding of it this early on will be beneficial for you.

Tips for this Resource: See my tips for the first video. Additionally, if this video doesn’t make sense after a while, just know that the most important thing is that you have a general understanding of what gradient descent is supposed to do, and know what part of the deep learning process it comes in.

What is backpropagation really doing? | Deep Learning Chapter 3: This video starts to get a lot more complex. It doesn’t go into any specifically complicated math yet so you will still be able to follow along if you want to. I would recommend watching this video briefly just to gain an understanding of backpropagation overall. If it doesn’t make sense, don’t worry!

Tips for this Resource: See my tips for the first video. Additionally, if you don’t understand this topic, make sure that you just have a general understanding of what backpropagation is and how it comes into the neural network process (you don’t need to know all the specifics).

Backpropagation calculus | Deep Learning Chapter 4: This video gets very complicated and goes into the calculus behind backpropogation. This is not at all necessary to watch.

Tips for this Resource: I would not recommend this video unless you have already taken calculus or have a strong understanding of the subject and are curious about the topic. The video is still very well made but there is no need to watch it. That being said, if you are curious and looking for the challenge, definetly give it a watch!

Through watching these videos (however many you see fit to watch, at least including the first one), you should now have a solid conceptual understanding of neural networks.

If you have gone through all of this article above this point, I’m pleased to tell you that your fundamental understanding of artificial intelligence, machine learning, and deep learning is now far above average, congratulations!

Now that we have gone through the fundamentals, its time to get to the really cool part, the part where we get to actually build and use AI ourselves!

Section 2: Learning How to Create Artificial Intelligence Yourself

In this section, we will be talking about the steps you need to take to start being able to create artificial intelligence/machine learning algorithms yourself. Keep in mind that I have designed this with no prerequisites in mind (you don’t need to already know how to code, I will cover that). If by chance you already know how to program in Python well, then you can skip over the first few parts of this section.

Introduction to Programming

If you want to make use of machine learning yourself and be able to apply these strategies to make interesting projects or to create practical solutions, the first step you will have to take is to learn to code.

There are many different programming languages that are used today, but it is important to just start with one programming language and do everything in that language first before moving onto to another one. That way, you can get comfortable with programming as a whole and how it works.

Personally, I would highly suggest learning Python as your first programming language. The reason for this is that most of the content about machine learning that is available online today is in Python, so you will have so many online resources to work with. Also, if you have a general problem, chances are that you can search it online and results will come up where someone had the same problem simply because of how popular the language is today.

Python is also generally a very beginner-friendly programming language because of the simplicity of the syntax (the words you use to code and how the code looks structurally). However, even though Python is very beginner-friendly, it is also extremely powerful (Python is the go-to programming language for massive companies like Google, Facebook, Amazon, Netflix, and so many more).

Even if you already know another programming language, I would still suggest learning Python since it is basically the industry standard today in the field of artificial intelligence. Also, if you already know a programming language, learning this language will be much faster.

Hopefully, after reading this section you are convinced that learning Python will be the best next step for you to continue your journey in learning about artificial intelligence.

I will talk more about the specifics of how to start learning Python soon, so hold tight.

Goals with Learning to Code

Learning to code well has two major parts to it and it is important that you acknowledge both of these aspects before you start:

  1. Understanding and being able to use syntax, which is basically just the vocabulary of a certain programming language that you use to code.
  2. Being able to apply logic and critical thinking to solve a problem.

Often, when people teach themselves to code, they put a large emphasis on learning the syntax. However, the second aspect, the ability to apply logic and critical thinking to a problem is far more important than knowing the syntax.

This is why it is important to focus on having a true understanding of what everything does when you are learning to code and being able to reason through problems yourself. The farther you get into coding, the more and more important critical thinking skills will become.

Don’t get me wrong, knowing the syntax of a programming language is important, but being able to figure things out and think through problems is truly what makes you a good programmer. I want you to keep this in mind when learning to code: be intentional about both learning the syntax and improving your critical thinking skills.

Note: Later, I will offer some methods to further improve your programming skills and develop your critical thinking skills.

The Programmer’s Mindset: Figure Stuff Out (IMPORTANT!)

THIS SECTION IS IMPORTANT READ IT CAREFULLY!

The idea of figuring stuff out is one of the most important parts of being a strong programmer and is also one of the most valuable skills that you will take away from becoming a programmer (besides the massive value of the things that you will be able to create of course).

When you are learning to program, there will no doubt be numerous things that you struggle with. When you are making complex projects, your code will almost never work the first time. This isn’t something that indicates your lack of skill as a programmer, in fact, the most experienced developers make mistakes ALL the time.

The key to becoming better at programming is knowing how to figure out what the problem with your code is and then figure out how to solve it. The key here is not getting frustrated and working through any problems.

Being able to figure stuff out when things aren’t working is crucial. One of the best ways to do this is simply to Google your problems. Chances are if you have a problem with your code, someone has already had this problem before and posted about it online.

Another amazing resource to figure out programming related things (it could be problems that you are having or just any general questions about specific syntax or programming overall) is Stack Overflow. This website is a Q&A forum for developers. If you need to, you can ask a question on Stack Overflow and lots of people will likely get back to you in a timely manner.

Stack Overflow: An extremely powerful tool for you to turn to when you are having trouble coding. Save this, I promise you you will need it eventually!

Tips for this Resource: I would suggest creating an account for convenience (its free). Also, make sure that before you ask a question on there, you do research on the website to make sure that the same or a similar question hasn’t been asked before, because if you post a question that has already been asnwered, its just wasting everyone’s time. That being said, if you really can’t find something (which I would be surprised by), then by all means ask your question.

However, I encourage you to look around a lot on the website and on Google to find your problem before you ask a question on Stack Overflow because I can promise you that 9/10 times, your question or a question similar to yours will already be answered.

So to summarize, here are the two main ways that you will be figuring stuff out when you are learning to code:

  1. Search it on Google.
  2. Search through Stack Overflow, and if you can’t find anything on your question, then you can ask a question yourself.

Now that we have gone over all of the prerequisites and mindsets that you should have going into coding, let’s talk about where you can actually start learning to code!

Getting Started with Python: A Step By Step Approach

My personal suggestion to learn Python is to first take a course on Python (which I will talk about soon) to learn the basics of the language, and then gain experience by creating your own project and trying to figure things out from scratch.

To connect this with the point I made earlier, the course is where you are going to learn the majority of the syntax, whereas making projects is going to be part of where you develop on your logical and critical thinking skills. Go about both of these with intention.

Now that I have establishes these basic guidelines, I will give you a step by step approach to learning to code well with Python.

Step 1: Learn Python Syntax Through a Course

There are a number of Python courses available online which are very effective for learning the language. Currently, there are two kinds of Python, Python 2 and Python 3. Python 3 is more widely used and is standard today, which is why the most optimal path for you to take would be to learn Python 3. Unfortunately, the best Python 3 course online costs money, but don’t worry, if you want to learn for free, I have a solution.

Here are the two-course alternatives that I would suggest (depending on if you want to go for free or pay).

Option 1:

  • Codecademy Python 3 Course (Pro) — If you are willing to pay for the convenience of learning Python 3, then by all means do. However, there is a free alternative (which is slightly less convenient but still effective)

Option 2:

  • Codecademy Python 2 Course (Free) — Alternatively, you can take this course on Python 2. The thing about Python 2 is that it is almost EXACTLY the same as Python 3, with only a few key differences. Therefore, if you take this course, you can read the following article:
  • Differences Between Python 2 and Python 3 — You can read this article to learn the differences between Python 2 and Python 3. That way, with a few changes to the syntax that you use, you will know how to program in Python 3.

Tips for These Resources (Codecademy Python Courses): There are a number of things you can do to make these courses more valuable/interesting for you. First, I would suggest that when you are doing these courses, you tinker with the code as much as possible to try to figure stuff out. If you are curious about what something does, then try it and see for yourself. I encourage you to try new things because this is how you are going to both learn how to use the syntax faster and also to reason through things on your own without the guidance of tutorials.

Additionally, when a new piece of code/syntax is introduced, try to fully understand what it does (this shouldn’t be too much of a tall order) and try to think on your own what some different things you could do with it are. This kind of creative thinking also helps to train your critical thinking capabilities.

Step 2: Get Familiar With Google Colab

Back in 2017, Google released its own Python tool called Google Colaboratory. Before this tool existed, you used to have to download a lot of different software onto your computer in order to get started with Python (and some of it wasn’t the easiest to use). However, now anyone with a Google account can use Python and all of its functionalities for free.

If you don’t have a Google account already, I would suggest making one, it's completely free. (You can make a new Google account here).

Once you create your Google account, you can start making Python notebooks with Google colab. Here is a quick tutorial on how to navigate to create a colab notebook from your Google account. Here is a brief introduction to Google colab. I would suggest reading through both of these tools before continuing on.

Try to figure out how to use Google colab and do some basic things there. If you can, try to figure out how to actually write down code in a Google colab and run it. You can try to run some code from the Codecademy tutorials in a colab notebook and seeing if it works (it should if you do it right). This is a good time to train that figure stuff out mindset.

If you are confident, you can even try tinkering around with code in colab and create your own code from scratch. I would highly encourage this if you are up to the challenge.

Step 3: Come Up with an Idea for Your First Python Project in Colab

Now that you have become familiar with Google Colab, you will be able to make all of your Python projects in there for the rest of your time learning about artificial intelligence (I would suggest that you use it even after, it is a really valuable tool with the sharing capabilities and I still use colab to this day).

At this point, you should have a decent knowledge of Python’s syntax and how to use Google Colab. Now you need to develop your critical thinking skills and general ability to code by making a project.

Finding a good idea for a project can seem daunting at first. However, this is where you will be able to further train your figure stuff out mindset. I encourage you to look into some good project ideas for beginners in Python (try searching Google) and see what looks interesting to you. From there, you can try to create things on your own. I will intentionally leave you with no resources on this section so that you can figure stuff out independently.

This is important. If you really need guidance here, you can feel free to contact me, but I highly encourage you to try to figure this stuff out on your own because you will get SO MUCH more out of the experience. Also, there are so many places online where you can find some really cool ideas for projects to build.

Step 4: Build Your Project: Tips to Create Projects and Debug Code

Once you have come up with an idea for a project, you can start to dive into programming. This part can be difficult at times so I will give you a couple of tips to help you through the process. However, it is important to note that you should still be trying to figure out as much as possible in this stage. If there is some new syntax that you need to learn or are wondering if it exists, look it up. Use the resources I provided you with before (Stack Overflow especially). This is how you are going to learn the most.

Tip 1: When you are working on initially creating your project or when you come to a roadblock on how to code something, it can be helpful to write out some pseudocode on paper. This can help you to plan out the overall logic of what you are trying to create. You don’t need to write down every last specific letter, but it can help to write down the main concepts of your code before diving into the actual programming, that way you know what you are generally trying to accomplish with each line of code.

Tip 2: When your code doesn’t work properly, you will get an error. The process of trying to fix errors like this is called debugging (makes sense right? getting rid of bugs = debugging). Getting good at debugging is another one of the most important skills to focus on in coding. One tip I have for you to help you debug your code is to copy the error message that you get from your code and paste it into Google. If you do this, you will almost always get a result that helps you.

Tip 3: This one is another tip for debugging code. If your code isn’t working, try going through every part of the code that isn’t working and thinking about what each line does. By going through and mentally checking what each line of code does while looking at it, you will often notice mistakes in your code where one line of code doesn’t matchup with what you want it to.

Tip 4: This is the final tip I have on debugging code. This is more for when your code starts to get larger with different sections. This is basically a way to check if your conditional statements are going through correctly (if statements, for loops, etc.). The tip is basically to make use of the print statement.

For example, let’s say that your code is supposed to get to a point inside an “if” statement to activate some other code. You can test if your code is even getting past the “if” statement by writing something like print(“hello”) inside your “if ” statement. Then, when you run your code, you will know if it got into the “if ” statement.

This tip is a little bit more complicated and might take some time to understand. Don’t worry if it doesn’t make sense right now. Once you start making more projects, it might start to make sense and you can start using it. I promise you it is very powerful.

After completing your first project, you will have a decent understanding of Python as a programming language. More importantly, you will have built on your skills in critical thinking, figuring stuff out, and debugging your code, all of which are essential skills if you want to start learning about more difficult topics like artificial intelligence/machine learning.

Although we will now start going into coding artificial intelligence, I encourage you to keep coding your own projects. If you come up with some cool ideas for projects that you want to work on, definitely make them. The more and more you create projects (that aren’t fully tutorial based), the better you will get at programming and this will be very valuable later.

The key is to not be complacent. Don’t think that just because you have done one or two projects, you are good to go and don’t need to do more projects. You can always learn more from projects, especially from the first 3–5.

Start Learning to Code Artificial Intelligence and Machine Learning

Now that you have a strong foundation in Python and you armed with the skill set of a good programmer, you can move on to learning how to create artificial intelligence and machine learning algorithms with Python. In this stage of learning, you are going to have to rely on courses, videos, articles, and other external sources for your learning (which I will provide you with).

When learning exclusively from courses, it is easy to fall into the trap of copying code without understanding it and moving on. However, if done correctly, learning from courses can really benefit you, you just have to go about it in the right way. I am going to give you some tips on how to best learn from these kinds of courses. They are very important to internalize if you want to make the most of learning from online content (which will be the majority of the remaining learning you will be doing).

Additionally, when you finish learning with this resource and begin to learn things on your own, most of the resources available to you will be in the form of online content so it is important to get used to learning from this type of content as efficiently as possible early on.

Tips for Learning to Code From Online Content:

Tip 1: When you are learning to code through tutorials, there is nowhere online that is going to explicitly explain to you every single detail and hold your hand through the process. It’s just too tedious and doesn’t exist. However, it is still crucial that you understand every little detail of the code, because when it comes time for you to create your own projects (if you want to), you are going to need to replicate these details. Thus, I would suggest looking up every bit of syntax that you don’t understand online (you can find good information on Stack Overflow usually or the documentation for the libraries themselves) and making sure that you understand what every line of code.

Tip 2: Just like my suggestion from the section on taking the Codecademy course, I would suggest that you frequently try to change things with the code just to experiment and see what they do. Sometimes you will even figure out new things about the syntax and what you can do with it. Especially when you encounter a new function or syntax that you haven’t seen before, play with the values and see what happens. This is how you will learn.

At this point, I will recommend you a couple of options for the next steps you can take. The goal with this portion of your learning is to start learning about how to code different machine learning algorithms as well as simple neural networks (more complex forms of deep learning/machine learning will be covered later).

As I mentioned earlier, you are going to need to use courses for this purpose. There are some free options that I will touch on later, but this is the one section of the article where I think the paid option is extremely optimal and beneficial.

I’ll talk about this paid option first, I’ll tell you why I think it's worth paying for, and how you can get it for the cheapest price possible. However, if you are absolutely unable or unwilling to pay, then I will provide some free options afterward.

Machine Learning A-Z: This is the course that I personally used to learn the essentials of machine learning and the basics of neural networks. It has a massive amount of content for you to explore compared to any other course available and everything is explained very well. I can promise you that you won’t find this combination of diverse and quality content anywhere else. I can also assure you that if you are able to pay for this course, it will be well worth the investment and will help speed up your journey for learning about artificial intelligence

Tips for Purchase: The course is currently listed for $120 on Udemy at the time of writing this article. That’s not cheap. When I purchased the course, the listing price was around $200. However, don’t worry, if you go about this the right way, you won’t have to pay anywhere close to that amount. The thing about Udemy is that they often list their prices high, but they actually end up having a ton of sales with discounts like 80–90% off or even more. You can just wait for one of these (they tend to happen quite frequently, Udemy says that they happen at least 9 times a year, I think the number is actually even more) and get the course at a massive discount. I bought the course for $7 through one of these discounts, so waiting for one is definitely the strategy I would recommend if you are looking to save money.

What If You Don’t Have The Money: In the event that you are an adult who has the money to purchase this course, I would recommend doing so if you want to progress efficiently (and the investment will likely pay off in the long run if you want to get a job/study machine learning farther). However, if you are someone who doesn’t have access to money (and has to rely on a parent or guardian), I would suggest telling them why you are passionate about this and want to get the course. It is clearly a very good investment (you aren’t spending on video games or something, this is productive learning).

Tips for this Resource: In the beginning, when they install Anaconda (a Python package) and they start doing things with it, you don’t HAVE to do this. You can do all of the code that you need to in Google Colab. However, you will have to figure out how to do everything they are doing on their screen in colab (this isn’t actually that tough) so if you don’t want to deal with that then you can follow their tutorials and get Anaconda. In general, the rest of these courses are well explained, and I would continue to apply the strategy of trying to figure out what everything means for yourself.

Finally, one last important thing: you can skip around in the course if you see something you are interested, but DO NOT skip over the first couple of sections. The introductory portion and the sections on data preprocessing are absolutely essential. Also, I would generally recommend doing the course in the order it is listed.

Again, I would highly recommend getting the course above (using the tips I suggested) because the investment is well worth it. That being said, if you really are unable to or don’t want to, I will propose some alternatives for you (these alternatives are also really good, and are still among the best courses out there. You will still learn a lot from them. The benefit of the course above is how convenient it is/how much time it will save you. But don’t worry, you will still be able to learn most of what you need to if you can’t get it).

Udacity Introduction to Machine Learning (You Can Access the Actual Course Content Here): This course is completely free and gives great tutorials on how to program the different machine learning algorithms in Python. It also has a good amount of content for you to go through and covers a lot of important topics in machine learning, plus you will come out of the course with several cool projects. In my opinion, this is the best free machine learning course online (and it is better than a lot of the one’s that cost money too!)

Tips for this Resource: All of the code that they teach is done through videos. Therefore, I would suggest pausing the videos frequently when you are coding to try to understand the code. Also, make sure to follow along with the tutorials and make the code yourself in Google Colab!

Objective: Learn about all of the different machine learning algorithms in detail and be able to create and use them yourself in Python. Focus on trying to understand all of the new syntax as well as the algorithms themselves and how you can use them.

After completing that course on creating the essential machine learning algorithms on Python, you can move onto the following free course to learn how to create neural networks in Python.

Udacity Introduction to TensorFlow for Deep Learning (You Can Access the Actual Course Content Here): This free course teaches you to use a famous Python Deep Learning library called TensorFlow (this is pretty much the industry standard for Deep Learning) so this is very valuable. The content is also explained well and you will gain valuable knowledge and skills from this course.

Tips for this Resource: See tips for previous course (Udacity Introduction to Machine Learning). Additionally, this course goes above and beyond and talks about more complex topics like Convolutional Neural Networks (CNNs) and Recurrent Neural Networks (RNNs). Feel free to do these tutorials as they are well made, but don’t worry if you don’t fully understand them, I am going to talk about them more later.

Objective: For this course, your main focus should just to be to get familiar with TensorFlow and how to use it/what it does, and then learning how to create a simple neural network in Python and understanding everything that goes into that process.

With a combination of the courses above (if you followed my suggestions), you will have a great understanding of how to program different machine learning algorithms in Python including basic neural networks! Now you are getting to the point where you are starting to become a more experienced machine learning developer.

Once you have completed everything that you need to above, you are ready to move onto the third and final section of this resource where we do a deep dive into the specifics of deep learning and other machine learning strategies that we have not yet covered.

Section 3: A Deep Dive on Machine Learning and Deep Learning

This section is going to be more of an open learning resource where you are free to explore. For the most part, these topics do not depend on each other (although some may briefly reference each other, in which case you can refer to other sections first). You are free to explore these sections based on your own interests. I will also be providing less directed guidance in these sections as far as providing you with an outlined path (because you are better off learning directly from educators on these more complex topics).

In this section, I will give a brief introduction to each topic, and then I will provide you with the most valuable resources for learning about the topics and how to best use them. Before you go through this section, be sure to check out the tips I have already given on how to learn from online resources most effectively.

Additionally, once you complete the resources in a section, I would suggest trying to find a project that you would like to work on (using some of the same strategies for coming up with a project idea that I detailed before) that uses the new algorithms that you learned about to reinforce your understanding.

Quick Tip: I will link to a couple of articles on Medium in this section. When you click on some of them, it might say that you are unnable to view them because you have viewed the maximum number of Medium articles for the month. You can get passed this paywall by just copying the link of the article and pasting it into an incognito tab if this happens to you.

Natural Language Processing (NLP)

We haven’t covered much about NLP yet, but I personally find it to be one of the most interesting and powerful forms of AI.

Natural Language Processing, or NLP, is used to process verbal data into a format that machines can make sense of (and then often they can use with basic machine learning algorithms/neural networks). The reason that NLP is so powerful is that it enables technologies like speech and voice recognition, chatbots, analysis of text data online, and so many more useful applications.

It is also one of the more unique forms of artificial intelligence compared to some of the others and it might be a bit refreshing to venture a little bit away from the traditional feeling of machine learning for a bit.

Now that you have a very surface-level understanding of NLP, here are some resources for you to dive deeper into the subject:

Your Guide to Natural Language Processing: This article provides a good introduction to what natural language processing can do. It also goes over all of the most important concepts of natural language processing that you will need to know. The article is straight forward and well written and the concepts are explained in a way that is intuitive.

Now that you have a better understanding of the fundamentals of natural language processing, you can move on to putting your knowledge into practice creating actual NLP algorithms in Python.

Sentdex NLP with Python Series: This amazing series on natural language processing made by the YouTuber Sentdex (by the way this guy has amazing tutorials on a lot of AI topics and his channel is worth checking out) goes over how to code almost everything that you would want to know about the essentials of NLP. The course is comprehensive and everything is explained in a way that is easy to grasp.

Reinforcement Learning

This simple cartoon captures all of the most important aspects of Reinforcement Learning

As we briefly talked about much earlier, Reinforcement Learning is the type of machine learning where an agent is put in an environment and learns to behave in this environment by performing certain actions and observing the rewards which it gets from those actions.

This area of artificial intelligence is extremely powerful because it means that the algorithms are able to figure things out for themselves entirely from scratch. This can create some really crazy and impressive results. Check out the example of Reinforcement Learning below which turned out to be one of the coolest AI experiments done by OpenAI (Google’s AI division).

This video gives an amazing example of the potential of reinforcement learning.

Now that we have briefly touched on what reinforcement learning is, here are some resources for you to dive deeper into the subject:

Khan Academy’s Introduction to Matrices: This video will teach you the basics of matrices. You will need to know these basics to learn about Reinforcement Learning because the topic involves matrix multiplication. This topic is actually relatively simple and Salman Khan does a good job of breaking it down in this video.

Edureka Artificial Intelligence Video: Now is a good time to go back to this video and watch the section on Reinforcement Learning (the concepts are explained quite well). The section is at minute 2:56:40 of the video (the link should lead you to the proper time).

A Brief Introduction to Reinforcement Learning: This article goes more into some of the technical details of Reinforcement Learning including reward functions and some other slightly more complex topics. However, it is still relatively simple and easy to grasp.

After going through the resources above, you will have a solid understanding of the fundamentals of reinforcement learning and you will be ready to start practicing reinforcement learning by coding in Python.

Reinforcement Learning from Scratch in Python with OpenAI Gym: This tutorial discusses all of the essentials of reinforcement learning again and then goes into a specific example with code using a Python library created by Google’s OpenAI called the “OpenAI Gym.”

Sentdex Reinforcement Learning Series: This video series starts with the basics of reinforcement learning, and then goes into the details of more complicated strategies like Deep Q-Learning, all while giving coding tutorials along the way. You will cover simple Reiforcement Learning using Q-Learning as well as more complex Reinforcement Learning using neural networks.

Note: In order to do the second part of these tutorials on Deep Q-Learning, it will be helpful if you have already taken the courses I recommended on TensorFlow and you have a solid understanding have how to program neural networks.

Convolutional Neural Networks (CNNs)

Convolutional Neural Network: A Step By Step Guide - Towards Data ...
The basic process of a CNN (this will be explained in the resources I provide you). The idea here is that it is trying to recognize what is in the image by using an altered form of a neural network.

Convolutional Neural Networks, or CNNs, are neural networks used primarily for recognizing features about certain sets of data. More specifically, the majority of CNNs are used for image recognition purposes. This is the type of Deep Learning that enables facial recognition, image recognition, and numerous other visual features of Artificial Intelligence.

Now that you have a surface-level understanding of what CNNs do, here are some resources for you to dive deeper into the subject:

Khan Academy’s Introduction to Matrices: This video will teach you the basics of matrices. You will need to know these basics to learn about Convolutional Neural Networks because the topic involves matrix multiplication. This topic is actually relatively simple and Salman Khan does a good job of breaking it down in this video.

Simple Introduction to Convolutional Neural Networks: This is a good starting introduction to CNNs. It will give you a good overview of what they are and what you are trying to accomplish with them.

Tips for this Resource: Focus more on understanding what CNNs are and what they are intended to do then on the specifics of how they work. The video that is coming up next will do a very good job of explaining the details so my goal with this article is just to give you an introduction to the topic.

A Friendly Introduction to Convolutional Neural Networks: High-quality video explanation and visualization of CNNs. This will give you a great understanding of the topic and I would highly recommend watching it if you are interested in learning more about CNNs. In general, this video creator (Luis Serrano) makes really high-quality content (you will see that I reference his video on RNNs as well).

Now that you understand the technical side of how CNNs work, you can move on to learning how to create them in Python.

Convolutional Neural Networks for Beginners with Python and Keras: This article goes into deep detail again about the specifics of CNNs in the context of a specific example (the MNIST numbers dataset). If you want to, you can skim through this part as it is mostly a refresher of what you have already learned. The coding portion which will be valuable for you is in the bottom half of the article. This is where you want to look at the code and see what everything is doing.

Sentdex Convolutional Neural Network Tutorial: In this video, Sentdex (the high-quality youtube content creator for AI) walks you through a specific example of a convolutional neural network and explains all of the code. Keep in mind that you should know TensorFlow before going into this video.

Recurrent Neural Networks (RNNs)

This is a simplified example of RNNs involving food that you will learn about in one of the videos below.

Recurrent Neural Networks, or RNNs, are neural networks used primarily for any problems or situations that involve temporal data (data that is dependent on time or involves time in some way, one example of temporal data would be stock prices, which change over time. Stock price graphs are also represented by individual points that connect a given stock price to a specific time).

They involve looping traditional neural networks so that the output of a neural network feeds back into its input (this might seem confusing now but it will make sense soon). They are designed to more accurately emulate how humans thing since humans tend to take context into consideration when making decisions.

Now that you have a surface-level understanding of what RNNs are and what they are used for, here are some resources for you to dive deeper into the subject:

A Friendly Introduction to Recurrent Neural Networks: This video by Luis Serrano gives a great understanding and intuition of RNNs without getting too complicated or going into specific mathematical details. This is a great introductory video on the topic.

A Simple and Intuitive Guide to RNNs: This guide gives an understanding of RNNs at a more detailed and mathematical level (it references calculus at some points). If you are not brushed up on this level of math, there is no need to worry because you don’t need to know all of the specifics in order to make an RNN yourself.

Now that you have a fundamental understanding of RNNs, you can get into creating them yourself in Python.

Learn Recurrent Networks by Example in Python: This one gives both a solid explanation of RNNs and an example which you can recreate yourself using Python. I would suggest learning a bit about natural language processing (NLP — I talk another section below) first though before going into this as some NLP is briefly used.

Sentdex Recurrent Neural Networks Tutorial: As expected, we got a Sentdex tutorial on creating RNNs with Python to finish off this section. High quality as always (what would a section be without Sentdex?)

Autoencoders

Autoencoders are a cool form of deep learning which can be used to manipulate images in different ways to get some useful results (in this picture, an autoencoder is used to get distracting dots on the images on the left to make the images clearer.)

These neural networks are very similar to Convolutional Neural Networks in that they also mainly deal with images. The main difference is that CNNs usually take entire images as inputs, and then make predictions as outputs (predictions about the image themselves, like what the images are pictures of or specifics of the image) whereas autoencoders take images as inputs and output images as well. This might seem confusing now but it will be explained shortly.

Autoencoders are useful for performing different functions on images like removing specific parts of an image, removing noise from an image, or doing one of many other various tasks.

Now that you have a surface-level understanding of what an autoencoder is, here are some resources to dive deeper into the topic:

What is an Autoencoder?: This brief video gives a good basic understanding of what an autoencoder is and what the purpose of it is. It is very surface level and is purely introductory.

Autoencoders Made Simple: This video is slightly longer and goes a little bit more into detail about how autoencoders work and how they are different from convolutional neural networks. It is still relatively surface level and easy to understand.

Now that you have a stronger fundamental understanding of what autoencoders are, you can start to create them yourself in Python.

Create an Autoencoder with Keras: This tutorial has a lot of information on different kinds of autoencoders and how to program them. You will have to go through this at a good pace for you to make sure that you understand everything that is going on here.

Autoencoder Tutorial: Machine Learning with Keras: Here is another tutorial on creating autoencoders with Keras. This one is a video so it might help some people who learn better when someone can explain something. The video also has some visuals to help you understand the code. One thing to note is that the person in the video doesn’t explain all of the code in detail so I would try to figure out what everything is doing to try and test yourself (it might be difficult at first!)

Generative Adversarial Networks (GANs)

Here are some faces generated by GANs. Only the two photos in the left column were real photos that were actually taken. The remaining photos were completely generated by an AI algorithm that referenced those first two photos!

Generative Adversarial Networks or GANs are one of the latest developments in artificial intelligence (they were introduced by a man named Ian Goodfellow in 2014).

They are also one of the coolest parts of AI in my opinion. GANs basically enable AI to generate completely new creations in various areas and they have been used to create unique pieces of music, artworks, and even to create human faces of people that have never existed before (see the picture above!).

Now that you have a surface-level understanding of what a GAN is and what it does, here are some resources to dive deeper into the topic:

What are GANs: This quick four-minute video gives a brief introduction to the technology and why it is useful. It is still very surface-level but is a good introduction

GANs — How and Why They Work: This video uses a great analogy to make how GANs work easier to conceptualize. It also does a good job of explaining important terms and giving a good fundamental understanding.

Now that you have a stronger fundamental understanding of GANs, you can get into creating your own with Python.

Creating a Generative Adversarial Network with Python: This tutorial shows how to create a GAN with both the discriminator and counterfeiter. You will be using the MNIST numbers database and the goal of the GAN will be to generate numbers that look like they were handwritten. This is a long Python tutorial, so make sure to take it slowly and try to understand what is going on at each step.

Sentdex Experimenting with Generative AI: Here is another video of Sentdex where he is experimenting with GANs. It isn’t as much of a direct tutorial but it is certainly interesting to see what he comes up with. This might not be as helpful as far as actually learning the coding portion but it is still helpful to understand exactly what is going on and what the goal is.

Where to Go From Here

If you have gone through all the content above that you are interested in and you have a strong understanding of how each topic works and how to create it in Python (don’t trick yourself on this, make sure you actually understand everything), you are now ready to move on to continue your learning more independently.

The information on this resource is by no means an exhaustive list of all the important topics in AI. In fact, it is more of a guide to building a strong foundational knowledge of the field so that you can go out and learn more about specific topics that you are passionate about (there are so many revolutionary developments in the field being made on a regular basis).

I encourage you to dive deeper into any of the subjects that you found interesting, as each topic above has so much more to it to learn about. This is where you can start trying to find articles, videos, tutorials, and other content to teach yourself and figure stuff out.

Before we close, I’ll leave you with several tips to help you continue learning about AI on your own:

Tip #1: When learning on your own, if you are trying to learn the basics of a new topic, avoid long research papers when you can. They tend to be very technical and often boring. Instead, stick to sources that give a more simply described explanation of concepts and that are more concise. They are often more interesting to read as well.

Tip #2: If you do want to start diving into more technical and difficult content, then research papers will probably be your best option. Take it slowly and try to understand everything that is going on. Don’t just read through content for the sake of going through it, think about what you are learning/gaining from it.

Tip #3: The main block to learning about more complex topics at times will be some of the terms that don’t make sense or are confusing. That’s why I would suggest getting into the habit of stopping any time you see a word you don’t understand and looking it up to figure out what it means and ensure that you understand it.

Tip #4: Every time you learn about a new topic, try to find a project to work on to solidify your understanding. When learning about AI/learning how to implement different algorithms with code, its hard to actually retain the information until you actually put it into practice. Even when you do fully understand something conceptually, putting it into code is a completely different and equally important experience.

Since you now have a strong understanding of AI (far better than average), you have a couple of options to take as far as where you can progress from here.

Note that the path you choose is completely based on your personal preference and what you want to achieve. I would personally suggest doing a combination of all of these strategies to become more well rounded. Also, you don’t need to do any of these things exactly, these are just suggestions and guidelines. Here are a few of the most common areas to focus on:

1. Dive Deeper Into More Technical Topics

If you are interested in learning more about the technical aspects of AI, there are many more topics to explore and much more depth and technicality to learn about. There are so many topics that we have not yet touched on that are worth exploring (like GRUs, LSTMS, variational autoencoders, transfer learning, and so much more).

If you want to continue learning this way, I would suggest finding topics that you want to learn about and researching them through more detailed videos and research papers.

Last year, one student at The Knowledge Society (the same human accelerator program that I am in this year) decided to take this approach and resolved to read one research paper every day for a month. Below is a link to all of the resources that he read and his tips on how to read AI research papers effectively:

Liam Hinzman’s Paper a Day: In this resource, Liam Hinzman, a student and highly experienced machine learning developer, details some of the best strategies to getting through and understanding complex research papers. Additionally, he references all of the research papers that he read in his month reading AI research papers so that you are able to read them as well (if you wanted to read some of them).

2. Focus on Content Creation

If you aren’t as interested in learning too many technical details and are more interested in creating AI algorithms yourself, you can focus more on creating projects. If you are looking to get an internship or job based on your knowledge of AI, this strategy will be beneficial as the best way to prove your skills in these topics is to have a portfolio of unique and creative projects.

There are plenty of new topics to learn about and create projects with, and there are also good lists online of potential AI projects to work on creating.

If you need inspiration for some projects to work on, I would suggest researching different potential AI projects, making projects based on new topics you learn about (could even be from topics you learned about through method 1), or checking out some of the AI content creators on YouTube.

Sentdex: Sentdex has plenty of AI and NLP projects and tutorials to go through on his YouTube channel to recreate or get inspiration from. He is also excellent at explaining things and his channel is definitely worth exploring.

Jabrils: This creator is less technical, but some of his projects can be entertaining to learn about and they can give you inspiration for what you might want to work on for your projects.

3. Learn About the Intersection Between AI & Another Field

One of the reasons that AI is such a powerful technology is that it is easily applicable to so many other fields. AI can be found all across the world solving problems in a wide variety of industries. That’s why learning about how AI intersects with another field can be incredibly interesting (and it can be a breath of fresh air from learning about AI and coding for weeks).

Some of the most interesting fields to look into in conjunction with artificial intelligence are brain-computer interfaces, quantum computing, and genetic engineering. In these fields, breakthroughs with AI are constantly being made and they have the potential to make massive progress in solving problems.

Hopefully, with these strategies, you are able to continue learning about artificial intelligence and advancing your skills in the field!

A Quick Closing Note

Looks like you have gotten to the end of this resource! I guess that means you either scrolled all the way down here or you have completed a lot of the content up to this point. Either way, I truly hope that this resource was valuable to you and I hope that it helped you to further your progress toward your goals!

If you thought this resource was helpful for you, or think that anyone might get value from it, I encourage you to share it with others and help them to learn about this powerful technology. I would greatly appreciate if you were able to share this on any network (Twitter, LinkedIn, Facebook, etc.) or just share it with a couple of people!

Here is a link you can use to share this article to ensure that it will be free for everyone that views it: https://link.medium.com/Mkq88OjJ65

Before I end, I want to thank Aaron Lewis, Sabeeh Hassany, and Veda Bhattaram for helping me to edit this resource and make sure that it is as valuable as I can make it. They’ve helped me to tailor the content and determine how to structure this resource and I’m grateful for their help!

Now before I finish this off, I will leave you again with a way to contact me in case you have any questions, comments, or concerns (that way you don’t have to scroll all the way to the top.).

Contact Me

In case you want to contact me for any reason (questions, comments, concerns, or just to get in touch), here is all of my contact information for your use:

  • Connect with me on LinkedIn: My LinkedIn
  • Connect with me on Twitter: My Twitter
  • Follow me and see my other articles on Medium: My Medium
  • Send me an email: adam.majmudar@gmail.com

--

--