Welcome back. This is Discrete Optimization in Coursera and this is not a lecture. This is about work. Okay, so what we going to do today is basically look at the course structure and the philosophy behind the courses, what we are trying to achieve. And then give you a sense of the assignment design and what you have to do in this class to get a grade, okay? So basically you have seen this picture before, right? So what you have over here is problem size. You have time over there, okay? And the goal, the goal in this class is to try to get to, to pull this exponential. Such that you can solve real practical problems, okay? So you know that the best that you could do in this problem is typically linear time, right? It means, because that is the time that it will probably take for checking a solution for actually outputting a solution. That is the number of the decision variables. You have to decide for everyone of these decision variables, what you do okay? And so what we want, what we want is you to design Algorithm in this class such that you get close to that, as close as possible. For problems that are going to be of reasonable size. So we want to pull this exponential as closely as possible to this linear time. Of course it's tough, okay? It's going to be really tough, okay? so, one of the things that you'll see in the class is a bunch of lectures to actually try to do that, okay? So you'll see different techniques, constraint programming, local search, and integer programming or mixed integer programming. And then we'll give you the tools to actually try to pull these exponential or find high quality solution quickly. Now, if you look at these assignments and can solve them all very, very quickly, okay? There is one thing you need to know, you need to call me as quickly as possible, okay? And don't tell anyone, just talk to me, okay? And we'll be in business together. Okay, so, now for the assignment. Okay, so this is how it's going to work. Okay, so we going to, we going to give you one NP-Hard problem every week. Okay, and so your goal is going to be to solve it. And you can solve it in any way you want, okay. So you will use any of the techniques we have presented, you can invent your own. But you have to optimize it as best you can. Pool this exponental, find high-quality solution quickly, okay? And then what you have to do is you have to submit this solution to us so that we know how great you are, and how beautiful your solutions are. Okay, so that's the rule of the game. Okay, one NP-Hard problem a, a week. Okay, and we'll start easy, and then we'll move to more and more and more complex problems as the, as the, as the classes goes on, okay? Now, this is how we're going to grade. You can always submit junks thing, okay, or infeasible solutions, and if you do so, you know, essentially your grade is going to be very, very low, okay? You can submit you know, solutions of low quality, and typically you'll see the assignments already have some of these solutions, and then you get a very low grade, okay? And then you start submitting good quality solution, and we'll have a lower bar, okay so a standard, that you have to meet to, to, to define what is a good, good quality solution. And it's got to be a reasonable Algorithm, and your goal is to get at least to that level, okay? Or you can submit a really, really beautiful solution And then you get a, the maximum grade. And so your goal is to be between these two lines. Okay? So essentially that's what we hope you to do. now, there is a thing which is really nice about this class is that you can submit solution over time, all over gain. Okay, so you can find your best solution, and then two days later, you have a better idea. You can, you know, run it again and submit it again. Okay, and you can come back to assignments and resubmit, we'll talk about that. You can also use different solutions for different parts of the problems and submit them at the same time. You'll see how we can do that. But essentially, we give you a lot of freedom to actually get that grade as high as possible, okay? So time commitment typically is going to be 15 hours a week, okay? So, so it's a tough class, okay? So solving NP complete problems are hard, okay? So you will have one or three hours to, you know, for the lectures and you will have essentially 12 to fi, 14 hours of coding. This is essentially for the later assignments, okay? There is, the assignments at the beginning are going to be a little bit easier, okay? So there is a time investment in this class okay, so, you have to be conscious of that. An you have to start early, you have to do these assignments. But of course as I said, you can come back to them an revise them later on, okay? But there is a significant time commitment, it's not an easy class. Okay now as I said there, the, the assignments remain open, all the time. So the dates, there is a due date which is a recommended completion, okay. So this is when we expect you to actually submit the assignment. Now take this unit seriously because the assignments are going to pile up. Okay, so you have one problem a week, okay. So if you accumulate 5 from them, that's a problem, okay, especially given these things, okay. Then you will have hard deadline that's going to be the last chance for you to submit an assignment, okay. So, you know you have to satisfy that deadline. But as I said before, you can always return to an assignment you did, you did before the hard deadline, right? So you go, you have a better idea, you know, you take a shower, you get a really good idea, you come back, you code it, you know, and then it's great. So you can submit it a new solution and see, you know, and, and we'll grade that one as well. Okay? So we'll be always extremely fair. In the sense that when we look at the solutions, we always will take the best of the solutions that you have submitted for any kinds of, for any subset of the problems that, that you have submitted. You know, the solution for. So, over time, you know, your solutions, even if it sometimes you submit the solution which is worse, it doesn't matter. We'll always take the best one and you can have different techniques for different part of the assignments. And you can run them all the different techniques, you know, on, on the assignments and we'll take the best one that you have submitted at any point, okay? So, really nice for you, okay? Now, how to succeed in this class. Okay, so first thing you have to do is relax, okay. Be creative, okay? And try to think about how to solve these problems, okay. It's, it's, it's, you know, it's I'm going to tell you a story in a moment. But it, it tends to be, it tends to be about learning, and about do, solving this problems in practice. So one of the things that we want, it's for you experience exponentially verse. Okay, so we can talk about it for hours, and hours. And, and then you don't have a fit about it. So what these assignments are for, it's for you to get a sense of what an what an NP hard problem is. What is exponential growth, okay? So once you experience that, you will get some respects for these problems. And then you're going to start appreciating some of the techniques that we'll talk about. And you will see, you know? Oh wow, these techniques are actually helping us really solve these problems. Okay? And then you will also build intuition on which one, you know, which techniques are going to be, you know, good for different kinds of problems. And which one you have to apply and which are easier to apply, and which one are more complicated. But they will give you more benefits at the end, okay? So one of the things that this class will have is a lot of programming assignments. And you can get frustrated. And I want to tell you a story. When I was actually young, you know, student, you know, a young PhD student, I had this great guy. You know, [UNKNOWN] friend. And I came to him because I disbark for two weeks. Okay, so two weeks I was trying, building this optimization system. Having a bug and I couldn't find it. And so I went to him because he had a reputation of being a good debugger and I asked him, you know, what do I have to do? And he said, well, first he told me, you are taking this wrong, okay? So you are getting frustrated. This is not what you should do. This is a game, you see. It's a game between man and machine and man has to win, okay? And so we sat down and we had fun, you know, we found a bug after about three or four hours. And it was a really learning experience so all you, you, change your attitude and then it changes the way you act as you know, view the problems. So most of the problems that you will see in this class, you can view them as problem solving tricky puzzle, okay? you, you know, you don't have to get frustrated about it. You have to say, I want to beat this machine, I want to get these machines to do what I want, okay? So you see things like Sudoku, and one of the things you realize is that some of the techniques that we are actually using in this class will enable you to digest most of the values here. In a very, very simple, simple manner, okay? And once you do that these puzzles, you know, they become much easier to solve. An many of the optimization problems that we'll see in this class. If you look at them in the right way, it's going to be really nice. You know, hog, you know, you to find a really nice technique to actually solve that, okay? Now there will be other ones that may seem completely messy. And you start by editing something which is, like, looking like spaghetti code, and so on. But you know, one of the goal for you is also to try to make these things a work of art, okay? So serving optimization problems can lead to optimization problems that are truly beautiful. You will be really proud of them at the end, okay? So, spend time finding solutions that are elegant, because most of the time, the elegant solutions are also going to be very efficient solutions and very effective solutions, okay? Now there is a collaboration policy on this class, you have to take it very seriously. You can refer to the syllabus. The, the collaboration policy is spelled out in all the details. There are things you can do and there are things you cannot do, okay? So we try to give you as much freedom as we can. There will be forum, discussion, you know, a lot of discussion on how to solve these problems. You can exchange information about solution ideas. Okay, we'll let you do that. But you have to do that at a high level. Its like your personal life, right? So you can talk about it at a high level, but you don't want to enter into you know, intimate details, okay? You can share all the objective values, discuss some of these techniques but you know, stay at a reasonable level, okay? Now there are things that you, we don't want you to do. So don't go on the web, find the cutting edge research paper on the assignment and implement it, okay? So you will learn nothing, okay? Because essentially, you're going to take some you know someone else's ideas, code them, and the only thing that you will have done is basically understanding that techniques. But he will not have understood what this class is all about. Getting used to experience you know, what these problems are about, what are exponential growths, and how you have to be creative to actually solve these problems. Because most NP hard problems, okay, that you will encounter in practice are not the ones that you find in papers. Papers simplifies them, there are plenty of other constraints that you have in real life that typically are not in the papers that are written by, in academia and for a good reason. Because you don't want to describe the complexity of this world. But in practice, you will have to cope with that. So, you have to experience what it means to solve an actual you know, an actual problem. And you have to get a feel of what going to work and what is not going to work. That is why you don't what to do this, don't go and implement something that somebody else has designed, okay? The other thing that we don't want is you to copy codes from anyone else or, you know, to copy the algorithms of anyone else. Everything, you know, you use in this class should be your own, okay? As I said you can discuss the various approach, okay? So we encourage that, okay, because in real life you can do that, okay? But we, wanted to find a solution, be your own. It has to be your own algorithm. It has to be your own code, okay? So, have fun. Optimization is fun, you know the assignments are going to be fun, you're going to learn tons of things in this class. It's a lot of work, okay? [SOUND]. But it's also, it's also rewarding in the end when you see these things you know, generating very high quality solutions. Proving optimality to something that seems to be completely out of scope. Okay? So welcome again, you know, and start working. Great.