1
00:00:01,078 --> 00:00:08,004
I'd like to now give you an overview of
the course, and what is expected over the

2
00:00:08,004 --> 00:00:11,055
ten week period of this course.
There are 27 lectures.

3
00:00:11,055 --> 00:00:18,006
And in those lectures, we cover a very
broad range of techniques and mathematical

4
00:00:18,006 --> 00:00:23,045
ideas in scientific computing.
In fact, the goal of the course is to

5
00:00:23,045 --> 00:00:27,071
really highlight all the major techniques
used today.

6
00:00:27,071 --> 00:00:31,092
And so that you get yourself up to a level
where you can attack problems that are

7
00:00:31,092 --> 00:00:36,060
complex and know the kind of right methods
to be applied.

8
00:00:36,060 --> 00:00:41,043
Now before we start I wanna give you an
idea of what the expectations are for you

9
00:00:41,043 --> 00:00:47,002
in terms of background.
Certainly linear algebra is key in all the

10
00:00:47,002 --> 00:00:51,025
methodology used, in all the techniques
developed.

11
00:00:51,025 --> 00:00:56,060
So a strong background in linear algebra
is really imperative.

12
00:00:56,060 --> 00:01:01,063
Along with this some familiarity, or
potentially a good background in

13
00:01:01,063 --> 00:01:05,032
differential equations.
Certainly brushing up on differential

14
00:01:05,032 --> 00:01:10,003
equations is a very good idea, as many of
the systems we will study and try to

15
00:01:10,003 --> 00:01:14,020
characterize, or compute solutions for,
involve differential equations.

16
00:01:14,020 --> 00:01:18,079
Now, we're not so interested in analytic
solution techniques, so much as just

17
00:01:18,079 --> 00:01:22,096
understanding some of the basic properties
of differential equations.

18
00:01:22,096 --> 00:01:25,770
And third, you should have some background
in programming.

19
00:01:25,770 --> 00:01:30,854
Now this can come in a variety of ways,
mostly the idea is, do you understand some

20
00:01:30,854 --> 00:01:34,486
basic structures?
In particular, for loops, if statements, I

21
00:01:34,486 --> 00:01:39,591
think of those as the building blocks for
making any kind of very complex code.

22
00:01:39,591 --> 00:01:44,919
Now once you have that background in
place, we're gonna be using two, major

23
00:01:44,919 --> 00:01:49,318
tools in developing almost everything we
do for the course.

24
00:01:49,318 --> 00:01:54,293
First, a computer, of course that's kind
of expected, scientific computing.

25
00:01:54,293 --> 00:02:00,547
So, it's expected that you have access to
a computer or a magic abacus which you can

26
00:02:00,547 --> 00:02:04,681
do a transform on.
But, I think those are very difficult to

27
00:02:04,681 --> 00:02:07,293
find.
So you want to have a good computer,

28
00:02:07,293 --> 00:02:10,349
fairly fast.
It doesn't need to be brand new, but

29
00:02:10,349 --> 00:02:15,401
certainly within the last couple of years
as computing power has really gone up.

30
00:02:15,401 --> 00:02:21,094
The second thing is the course will really
focus in using high level language for

31
00:02:21,094 --> 00:02:23,748
programming.
In particular, we'll focus on using

32
00:02:23,748 --> 00:02:27,240
MATLAB.
Matlab is basically the leading product on

33
00:02:27,240 --> 00:02:30,626
the market for high level language in
computing.

34
00:02:30,626 --> 00:02:33,638
Now MATLAB is available for students of
Coursera.

35
00:02:33,638 --> 00:02:38,374
For around $100 you can download this,
-load this online or find it in a

36
00:02:38,374 --> 00:02:42,158
bookstore.
There are also versions of MATLAB or other

37
00:02:42,158 --> 00:02:46,036
sources that are similar to MATLAB that
can be downloaded.

38
00:02:46,036 --> 00:02:50,838
One of them is Octave for instance.
I'll put resources on the web page for you

39
00:02:50,838 --> 00:02:54,427
to follow through.
So, there are fee versions available, but

40
00:02:54,427 --> 00:02:57,828
they are basically knockoffs or mockups of
what MATLAB is.

41
00:02:57,828 --> 00:03:02,393
If you're very serious about learning the
material, MATLAB is actually a very

42
00:03:02,393 --> 00:03:07,412
wonderful investment, extremely powerful,
allowing us to do very complex things,

43
00:03:07,412 --> 00:03:11,501
very efficiently and in some sense that's
the mantra of the course.

44
00:03:11,501 --> 00:03:15,460
Take a very complex system.
Something that, maybe ten years ago, 50

45
00:03:15,460 --> 00:03:21,184
years ago was very difficult to solve, and
with something like MATLAB, you can bring

46
00:03:21,184 --> 00:03:26,077
in this very high level functionality.
You can bring in code that is written by

47
00:03:26,077 --> 00:03:32,057
some of the world's best people, and you
understand the very basics of these codes

48
00:03:32,057 --> 00:03:38,050
and how to combine them together to make
for yourself a program that can simulate a

49
00:03:38,050 --> 00:03:42,055
very complex system.
The course is breaking down into four

50
00:03:42,055 --> 00:03:45,053
parts.
In the first part of the course, what

51
00:03:45,053 --> 00:03:50,001
we're gonna cover is basically
differential equations in boundary value

52
00:03:50,001 --> 00:03:52,056
problems.
So, when we think about differential

53
00:03:52,056 --> 00:03:56,075
equations, oftentimes we've been
introduced to them from the point of view

54
00:03:56,075 --> 00:04:00,088
of an initial value problem solving.
So you give the initial state of the

55
00:04:00,088 --> 00:04:05,019
system, some prescribed set of dynamics,
and what is the future state of that

56
00:04:05,019 --> 00:04:07,085
system?
We'll develop this techniques primarily

57
00:04:07,085 --> 00:04:10,029
because they purvey the rest of the
course.

58
00:04:10,029 --> 00:04:14,093
Everything we do has something to do with
how to time-step into the future, mostly

59
00:04:14,093 --> 00:04:19,069
because most complex systems is all about
predicting the future state of the system.

60
00:04:19,069 --> 00:04:24,022
Once we have the initial value problem
solved, we'll move on to boundary value

61
00:04:24,022 --> 00:04:26,072
problems.
Boundary value problems typically

62
00:04:26,072 --> 00:04:30,066
prescribe some kind of domain in which you
need a solution to exist.

63
00:04:30,066 --> 00:04:34,090
And you would like to figure out how to
correctly prescribe the boundary

64
00:04:34,090 --> 00:04:39,031
conditions that are also self consistent
with the behavior in between those

65
00:04:39,031 --> 00:04:42,047
boundaries.
Armed with those two methods, we'll move

66
00:04:42,047 --> 00:04:46,089
on to, the heart of the course, which is,
partial differential equations.

67
00:04:46,089 --> 00:04:51,063
Partial differential equations, are
differential equations in more than one

68
00:04:51,063 --> 00:04:54,015
variable.
So for instance, time and space.

69
00:04:54,015 --> 00:04:57,062
And typically this is what we're
interested in solving.

70
00:04:57,062 --> 00:05:01,003
You take a problem.
For instance, you wanna predict, the

71
00:05:01,003 --> 00:05:02,098
weather.
Well, here, in the weather, pattern, you

72
00:05:02,098 --> 00:05:07,067
wanna see how the weather, changes, both
in time, and in space.

73
00:05:07,067 --> 00:05:12,018
So it is important for you to understand
that you have both time and space

74
00:05:12,018 --> 00:05:17,000
variables and how they interact, is the
heart of what's the science of computing

75
00:05:17,000 --> 00:05:21,005
method is trying to solve for.
We'll start out with finite difference

76
00:05:21,005 --> 00:05:25,061
methods, which are some of the more easy
to understand techniques out there, and

77
00:05:25,061 --> 00:05:28,067
very common.
They can handle sufficiently complicated

78
00:05:28,067 --> 00:05:32,036
boundary conditions, and are fairly
straightforward to implement.

79
00:05:32,036 --> 00:05:36,074
They give you fairly reasonable accuracy.
And everything's based upon Taylor

80
00:05:36,074 --> 00:05:39,080
Expansions.
So once you know how to Taylor Expand, you

81
00:05:39,080 --> 00:05:42,086
can develop a whole host of finite
different schemes.

82
00:05:42,086 --> 00:05:48,032
In addition to the finite difference,
we'll move next to spectral methods.

83
00:05:48,032 --> 00:05:54,031
Spectral methods are ideas that transform
your variables into what's called the

84
00:05:54,031 --> 00:05:59,027
Fourier domain, or spectral domain.
The reason these methods are attractive is

85
00:05:59,027 --> 00:06:01,069
they're highly accurate, and it's very
fast.

86
00:06:01,069 --> 00:06:06,014
One of the most famous routines, top ten
algorithms of the last century, was the

87
00:06:06,014 --> 00:06:09,068
fast Fourier transform.
The fact that an algorithm has the name

88
00:06:09,068 --> 00:06:14,013
fast in it means that it's extra fast,
because all algorithms on a computer are

89
00:06:14,013 --> 00:06:16,066
fairly fast.
So, the fast Fourier transform is

90
00:06:16,066 --> 00:06:20,032
something we would like to take advantage
of as much as possible.

91
00:06:20,032 --> 00:06:24,043
It is one of the leading techniques for
solving certain kind of problems.

92
00:06:24,043 --> 00:06:29,074
So we use these spectral ideas and
spectral technologies and build up ideas

93
00:06:29,074 --> 00:06:35,055
for solving partial difference equations
within the context of spectral methods as

94
00:06:35,055 --> 00:06:38,021
well.
Finally after understanding finite

95
00:06:38,021 --> 00:06:43,025
difference in spectral techniques we'll
move on to finite element methods.

96
00:06:43,025 --> 00:06:47,024
Now finite element methods can handle
arbitrary boundaries.

97
00:06:48,012 --> 00:06:53,063
Complex domains that you wanna solve for.
Very difficult, interior meth-, domains

98
00:06:53,063 --> 00:06:56,064
also.
This is typically beyond the scope of what

99
00:06:56,064 --> 00:07:00,016
you would do with finite difference or
spectral methods.

100
00:07:00,016 --> 00:07:04,092
However, we'll cover some of the basic
ideas behind finite element technique.

101
00:07:04,092 --> 00:07:09,069
Now, we will not spend time coding the
finite element technique, because it's

102
00:07:09,069 --> 00:07:13,774
beyond the scope of this course, but,
we'll give you the main ideas and show you

103
00:07:13,774 --> 00:07:18,604
how to use some commercial software.
To solve these [inaudible], these finite

104
00:07:18,604 --> 00:07:23,617
element based problems, where you have
very complex geometry, or very complex

105
00:07:23,617 --> 00:07:28,639
interior geometries to your problem.
It's one of the leading methods when you

106
00:07:28,639 --> 00:07:33,694
have such complex geometries but also,
typically tends to fall under commercial

107
00:07:33,694 --> 00:07:38,041
software development.
Those are the majors themes and ideas that

108
00:07:38,041 --> 00:07:41,536
we will cover.
The idea is to mostly focus in on building

109
00:07:41,536 --> 00:07:45,919
code, getting code to work.
That is where the assessment and the value

110
00:07:45,919 --> 00:07:50,351
of the course is.
We are after using the techniques,

111
00:07:50,351 --> 00:07:55,344
implementing the techniques, not just
knowing about how they work in theory, but

112
00:07:55,344 --> 00:08:01,055
then applying them in practice and solving
complex problems directly on your laptop.

113
00:08:01,055 --> 00:08:06,044
So by the end of the course you too will
be able to solve very complicated

114
00:08:06,044 --> 00:08:11,033
problems, and get yourself to a point
where you can pretty much do research

115
00:08:11,033 --> 00:08:15,011
level problems.
You will have the skills and techniques to

116
00:08:15,011 --> 00:08:18,066
do so.
Not only that, you'll know about the major

117
00:08:18,066 --> 00:08:22,018
methods.
You'll what they entail, why you should

118
00:08:22,018 --> 00:08:27,015
use one method versus another, and
basically have a good characterization of

119
00:08:27,015 --> 00:08:31,081
the strengths and weaknesses of all the
key, the key ingredients and key elements

120
00:08:31,081 --> 00:08:36,036
of these techniques so that, when you come
to your problem or, a problem you are

121
00:08:36,036 --> 00:08:39,678
trying to solve.
You can come in, use these techniques,

122
00:08:39,678 --> 00:08:45,707
make an evaluation of the right technique
to apply, solve the problem in very fast

123
00:08:45,707 --> 00:08:51,069
and simple way through use of a high level
code like MATLAB, and produce a solution.

124
00:08:51,069 --> 00:08:54,084
That's the basic architecture of the
course.

125
00:08:54,084 --> 00:09:00,045
Application, application, application.
I want you to know how to code by the time

126
00:09:00,045 --> 00:09:04,067
this course is over.
I want you to know how to evaluate what

127
00:09:04,067 --> 00:09:09,066
techniques to be applying, and the
strength and weaknesses of different

128
00:09:09,066 --> 00:09:12,076
techniques.
I want you to take your level of

129
00:09:12,076 --> 00:09:17,096
computational fluency a significant step
upward in your professional development.
