so computational thinking is the way of seeing the world that
computer scientists have developed over the past
three, four or five decades
it depends on seeing the world in terms of
problems that can be solved algorithmically
by specifying an effective process
for solving them, basically a program
This is James Larus,
full professor and dean of the IC School at EPFL
but it's not programming
it's basically a way of looking at a problem
and saying this is a hard problem
or it's an easy problem; it's a problem
that can be solved efficiently or
it's a problem that can't be solved efficiently
as computers are taking over the world
there is an increasing need
for computational skills,
both in the industry and in academy. As a result,
many universities have started
educational programs to teach students
to code. But the most important skill
that computer scientists should teach
may not be writing codes. In fact,
a computer scientist is not necessarily
a scientist that writes codes
most of the computer scientists that we interviewed
on ZettaBytes, actually barely write code at all
and personally, I haven't programmed
for the last two or three years
Rather, the most important skill that computer scientists
should be teaching
actually actually be computational thinking
it's very important to distinguish the two
computational thinking is the way
in which you sort of think about
the problems you want to solve
programming is a technique for solving certain problems
programming certainly requires
computational thinking
but the fact that it can be applied
in many different places, without programming,
is an argument for why it should be
a widespread skill, why people should learn it
in general, because it will help them
in their day-to-day life
even if they never program on a computer
of course, the fact that we are more and more
surrounded by computational devices
is all the more a reason to teach and learn
computational thinking. As computers
become even more embedded into our lives
people should really understand what
they're capable of, what they're good at
there are certain problems that
you're just not going to end up
with a good solution with a computer
no matter how big the computer is
how fast the computer is
people should be thinking about
what they're trying to apply computers for
in their life and their job, in the things
they're trying to build in the industry
and really have an understanding
rather than delegating
this understanding to the programmers
or the computer scientists they hire to work with
In particular, it seems crucial for anyone
who is directly or indirectly
exploiting the capabilities of computers
to better grasp their potential
and their limits as well. There are problems out there
that we can show that
there is just no way of solving them exactly
every single time. There are other problems
out there, that we can come up
with a good solution, we can prove that
if you do it this way, you'll come up
with the optimal the best possible solution
every single time, and then
there are other problems out there
that are sort of our midway between. We know
we can solve them, but we can't solve them efficiently
and so this way of dividing
the world into categories
into problems we can solve, problems we can't solve,
to be able to actually specify exactly what
the steps are that you take to solve the problem
is really the heart of
computational thinking
It's a way of seeing the world, it's a set of tools
for understanding the world, it's a set of ways
for interacting with the world
that haven't really existed
that are quite different than the way other scientific
or even other academic disciplines
have viewed problems in the world
perhaps, the most important aspect of computational thinking
is the ability to analyze
everyday life problems
industrial problems or academic problems from other fields
in terms of computational concepts
you know a good example that
from Switzerland that I like to use is
Swiss cheese is produced
in these enormous round pieces of cheese
nobody wants 20 or 30 kilos at once
so it's sold in slices
when they're produced it has to be cut
into slices. And so you get orders
and the orders may come in saying
"I want one kilo or three kilos or five kilos of cheese"
you have this set of orders
you have these pieces of cheese that weigh certain things
so how do you cut the rounds into pieces
so that you minimize the amount
of waste. There's a simple algorithm
which is what most people
would probably do, which is you take
the biggest piece you want to cut. Cut it first.
and then you just keep cutting
the biggest pieces until you can't fit it anymore
and then you go
to the next size down. And we can show that
that's not a bad algorithm
it's no worse than twice the optimal solution
but it's a very simple algorithm
it's very effective
you can use it easily. But to solve it precisely
to come up with the absolute
minimum amount of waste
it's what's called an NP-complete problem
which means that you have to examine
all the possibilities, and there is an exponential number
of possibilities and so you can't solve it
effectively in practice
we talked about NP completeness
in a previous video with professor Ola Svensson
this is a way in which
you can actually take this computational thinking
apply it to problems in the real world
and get what are
practical solutions to these problems
and understand how good these solutions are
the cheese cutting example is a good example
that doesn't involve programming
that's literally some guy with a big knife
and pieces of cheese cutting it
that, you know, is computational thinking
so does this mean that computer science
should be taught without programming?
No, I think computer science should
be taught with programming. But I think
computer science should be taught
as an intellectual discipline
with some very powerful ideas in it
and then you should be also taught programming
as a way of applying these ideas in a very useful way
but you should understand that
computer science is a lot more than just programming
it's the techniques that we've developed
the way in which we analyze problems
the way in which we analyze solutions
to problems that are extremely important
in themselves and
even if you never program a computer
those are valuable for you
my grand vision is that computational thinking
will be a fundamental skill
used by everyone by the middle of the century
one of the big problems is that
you have to find the teachers for it
Không có nhận xét nào:
Đăng nhận xét