[MUSIC] Welcome to the principles of computing. In this video I want to give you an overview of the course. Let's start by talking about the objectives that we have for you in this course. First and foremost, we want you to be able to solve complex problems using a computer in a principle way. We don't want you to just sit down at a computer and start coding and hope for the best. Instead, we want you to think about what your doing, and why, right? Part of this is mathematics, so we're going to introduce you to some of the mathematics that Computer Science has used to solve problems everyday. And this will help you to approach, a wide variety of different problems. We also want you to build upon the programming experience that you have. Wants you to be able to think about what you're doing and why and to be able to build more complex programs. And part of this is teaching you some of the principles of good programming. It's one thing to be a programmer it's quite another to be good programmer. So we want you to start thinking about how you're approaching a problem, why you're approaching it in a certain way. And whether or not there are better ways to approach that problem, okay? And this will help to make you a better programmer. Now, you'll notice that this class is called Principles of Computing, not Principles of Programming, all right? So we want to talk more about computer science in the abstract rather than programming in the specific. However, programming is an integral part of computer science, so you do need to know how to program. Now, if you have never programmed before, this course is not for you. This is not intended as a first introductory course, all right? So, we expect you to have taken our previous course, and introduction to interactive programming in Python, or the equivalent, okay. And this first week here, the assignments should help you understand if you are prepared for this course or not. Okay, if you are struggling or can't do these first week's assignments, I strongly suggest that you go take an introductory course first and then you come back to us, okay? Now, if you have taken an introduction to interactive programming in Python, I want to point out that this class is not about interactive GUI programming, okay? So we're not going to use the interactive programming techniques and we're not going to use the graphical user interfaces that we talked about throughout that course, rather, this course is going to focus more on the internals of programs and how we use a computer to solve problems, okay? So, if you've taken a different course that didn't have this interactive or gooey element to it, that's not a problem. This is really just what we need from these introductory courses is a foundation, where you able to write a couple hundred line programs and you're comfortable with Python. Now let's talk about the structure of the class. There are three main components of the class. First, there'll be a set of video lectures every week. And these video lectures will be relatively short, and they will be targeted at particular concepts that you need to know for the material of that week, right? Then there will be a homework. The homework is actually going to require you to apply the concepts of the week, and will probably take you some time. It's going to use the Coursera quiz format, but you are going to have to think. You might have to do some math, you might have to write some programs right to answer some of the questions. Okay, hopefully then after you've done the homework you're ready to attack the mini projects. Which is third component of the course, right. And the mini-project is a programming assignment that will require you to write maybe 100 lines or 200 lines of code and solve a complex problem. Okay. So together we feel that the lectures, the homework and the mini project should cement the concepts that we're trying to teach each week, so that you have a greater understanding of the principles that we've been putting forth that week. This is the principles of computing website. If you've taken other Coursera courses, then it probably looks pretty familiar to you. But I still want to walk you through a few of the things that might be unique to our course, okay? Each week, we have things divided up into a couple of different sections. First, we have the core materials. These are the materials that you should definitely look at to make sure that you understand the topics for the week, okay? And it finishes with a homework assignment which is a Coursera quiz that tests your knowledge of these topics. Then we have a mini project section and this is where we have our programming assignment for the week. And there's a video explaining the mini project and then a detailed description of what you need to do. Okay. And this is also where you would then submit that mini project to our machine grader, okay. And then finally, there is is a supplemental materials section. And each week we'll have a couple extra things perhaps that have some maybe math notes that are related to the materials for this week, or coding notes that are related to the materials for this week. And probably one or two practice activities, so that you can practice the topics before you go about doing the mini project. I think you'll find that would be helpful. I also want to call your attention to a couple other things in the course here. All right. There are the discussion forums over here, where you can go if you want to discuss the course, if you need help. And then the Resources section, which I think is very important for our course, where there's a bunch of different Coding Notes, Math Notes. And as also you can see the Honor Code policy for our course. And you can also get to the Submission History, so you can see all the feedback for all of the submissions you've made to our machine grading infrastructure. As with an introduction to interactive programming in Python, we're going to use Code Sculptor in this course. Code Sculptor is a simple web based ID that allows us to do everything that we need to do for this class. Okay, so let me run my simple program here, welcome to Principles of Computing. So all of the examples that you see from the staff, in the videos and on the course pages, will be from CodeSkulptor. And this allows us to very easily share code with you that you can run immediately on your machine. Now, we're not going to take advantage of the special GUI features of CodeSkulptor except to provide simple GUIs to some of the programs that you're going to write. But it's not actually necessary for you to use those GUIs if you don't want to, okay? CodeSculptor runs Python 26, okay? And all of the programs that you write in CodeSculptor should also run in any Python 2 installation. It is important, however, that you do use Python 2. There are a couple other aspects of the class I'd like to call your attention to. The first is that coding style will be important in this class. We have a set of coding style guidelines and we do expect you to adhere to them. We'll also be machine grading the mini projects in this class. And we have a web interface to our machine grader, so you can submit your code, and understand what grade you will get if you submit it to Coursera. Okay, the machine grader also will grade your style to the extent that it's possible to do so. And if you violate the style guidelines, you will lose points from the machine grader. Now, I'm excited for this class. I think it will be fun to dive a little bit deeper into computer science and to think about how we can take a more principled approach to solving problems and designing programs. I hope you are ready and excited as well.