Okay? And
when we write that algorithm we have to reason about it's correctness,
we have to reason about it's computational requirement.
How fast, how slow, is it feasible to run on, on such a graph?
This is a graph with two, four, five nodes.
What if someone has curated the entire Facebook network?
Today Facebook is, is estimated to have over a billion nodes.
If I come up with an algorithm,
is it going to run on a graph with billion nodes?
If not, I have to start thinking about these things.
Okay? So, the third
step is about developing the algorithm to solve the problem.
The fourth step, after we have designed the algorithm, made sure it is correct,
it is efficient and so on, we have to implement it.
Right? So in this course you
will be implementing algorithms and python.
And when we do the implementation it's interesting because going from
the algorithm that we developed in the third step to the implementation is
not a simple translation.
Because you have to be very careful.
The algorithm can be correct, you might make mistake when you,
when you are writing the code.
The algorithm can be efficient and you might turn it
into an inefficient implementation when you write the code and so on.
But also at the same time there is a positive side for
going from the theoretical description of the algorithm to the implementation,
is that you can even use your programming skills to make the implementation even
much faster than the theoretical guarantees of the algorithm.
Okay? So going from the algorithm to
the implementation is not a simple task of someone, you know, knowing the syntax of
a programming language and translating the algorithm into it.
No, you have to use some skills to make sure that you implement the algorithm
correctly, but you also try to make it even more efficient.
So this is the fourth step of writing the program.
Then the fifth step,
which is the final step, is that I need to remember where did this all started.
It started from a, a social scientist asking me a question.
So now that I have written the computer program, I will take that program,
take the data set that the social scientist has,
analyze it using the program, and then give back the scientist the answer.
So in this case for example I might say 78%, okay.
What does that number mean?
I'm telling the social scientists that in 78% of the cases where a is a friend with
b, b is a friend with c, you also have a and c friends, okay?
So this is algorithmic thinking in my, the way I define it for
this course and they way we'll be using it in this course.
Again, it's five steps.
Understanding the problem is the first, formulating the problem is the second,
developing an algorithm is the third,
implementing the algorithm is the fourth, and then the fifth one is running it and
the data and answering the original question.