I'd like to now give you an overview of the course, and what is expected over the ten week period of this course. There are 27 lectures. And in those lectures, we cover a very broad range of techniques and mathematical ideas in scientific computing. In fact, the goal of the course is to really highlight all the major techniques used today. And so that you get yourself up to a level where you can attack problems that are complex and know the kind of right methods to be applied. Now before we start I wanna give you an idea of what the expectations are for you in terms of background. Certainly linear algebra is key in all the methodology used, in all the techniques developed. So a strong background in linear algebra is really imperative. Along with this some familiarity, or potentially a good background in differential equations. Certainly brushing up on differential equations is a very good idea, as many of the systems we will study and try to characterize, or compute solutions for, involve differential equations. Now, we're not so interested in analytic solution techniques, so much as just understanding some of the basic properties of differential equations. And third, you should have some background in programming. Now this can come in a variety of ways, mostly the idea is, do you understand some basic structures? In particular, for loops, if statements, I think of those as the building blocks for making any kind of very complex code. Now once you have that background in place, we're gonna be using two, major tools in developing almost everything we do for the course. First, a computer, of course that's kind of expected, scientific computing. So, it's expected that you have access to a computer or a magic abacus which you can do a transform on. But, I think those are very difficult to find. So you want to have a good computer, fairly fast. It doesn't need to be brand new, but certainly within the last couple of years as computing power has really gone up. The second thing is the course will really focus in using high level language for programming. In particular, we'll focus on using MATLAB. Matlab is basically the leading product on the market for high level language in computing. Now MATLAB is available for students of Coursera. For around $100 you can download this, -load this online or find it in a bookstore. There are also versions of MATLAB or other sources that are similar to MATLAB that can be downloaded. One of them is Octave for instance. I'll put resources on the web page for you to follow through. So, there are fee versions available, but they are basically knockoffs or mockups of what MATLAB is. If you're very serious about learning the material, MATLAB is actually a very wonderful investment, extremely powerful, allowing us to do very complex things, very efficiently and in some sense that's the mantra of the course. Take a very complex system. Something that, maybe ten years ago, 50 years ago was very difficult to solve, and with something like MATLAB, you can bring in this very high level functionality. You can bring in code that is written by some of the world's best people, and you understand the very basics of these codes and how to combine them together to make for yourself a program that can simulate a very complex system. The course is breaking down into four parts. In the first part of the course, what we're gonna cover is basically differential equations in boundary value problems. So, when we think about differential equations, oftentimes we've been introduced to them from the point of view of an initial value problem solving. So you give the initial state of the system, some prescribed set of dynamics, and what is the future state of that system? We'll develop this techniques primarily because they purvey the rest of the course. Everything we do has something to do with how to time-step into the future, mostly because most complex systems is all about predicting the future state of the system. Once we have the initial value problem solved, we'll move on to boundary value problems. Boundary value problems typically prescribe some kind of domain in which you need a solution to exist. And you would like to figure out how to correctly prescribe the boundary conditions that are also self consistent with the behavior in between those boundaries. Armed with those two methods, we'll move on to, the heart of the course, which is, partial differential equations. Partial differential equations, are differential equations in more than one variable. So for instance, time and space. And typically this is what we're interested in solving. You take a problem. For instance, you wanna predict, the weather. Well, here, in the weather, pattern, you wanna see how the weather, changes, both in time, and in space. So it is important for you to understand that you have both time and space variables and how they interact, is the heart of what's the science of computing method is trying to solve for. We'll start out with finite difference methods, which are some of the more easy to understand techniques out there, and very common. They can handle sufficiently complicated boundary conditions, and are fairly straightforward to implement. They give you fairly reasonable accuracy. And everything's based upon Taylor Expansions. So once you know how to Taylor Expand, you can develop a whole host of finite different schemes. In addition to the finite difference, we'll move next to spectral methods. Spectral methods are ideas that transform your variables into what's called the Fourier domain, or spectral domain. The reason these methods are attractive is they're highly accurate, and it's very fast. One of the most famous routines, top ten algorithms of the last century, was the fast Fourier transform. The fact that an algorithm has the name fast in it means that it's extra fast, because all algorithms on a computer are fairly fast. So, the fast Fourier transform is something we would like to take advantage of as much as possible. It is one of the leading techniques for solving certain kind of problems. So we use these spectral ideas and spectral technologies and build up ideas for solving partial difference equations within the context of spectral methods as well. Finally after understanding finite difference in spectral techniques we'll move on to finite element methods. Now finite element methods can handle arbitrary boundaries. Complex domains that you wanna solve for. Very difficult, interior meth-, domains also. This is typically beyond the scope of what you would do with finite difference or spectral methods. However, we'll cover some of the basic ideas behind finite element technique. Now, we will not spend time coding the finite element technique, because it's beyond the scope of this course, but, we'll give you the main ideas and show you how to use some commercial software. To solve these [inaudible], these finite element based problems, where you have very complex geometry, or very complex interior geometries to your problem. It's one of the leading methods when you have such complex geometries but also, typically tends to fall under commercial software development. Those are the majors themes and ideas that we will cover. The idea is to mostly focus in on building code, getting code to work. That is where the assessment and the value of the course is. We are after using the techniques, implementing the techniques, not just knowing about how they work in theory, but then applying them in practice and solving complex problems directly on your laptop. So by the end of the course you too will be able to solve very complicated problems, and get yourself to a point where you can pretty much do research level problems. You will have the skills and techniques to do so. Not only that, you'll know about the major methods. You'll what they entail, why you should use one method versus another, and basically have a good characterization of the strengths and weaknesses of all the key, the key ingredients and key elements of these techniques so that, when you come to your problem or, a problem you are trying to solve. You can come in, use these techniques, make an evaluation of the right technique to apply, solve the problem in very fast and simple way through use of a high level code like MATLAB, and produce a solution. That's the basic architecture of the course. Application, application, application. I want you to know how to code by the time this course is over. I want you to know how to evaluate what techniques to be applying, and the strength and weaknesses of different techniques. I want you to take your level of computational fluency a significant step upward in your professional development.