Everyone and welcome back to this class
this is a short lecture I like to give in each of my courses on how to succeed in this course.
This is very important to talk about because you're learning a difficult technical subject.
It's easy to get stuck.
Or even worse give up because you're just not getting things.
Maybe there are too many gaps in your knowledge so you can't connect the dots.
Maybe some assumption you've made is incorrect.
And keep in mind there is a lot of material in this course.
It can be overwhelming if you're new to this field of study and you're not familiar with the conventions
and the typical patterns we use.
Now if you've already seen this lecture in the past you're more than welcome to skip it if you remember
what's in it and you're already using these guidelines.
The first guideline is this.
Remember that I want you to succeed.
In fact that's why I'm giving you these guidelines in the first place.
So if at any point when you watching these lectures and you become confused just ask on the Q&A.
Also known as the discussion forum Typically I respond within hours sometimes even within minutes if
I happen to be on the site and I see a notification.
I answer any and all questions.
So even if you think it's stupid just ask.
Anyway one example I get from time to time is where do I get the code for this course.
And of course my answer is typically Well it's in a lecture called where to get the code for this course.
At the end of the day no one cares if your question was trivial or silly.
If it's something keeping you from progressing in the course I want to answer it.
Now Very rarely I get people saying well I was so confused that I couldn't even think of the right question
ask and this is where you have to take some responsibility for your own learning.
You have to ask yourself what did the instructor assume I know that I didn't actually know.
Maybe I can look into those things and that will help me formulate a question.
Maybe there's some background knowledge I'm missing a lot of people like to have exercises to practice
when they're taking a course the active thinking of the right question to ask is itself an exercise.
It might not be the type of exercise you thought you'd be doing but in many ways this is more profound.
This is an exercise that requires you to think and to change how you think and ultimately that is the
best value you can get out of course.
Speaking of background knowledge this is one of the most important guidelines in this lecture.
You may have noticed that in the course description I've listed some prerequisites or in other words
things you should know before starting this course.
Now you might wonder why do I ask you to know these things.
Why don't I just teach them in the course and while we do review some topics in this course it's not
the focus.
There is such a wide variety of students in this Course students from almost every country in the world.
Students of all ages students of all backgrounds.
What does this mean.
That means let's review for one person is going to be totally new for another.
Some people are going to tell me they don't know calculus.
Some people are going to be very far behind with their Python programming skills.
But if we start teaching Python programming skills other people are going to say hey why are we doing
Python isn't the topic of this course deep learning.
And I tend to agree that we should stay on topic.
So how can we reconcile this well it doesn't make sense for me to give you an entire computer science
education in this one course because a lot of that would be irrelevant for a lot of people.
The only logical thing to do is for all of us to meet at a common meeting point.
How is that point defined.
Well it's defined by the course prerequisites.
In fact they are so important that in certain instances I've listed the cause prerequisites twice just
in case you missed it the first time.
And I'm also reminding you now for good measure.
Now one pitfall is that people sometimes assume they know things that they don't really know.
So if you took calculus 20 years ago and you got a C and you skipped class and the times that you didn't
show up for class you were sleeping well probably you don't know that much calculus.
But remember I want you to succeed.
I want you to be able to learn this material.
I can point you to resources where you can pick up this missing background knowledge but the key is
you have to ask.
In some cases there are certain places where I'm not allowed to post certain links so we have to be
mindful of the rules of the platform we're using.
Now occasionally people ask me Well why don't you just teach a course for pure beginners Why don't you
teach these courses in such a way that they don't require lots of math and lots of prerequisites While
I don't want to turn this into an easy beginner's type of course because for one that's not what I'm
interested in personally.
And number two don't forget that this is State of the art stuff.
State of the art generally isn't easy and if it were easy that would mean everyone is doing it.
And if a thousand other people can do the same thing as you well what's a potential employer going to
think what are your chances of getting that job when all 1000 of you have the exact same skills.
So we don't want skills that are easy to get.
We want skills that are hard to get skills that puts you at the top of your game skills that not many
people have.
If I'm hiring someone I want the guy who stands out not the guy who says the same thing as everyone
else.
Finally the final guideline for how to succeed in this course.
I mentioned earlier that there is a lot of material so much that it can be hard to keep track of.
In addition to taking your own notes and doing all the derivations yourself how can you be absolutely
sure you're understanding this material.
I would in fact consider this even more important than the derivations.
Not everyone is going to be a pro at math so it's understandable if you want to skip a few steps.
Sometimes it's possible to compartmentalize some concepts or delegate learning them for some other time
but still understanding the high level picture and how it fits in with everything else.
What you cannot skip is the implementation.
Implementing these algorithms in code is the real test for whether or not you understand the material
and this is not about reinventing the wheel or that you shouldn't roll your own whatever because someone
else out there can do it better than you.
That is a software engineering principle not a principle of learning in production.
You don't want to write your own hash map or your own string class.
And yet what do we usually do as an exercise in a typical intro to computer science class where we do
precisely that.
We implemented hash maps and we implemented strings.
And why do we do this.
Because we want to have a better understanding of how these things work.
If you make an assumption that's incorrect while your code is probably just not going to work merely
using a hash map and using a string only gives you a very superficial understanding that's beginner
stuff that's stuff everyone knows that's not stuff that's going to help you stand out from the competition.
And it's true that you'll never use your own homemade hash map of your own home made string in any code
you write.
Unless of course you are a professional that focuses on that sort of thing.
They'll probably be inefficient and they'll probably have bugs but that's OK because you're not doing
it to make it perfect.
You're doing it to learn.
You'll notice that the general pattern that this course follows is that we always discuss theory and
then we implement that theory in code.
So we're always going from theory to code implementing everything that we learned.
If you can try to implement something before watching the coding lecture in the appendix I have a lecture
called How to code by yourself.
That goes much more in-depth into this topic along with multiple strategies for how to approach implementation
exercises.
So to summarize these are the guidelines I think are going to help you succeed in this course.
Number one make generous use of the Q&A even when you can't think of the right question ask.
Number two make sure you meet the prerequisites to this course.
If you're not sure what they are or you're not sure how the guideline number one.
Number three try your best.
Implement everything we learn.
This is the true test for whether or not you understand something.
Remember that it's perfectly normal to get stuck once in a while.
I get stuck all the time when I'm learning.
That doesn't mean I'm not smart.
Nor does it mean the book or video I'm learning from is bad.
It means that there is a disconnect between what the author believes I knew and what I actually know
and as a learner I do my best to close that gap a good skill to have is learning how to compartmentalize
concepts.
So here are the things I understand here are the things I don't understand but here are the things I
understand about the things I don't understand.
And these are the holes.
So you know what you're missing and you know where they fit and you can work to fill in those gaps over
time.
One thing I've been doing quite a bit recently is adding review lectures to my courses.
These are meant to teach you everything from scratch since that's going to take you a long time but
they are meant to help you recall certain things you may have forgotten.
So if you have an idea for a review lecture that you'd like to see added to this course please feel
free to make a suggestion using the Q&A.