Hello and welcome to Pointers, Arrays, and Recursion, the third course in our specialization, Introduction to Programming in C. From the first two courses, you've gotten the basics of developing algorithms, C programming, and the tools you need to compile and run your program. Now, it is time to delve into the topics that will let you work with sequences of data, enabling you to solve a much wider range of problems. First, we're going to talk about pointers, which specify the location of other data. We'll start with some of the basic mechanics and concepts before we proceed to their various uses. One important use of pointers is arrays which represent sequences of data. Remember our closest point algorithm from course one? Once you've learned about arrays, you will be ready to translate this algorithm into code. Of course, you'll also be able to use arrays to solve a wide variety of other problems. After you master arrays, you'll learn about strings. You've used some string literals but we haven't delved deeply into the details of manipulating or computing on strings. Strings are basically arrays of characters, so you'll be ready to learn all about them at this point. You'll also learn about multi-dimensional arrays. Two-dimensional arrays, for example, allow you to represent matrices of data. And you'll be able to work with arrays of higher dimensions if you have problems that call for it. We'll wrap this course up by talking about recursion. Recursion is another way to think about problems where you express the solution to a complex instance of the problem in terms of the solution to a simpler instance of the same problem. There are many problems that lean themselves naturally to recursive solutions, so we want to be sure you have this in your programming skill set. So, let's delve right in.