Transcripts
1. Course Description: Hello there. Now that you have started, the second part of
the introduction, recurrences is a short
overview of what you can expect from this course and
what skills you need to have. This course does not have any special
requirements and can be taken by anyone before prior
experience in programming. It is more about
problem-solving in general. So even if you don't apply the
strategies in programming, you will still be able to apply them in your
day-to-day life. We will first introduce
you to the importance of problem-solving and also
the process behind it. Afterwards, you will learn some general
problem-solving strategies, which will make not only
your day-to-day life, but also your future
developer life. Much easier. After learning some strategies, we will encounter some problems where we have to apply them. In the last chapter, we will
then have a look at how problem-solving in general
is related to programming, followed by a short
summary of everything.
2. Why Problem Solving?: Why problem-solving? Ever since mankind has existed, there have always been problems and obstacles to overcome, to survive harsh
living conditions like fighting dangerous animals, humans scattered in groups to get better access
to food and water, rebuild societies and empires to protect people from diseases. We develop drugs. As you see, it's in the nature
of humans to solve problems and make their
life safer and easier. However, it also serves
as the foundation for continuous improvement,
communication and learning. For example, you missed the
bus and you really need to go to meet your friends at the stadium. What
do you do know? You could wait for the next bus, walk to the stadium if
it's not too far from your place or just call
a friend to pick you up. As you see, there is no
right way to solve problems. So in order to understand
how to solve problems, it might be useful to know what a typical problem-solving
process looks like.
3. The Process of Problem Solving: The Process. Problem-solving
is the process of observing what is going
on in your environment, identifying things that could
be changed or improved. Diagnosing why the current
state is the way it is, and the factors and
forces that influence it. While also developing approaches and alternatives to
influence change. Deciding which
alternatives to select, acting to implement the changes, and observing the impact of those actions in
the environment. Well, since then was a pretty long and rather difficult definition
of problem-solving. How about dividing
it into seven steps? Number one, to find the problem. Defining the problem is the first and most important
step in problem-solving. This step involves
gathering information and clearly defining the problem
you're trying to solve. It's important to be specific about the
issue you're facing, what its impact is, and also with effects. We should also consider
any constraints or limitations that might impact your ability to
solve the problem. Number to define the goal. Once you have
defined the problem, you need to define your
goal or objective. This step involves
asking yourself what you want to achieve
by solving the problem. Your goal should be specific, achievable, relevant,
and also time-bound. Defining your goal hips
to stay focused and motivated throughout the
problem-solving process. Number three, clarification. Now that you know
what the problem is, you have to think
about what data is available or needed to fully
understand the problem. Are there any
additional resources required to clarify the problem? Is it a top priority to solve the problem at
this point in time? For example, imagine you're on a vote and you have a box full of fruits that
you want to sell. Now you discover that
the boat has a leak. But on the other
side of the boat, you can see that the fruit box almost falls into the water. What do you do? Safety both from sinking
or save to fruit box? Which of the problems
as a higher priority? Number four, identify
the root course. Identifying the root cause is critical to solving the
problem effectively. This step involves
digging deeper to understand the
factors that contribute to the problem and figuring out what needs to be
addressed to solve it. For example, you could use
techniques such as the Five Whys to identify the
underlying cause or causes of the problem. To use the Five Whys methods, you have to start by
stating the problem and then ask yourself why
the problem occurred. You then use the answer
to that question to ask another why
question and so on. Until you have asked
why five times. With this method, you can often uncover the underlying
cause of the problem. To better understand the
five whys techniques, let's go through an example. Imagine to delivery of a
package to a customer was delayed by using the
Five Whys technique, we will start as follows. Why was the package
delivery delayed? Because the package was
not shipped on time. Why was the package
not shipped on time? Because the shipping
label was not printed. Why was the shipping
label not printed? Because the printer
was out of ink. Why was the printer out of it? Because it had not
been restocked. Why had to print are
not being restocked? Because the person
responsible for restocking the
printer was out sick. As you see in this example, we were able to identify
the root cause of a problem by simply asking
why questions multiple times. As children, we naturally ask why questions to understand
the world around us. But as we grew up who become more focused on
rules and deadlines, and we stop asking why. This can lead to surface
level solutions only address the symptoms of a problem by simply using the
Five Whys technique, we are able to tap into
our natural curiosity and problem-solving
abilities to identify root causes and develop
effective solutions. Therefore, let's start
asking why again. Number five, action plan. After all these steps, you now need an actual plan. Think about it. If you
know what the problem is, how it this course
and what the goal is. The rest should be doable by
simply creating a list of actions required to address the root cause and
solve the problem. For this, you should consider the impact of each
solution on stakeholders, the resources required to
implement each solution, and to potential risks and
benefits of each option. Since there are multiple
ways problems can be solved at it usually takes time to
find the best action plan. Will show you in the next
chapter how to come up with an ideal plan with the help
of some simple strategies. Number six, execute
and evaluate. With your action plan in place, it's time to put it into action. This step involves implementing the solution and
monitoring its progress. You should get a feet thick and evaluate the effectiveness
of the solution, making any necessary
adjustments along the way. This step requires
a willingness to be flexible and adapt to
changing circumstances. Number seven, improve
continuously. Problem-solving is
an ongoing process and there's always
room for improvement. This step involves
reflecting on what you have learned and continuously
improving your approach. You should document your
findings and apply them to future problem-solving
efforts to achieve better
results over time. Now that we know the
Process of Problem Solving, How about trying to solve one?
4. The story of the cat, bird and corn: Problem-solving strategies tackle problems the
correct weight. As you progress
through the problems, you will notice that
although the problems at first look completely
different from each other, certain patterns will emerge
in the approaches we take. This is great Since this will allow us to approach any problem confidently without the need of having extensive experience
in that problem area. So let's get started. The story of the
cat, bird, and corn. You might have
heard, will discuss this or similar riddle about the farmer who needs
to cross a river. The riddle is about
the following. A farmer must cross a
river with a cat, bird, and the second corn
farmer has a boat, but it can only fit the farmer
and one of his free items. Unfortunately, the cat
and bird approve hungry. If the cat is left alone
with the bird, deleted. Similarly, if the bird is left alone with
the SEC of corn, how does the farmer cross
the river with everything? If you ever encountered this riddle in one
or another way, think about the solution. If not, pause the video for a few minutes and try to
solve it on your own. This riddle is hard for many people to
solve on their own, at least before the hint. The reasoning usually
goes like this. To get everything
to the foreshore, the farmer will need to
make multiple trips. If the farmer took the
cat on the first trip to bird would be left with the SEC of corn
that would eat it. Likewise, the farmer took the sake of pond
on the first trip, the cat, it could be
left with the bird, and the cat would be the bird. Therefore, the farmer
must take the bird on the first trip. So far so good. However, when he returns, the farmer must choose
between the corn and the cat. Whatever the farmer takes must be left on
the far shore with the bird while the farmer returns to the nearshore
for the remaining item. This means that either
the cat and bird will be left together
for the bird and corn. The Problem abuse unsolvable since neither of these
scenarios is excepted. However, assume node the farmer takes the cat on
the second clip, but this time, instead
of leaving the cat with the farmer takes the
bird back to the near shore. Then the farmer takes the sake
of corn across the river, leaving the cat and corn on the far shore while returning for another
trip with the bird. Thinking about the
problem again, why was this rather easy sounding Problem
difficult to solve? This might be because many
people never considered the possibility of taking
one item back, right? It might sound unfair
since we didn't mention that it was
possible to take item spec, but we also didn't say that
it was forbidden to Rousseau. How much easier we did have
been to solve the puzzle. If you explicitly
said it was possible. It's a key factor
of problem-solving. If you don't know all possible
actions you could take, you might not be able
to solve the problem. So just stopped setting yourself constraints that didn't even
exist in the first place. Otherwise, you're just
limiting your ability. Problems. Now that we are
done with the problem, how about trying
it this time with the seven steps of
problem-solving? Step number one,
define the problem. Our problem for this
task is that we can't cross the river with all
three items at the same time. Step number to define the goal. Well, at the end of today, our main goal is to be able to get three items to the
other side of the shore. Step number three
clarifications. Now, here we have to think
a little bit harder. What data is available to us? What is our top
priority right now? What else do we know
about the problem? In this case, we know the
following about the problem. First, the farmer can only carry one item at a
time booster boat. Second, the bird and corn cannot be left
alone on the same shore. The cat and bird cannot be
left alone on the same shot. You might think that this
is everything we know about the problem,
but this is not true. We also know, for example, that if the vote is empty, we load an item from the shore. And if Tybalt is not empty, we unrolled an
item to the shore. Step number four,
identify the root cause. In this problem, the root
cause could be, for example, the boat, which can only
take one item at a time. However, since it's a riddle, we can for now ignore
the root cause. Step number five, action plan with the list of information we wrote down it,
step number three. We can now try to create
an action plan for this. First, pause the video
for few minutes. Think about the problem again. Try to make your
own action plan. Step number six,
execute and evaluate. After you've done is done, execute your actions and
have a look at the results. Did everything work? Once you have proved successful? If not, what was the problem? Step number seven,
improved continuously. Last but not least, best thing
you could do to be better prepared for such problems is to actually
improve continuously. As we would say, prepare for the future by learning
from your mistakes. From the problem above. Who learned the importance
of questioning assumptions and explore all possible
options when solving problems. You also learned the value of breaking down the
problem into smaller, more manageable
parts and choosing a structured approach like the seven step
problem-solving method. Additionally, we saw how the five whys
technique can be used to dig deeper into a problem and uncover underlying problems. Finally, we learned
that sometimes the root cause of problem might not be
immediately apparent, that might require
further investigation. In order to solve
problems faster, we will learn in
the next chapter more about problem-solving
strategies.
5. Problem Solving Strategies: Strategies. After solving the first problem, we will now show
you some strategies on how to tackle problems
in a better way. For this, we will get started
with divide and conquer. If you ever encounter
problems that are so big that you
think to yourself, it's not possible to solve. Try to divide the problem
into smaller pieces, and then divide
those smaller pieces into even smaller pieces. Do that until you are able to solve each of the small
pieces on your own. An example would be Solving
a machine learning project. Often people are
intimidated when starting with the first
machine learning project, because let's be honest,
it truly is a big project, especially for those
beginning to journey. Therefore, let's divide
it into smaller pieces. Instead of one big chunk, we would now have, for
example, the following pieces. Get the dataset,
pre-processed the dataset, choose features, choose
modal class and model, train model, and test model. Now that you have
smaller pieces, you can divide those
subareas further until you are able to
solve it on your own. The planet. You should always have a plan. No matter the circumstances. You might think that it's
not possible to have a plan for every situation
that might happen. This is totally true. It is possible to at least
plan your initial thoughts on how to tackle a specific problem from the beginning on. Even if you have to
change your plan later on or abandon
it completely. It doesn't mean that
you have to engage in every activity directionless. Before the plan. You are simply
hoping for a lucky break. Fruit might have heard the story of the
discovery of penicillin. One night, the researcher Alexander Fleming
accidentally left one of his Petri dishes
open to surprise. When he returned the next day, he discovered that
mold had grown. In addition, however, what
intrigued him even more? What's the fact that the mold had prevented the bacteria from growing as a result of S40 and controlled
experimentation. Deming recognize the
importance of what he saw in the Petri
dish by no means to, to just sit around waiting
for lucky break fruit. Well, this brings us
to the next part. Analogies. A major part of improving your problem-solving speed and scale is recognizing analogies, but it can also be the most
challenging one. The problem. You cannot look for
analogies until you have a repository of
previous solutions. Developing programmers often
tried to take a shortcut by finding code similar to the
needed code and modify it. However, this is a mistake. You don't complete a
solution yourself. You won't have fully understood and internalized the Problem. Modifying a program
that you do not fully understand can
be very challenging. In order to understand
the problem, you don't need to have
written the code yourself. But if you can write the code, your understanding
will be limited. Another reason is that every
successful program you write this more than a
solution to a current issue. It's an analogy for a future
issue you might face. The more you rely on
other programmers code, the more you will in the future. The known, the further away of writer gets from
his own experience, the more difficult
writing maybe. When programming, you
should try to start with what you already know and
work out what from there. Once you have divided the
problem up into pieces. For example, go
ahead and complete any piece you already
know. To some degree. Having a working
partial solution might generate fought for
the rest of the problem. Also, as you might have noted, a recurrent element in
problem-solving is making usefull progress to generate confidence that you will
eventually complete the work. Beginning with what
you already know, you gain confidence and
momentum towards your goal. Differently. As
the previous real demonstrated restating
of problem can get useful results in
certain circumstances. Stating a problem
in a different way or using your
language can make it easier to process of restating of problem can be compared to climbing
up a mountain. Before beginning your journey. Why not explore
the mountain from multiple different
perspectives to see if there's an easier pop-up. Restatement can review that the goal was not what
we thought it was. Thinking differently
and restating are Problem is a powerful tool, especially when it comes to solving difficult
programming tasks. It might not help you
in writing actual code, but just like in the
previous riddle, it will definitely help
you in understanding the problem and come to
a solution much faster. The experiment. Sometimes when nothing really
works the way you want to, it's best to try new things
out and see what happens. However, it is
important to note that experimenting is not
the same as guessing. Guessing is the same as typing in some code and
hoping that it works. Experimenting, or the other hand means that you have a
regulated process where you make a guess about what will happen because specific
code is executed. Then you test it to determine whether your guess
is true or not. Just like a researcher, you will be able to learn from
two observations you made and use that knowledge to further resolve the
initial problem. Motivation. And last but not least, you have to stay motivated. Frustration is totally normal. You have to accept it. Easier said than done, right? Try to remember
first that you are doing things that not
everyone is capable of. You might not manage to
deal with the problem at hand right now.
But it's okay. You can fail. Don't necessarily see failure as a bad thing. It's just an opportunity
to do better next time. You can view frustration as a sign that you're getting
outside of your comfort zone. If you want to learn stuff, you will encounter problems and most probably gets
stuck at some point. But in the end, you
will get always. The most classic
advice for dealing with frustration is
to do something else. It doesn't mean you're
avoiding the problem. You will have to come
back to it eventually. The goal is to give it a break. Thinking for hours about the
Problem tires you might, which is why you
need time to make sense of the information
and process it. Forcing you mind to
continue to work out of desperation of pride will just have the effect of
weakening it even more. You have to think
of your brain as a muscle and let it rest. So take a break
for poor yourself a cup of coffee or tea
and just relax for a bit. Then try to tackle
the problem again. It's solve it by applying the
knowledge you gain today. Stay motivated
6. Obstacles on your journey: Obstacles on your journey. Now that you have
gained a small grace into the world of
problem-solving to want to see if you can apply your knowledge and solve
the following two problems. Pascal's triangle. Imagine you are given a triangle which consists of six rows, which looks as follows. To task is now to find out what the next
line will look like. As a small hint, Try to
solve the problem with the seven steps of
problem solving process and create
an action plan. Drift is strategies
to learn today. Pause this video for a few minutes and come
back when you're ready. Since some might
have difficulties in Solving Pascal's triangle, let us solve this step-by-step. To make it easier,
we will write down each step until refined
the hints that helps us. Number one, define the problem. In this case, problem is that we don't know the pattern
of the triangle law. The next slide, number
to define the goals. Simply said, our goal is to find the pattern
of the triangle to solve the next
line. Number three. Clarification. Is there any data available that might help us
solving the problem? By having a closer
look at the triangle, we see that the edges are
always wants inside however, is growing with a
random pattern. So we might for now just assume that the edges
are always going to be want number for root cause. Well, since it's a
logical problem, the root cause of the problem is the mathematical properties,
numbers, interrelationships. So in short, the root
cause of the problem with Pascal's triangle
is that it requires a good understanding of
basic mathematical concepts and some practice in order to fully understand and
use it effectively. Since this is going to fall
down into mathematics, we will stop here for now. Number five, action plan. Now it's time for us to solve this problem by applying
excellent step-by-step. In this case, we could use one of the strategies
will learned earlier, like divide and conquer. By dividing the triangle
into smaller triangles, might be able to find some hidden information
about this problem. For this, we could start with the smallest triangle that
could be useful to us. Plan for now is to add the
next slide, see what happened, and think of how the next line is dependent on
the previous one. Number six, execute
and evaluate. Let's add another line. What do we see? Observe the pattern of
Pascal's triangle 1331. Notice that once are at the edges with two times
three in the middle. Taught in the previous line, we see two in the middle
and once at the edges. How do they relate? Let's expand it by another line. We see 14641. If we have a closer
look at the triangle, we see in the third row
a two in the middle, in the fourth row,
in the middle, and in the last row, 464. Did you notice something? Values at the edges summer grow linearly with each edit line. This as if some constant
number is edit, where the constant
vector is always one. But wait, what if
we take the values of the previous rules
counted together? If we count one plus three together and free plus
three, and again, three plus one, then
this would result in the middle values for six for
at the edges stay the same. This is exactly the fifth line. Okay, Now let's try
out another line. Let's say it just take
the values of one. Then one plus four is 54, plus six is 106, plus four is ten. Plus one is five. This results in the next line being 15101051. If we compare it to
the actual triangle, it perfectly matches
the sixth line. We have it solution
to Pascal's triangle. We only have to add
the values from the previous lines together
to get the next line. Okay? This brings us to
the next point. Improve continuously. Don't forget to always learn and improve from your mistakes. Does your action plan work? If so, why and how did
you come up with it? If both adapt your plan and
try different strategies. By just sticking to our
problem-solving process and using some
simple strategies, you are able to solve this
rather complicated problem. Now trial to fix, you have learned on the
next and last obstacles. Good luck. The game of sudoku. Moving on, you might
know the next problem. The sudoku game is
a very popular game and often appears in newspapers, magazines, and other places. Currently multiple
different versions of this game exists. However, we will for now stick
to the traditional ones. The issue is as follows. A nine by nine grid is partially filled with single
digits ranging 1-9 at the player must
fill in the empty squares. Why sticking to a
particular routes? Cruel one. A digit is only allowed to
appear once in each row. To a digit is only allowed to appear once
in each Columbia. Cool free. A digit is only
allowed to appear once in each indicated
three-by-three region. Now let's have a look at
the sudoku puzzle itself. Okay, what do we see? You see that currently
36 squares are numbered, so only 45 remains. The question always, which squares should we attempt
to fill in first? Having a closer
look that currently the freeway pre area in the middle has already
eight out of nine values. So they can only be one
missing value, which is seven. After placing that value, do you notice the values
in the center most column? Seven out of nine squares
have been filled, leaving only two to be filled. It must contain a value that isn't already
in the Columbia. The two missing numbers
of free at night. Despite the constraint
on this column, three is already present
in the first row, and nine is already present
in the seventh row. Due to the row constraints, the third row of the middle
column should contain nine and the seventh row
should contain three. Now that we have
filled in some values, it's your turn to give it a try. Take your time with this task. Remember, the key is to look for squares with the fewest
possible values a. Duly just want. Once you
have completed the exercise, you can check your
solutions using the solutions provided
in our extra materials.
7. How are Problem Solving and Programming related?: How are problem-solving
and Programming related? After overcoming the
obstacles on your journey? Might be wondering how problem-solving and
programming are interconnected and why we have created this course
in the first place. Think of programming
as a box that contains two smaller
boxes within it. The first box represents
problem-solving. By the second box
represents coding. When you're faced with
a programming problem, the first step is to solve the problem itself by coming up, plan at a possible solution. For instance, let's say you want to write a
program that searches through all the files on your computer and lists
every picture in the folder, how would you go about it? What problem-solving skills
would you need to apply? The solid plan with code
will be ineffective. Programming is a
powerful tool that empowers you to solve
complex problems, automate processes,
and achieve much more. Just imagine the
satisfaction of creating a program that source
or real-world problem, saving time and effort. The same principle applies when working in the pit of
Artificial Intelligence. It's not just about
the code spread of the problem-solving skills
of an AI developer. It's how they
approach problems and how they view them from
different perspectives. I should assist
humans by automating mundane tasks are replacing
humans in dangerous ones. In summary, problem-solving and programming are
closely intertwined. As Programming is essentially
a form of problem-solving. It involves
identifying a problem, breaking it down into smaller,
manageable subproblems. Then using Algorithms
and logic to create a solution that we have covered everything
in this course. Let's have a brief recap
in the next chapter.
8. What you have learned: What do you have learned? We first introduced you to
problem-solving in general. Why you needed at how the
problem-solving process works. Afterwards, we solve together the riddle of the cat
to bird and corn. Then we went through some
problem-solving strategies that could help you to
solve problems much faster. Next on your journey, we're
to obstacles that you had to overcome with the
skills you learned early on. After overcoming
them, we explained the relation of programming
and problem-solving. Now that you have finished
everything to wish you good luck on your
journey, stay motivated