WEBVTT

00:00:00.770 --> 00:00:03.790
And now we've reached the end of 6.004.

00:00:03.790 --> 00:00:08.200
Looking back, there are two ways of thinking
about the material we've discussed, the skills

00:00:08.200 --> 00:00:12.379
we've practiced, and the designs we've completed.

00:00:12.379 --> 00:00:16.680
Starting at devices, we've worked our way
up the design hierarchy, each level serving

00:00:16.680 --> 00:00:19.190
as building blocks for the next.

00:00:19.190 --> 00:00:23.380
Along the way we thought about design tradeoffs,
choosing the alternatives that would make

00:00:23.380 --> 00:00:30.370
our systems reliable, efficient and easy to
understand and hence easy to maintain.

00:00:30.370 --> 00:00:36.640
In the other view of 6.004, we created and
then used a hierarchy of engineering abstractions

00:00:36.640 --> 00:00:41.330
that are reasonably independent of the technologies
they encapsulate.

00:00:41.330 --> 00:00:46.100
Even though technologies change at a rapid
pace, these abstractions embody principles

00:00:46.100 --> 00:00:47.730
that are timeless.

00:00:47.730 --> 00:00:53.780
For example, the symbolic logic described
by George Boole in 1847 is still used to reason

00:00:53.780 --> 00:00:58.989
about the operation of digital circuits you
and I design today.

00:00:58.989 --> 00:01:03.490
The power of engineering abstractions is that
they allow us to reason about the behavior

00:01:03.490 --> 00:01:08.930
of a system based on the behavior of the components
without having to understand the implementation

00:01:08.930 --> 00:01:11.590
details of each component.

00:01:11.590 --> 00:01:16.329
The advantage of viewing components as "black
boxes" implementing some specified function

00:01:16.329 --> 00:01:23.170
is that the implementation can change as long
as the same specification is satisfied.

00:01:23.170 --> 00:01:28.450
In my lifetime, the size of a 2-input NAND
gate has shrunk by 10 orders of magnitude,

00:01:28.450 --> 00:01:33.439
yet a 50-year-old logic design would still
work as intended if implemented in today's

00:01:33.439 --> 00:01:35.689
technologies.

00:01:35.689 --> 00:01:40.369
Imagine trying to build a circuit that added
two binary numbers if you had to reason about

00:01:40.369 --> 00:01:44.819
the electrical properties of doped silicon
and conducting metals.

00:01:44.819 --> 00:01:49.509
Using abstractions lets us limit the design
complexity at each level, shortening design

00:01:49.509 --> 00:01:54.600
time and making it easier to verify that the
specifications have been met.

00:01:54.600 --> 00:01:58.719
And once we've created a useful repertoire
of building blocks, we can use them again

00:01:58.719 --> 00:02:02.099
and again to assemble many different systems.

00:02:02.099 --> 00:02:07.590
Our goal in 6.004 is to demystify how computers
work, starting with MOSFETs and working our

00:02:07.590 --> 00:02:09.919
way up to operating systems.

00:02:09.919 --> 00:02:14.290
We hope you've understood the engineering
abstractions we've introduced and had a chance

00:02:14.290 --> 00:02:19.280
to practice using them when completing the
design problems offered in the labs.

00:02:19.280 --> 00:02:24.200
We also hope that you'll also understand their
limitations and have the confidence to create

00:02:24.200 --> 00:02:28.250
new abstractions when tackling new engineering
tasks.

00:02:28.250 --> 00:02:37.160
Good engineers use abstractions, but great
engineers create them.

00:02:37.160 --> 00:02:40.640
principles used at each level of the design
hierarchy.

00:02:40.640 --> 00:02:45.150
If a particular topic struck you as especially
interesting, we hope you'll seek out a more

00:02:45.150 --> 00:02:49.900
advanced course that will let you dig deeper
into that engineering discipline.

00:02:49.900 --> 00:02:54.120
Hundreds of thousands of engineers have worked
to create the digital systems that are the

00:02:54.120 --> 00:02:56.320
engines of today's information society.

00:02:56.320 --> 00:03:02.760
As you can imagine, there's no end of interesting
engineering to explore and master - so roll

00:03:02.760 --> 00:03:06.090
up your sleeves and come join in the fun!

00:03:06.090 --> 00:03:09.090
What will be the engineering challenges of
tomorrow?

00:03:09.090 --> 00:03:12.990
Here are a few thoughts about how the future
of computing may be very different than the

00:03:12.990 --> 00:03:13.990
present.

00:03:13.990 --> 00:03:17.260
The systems we build today have a well-defined
notion of state:

00:03:17.260 --> 00:03:22.200
the exact digital values stored in their memories,
produced by their logic components, and traveling

00:03:22.200 --> 00:03:24.390
along their interconnect.

00:03:24.390 --> 00:03:29.090
But computation based on the principles of
quantum mechanics may allow us to solve what

00:03:29.090 --> 00:03:34.990
are now intractable problems using states
described not as collections of 1's and 0's,

00:03:34.990 --> 00:03:41.440
but as interrelated probabilities that describe
the superposition of many states.

00:03:41.440 --> 00:03:45.650
We've built our systems using voltages to
encode information and voltage-controlled

00:03:45.650 --> 00:03:51.100
switches to perform computation, using silicon-based
electrical devices.

00:03:51.100 --> 00:03:55.350
But the chemistry of life has been carrying
out detailed manufacturing operations for

00:03:55.350 --> 00:04:01.220
millennia using information encoded as sequences
of amino acids.

00:04:01.220 --> 00:04:06.000
Some of the information encoded in our DNA
has been around for millions of years, a truly

00:04:06.000 --> 00:04:08.900
long-lived information system!

00:04:08.900 --> 00:04:13.360
Today biologists are starting to build computational
components from biological materials.

00:04:13.360 --> 00:04:18.529
Maybe in 50 years instead of plugging in your
laptop, you'll have to feed it :)

00:04:18.529 --> 00:04:23.740
Instead of using truth tables and logic functions,
some computations are best performed neural

00:04:23.740 --> 00:04:28.380
networks that operate by forming appropriately
weighted combinations of analog inputs,

00:04:28.380 --> 00:04:32.400
where the weights are learned by the system
as it is trained using example inputs that

00:04:32.400 --> 00:04:35.229
should produce known outputs.

00:04:35.229 --> 00:04:39.499
Artificial neural nets are thought to model
the operation of the synapses and neurons

00:04:39.499 --> 00:04:41.110
in our brains.

00:04:41.110 --> 00:04:46.010
As we learn more about how the brain operates,
we may get many new insights into how to implement

00:04:46.010 --> 00:04:51.159
systems that are good at recognition and reasoning.

00:04:51.159 --> 00:04:56.919
Again using living organisms as useful models,
programming may be replaced by learning, where

00:04:56.919 --> 00:05:00.629
stimulus and feedback are used to evolve system
behavior.

00:05:00.629 --> 00:05:05.999
In other words, systems will use adaptation
mechanisms to evolve the desired functionality

00:05:05.999 --> 00:05:09.270
rather than have it explicitly programmed.

00:05:09.270 --> 00:05:13.860
This all seems the stuff of science fiction,
but I suspect our parents feel the same way

00:05:13.860 --> 00:05:18.250
about having conversations with Siri about
tomorrow's weather.

00:05:18.250 --> 00:05:21.050
Thanks for joining us here in 6.004.

00:05:21.050 --> 00:05:25.009
We've enjoyed presenting the material and
challenging you with design tasks to exercise

00:05:25.009 --> 00:05:26.789
your new skills and understanding.

00:05:26.789 --> 00:05:31.539
There are interesting times ahead in the world
of digital systems and we can certainly use

00:05:31.539 --> 00:05:34.719
your help in inventing the future!

00:05:34.719 --> 00:05:38.629
We'd welcome any feedback you have about the
course so please feel free leave comments

00:05:38.629 --> 00:05:39.729
in the forum.

00:05:39.729 --> 00:05:43.069
Good bye for now... and good luck in your
future studies.