All right, so welcome to the summary of the first module. Here we're going to go through what we have to do, what we've seen over this material, and the workshop and assignment for this module. >> Right. >> So, Jimmy, what have we seen? >> Right, I hope you have been enjoying the journey with our three kingdoms. Heroes, the heroes have met, they have even sworn their brotherhood in the Peach Garden. And the rest of the stories mainly focuses on the problems they have encountered informing the armies, as well as, doing weapon production. So what have we learned? >> So that's the story in the technical side of the course, where we've seen basically how to model in music, basic modeling approaches. We've learned the basic concepts of modeling, so we have decision variables, and constraints, and objective, and an output statement, to see the result of our model. >> Well the objective is optional, right? Because actually students, they also learn how to differentiate between a satisfaction and an optimization problem. >> Yeah, so those are two classes of problems we'll see throughout the course, where we just want to find any solution to our problem, or where we'd want to find a good solution to our problem. So what else have we learned? >> I think, of course, after a student has started doing modeling they have to be able to run the models as well. So we have taught them how to make use use of the [INAUDIBLE] IDE to run the models, as well as, running, using the command prompt, but of course, we never show that but it's very easy. >> Yeah so we expect that most students will run the IDE throughout the course. >> Yeah >> Okay among the other things that student learn in modeling, I think one thing that is particularly important is the concept of types. That allow us to give names to data that would really help to make our models much more understandable. >> Yeah, and one thing we've seen, another important concept, is this separation between a model, which is a basically a recipe for solving a class of problems. And an instance, which is a model together with the data, which is a problem we can actually solve. >> And then the students also got to see a very important data structure, arrays. They allow us to make use of iteration, such as for all and some, as well as, array comprehension to process such array datas >> Yeah, and arrays are going to be essential to us to be able to model a problem which takes arbitrary different sizes of the actual data, so we can solve different size problems with the same model. >> Right because of that, that would allow us to build one model that is general enough to allow us to use it solve several related problems. >> Exactly, and we've look at classes of problems, we've look at linear models, where all the constraints are linear. This is a particularly important class because there is a kind of solver that is mixed to your programming solvers, which are specialized to handle this class of problem. And we can handle very big problems of this class. >> Yeah, and of course, allows us to model nonlinear constraints as well, such as the not equal relationship. >> Absolutely and we've also seen a generalization of the not equal, which is our first global constraint, this is the all different constraint which allow us to say that all of these variables take different values. And we'll see many, many more global constraints throughout this course. >> And also in the last chapter we learned a very important modeling concept in which we are allowed to make use of variables as indices for arrays. >> Yeah that's true, that's one of the powerful modeling tricks that we'll use throughout the course. >> Yeah, and what kind of applications have you seen? >> So we've seen production planning, that's a very classic optimization problem, that goes on throughout the world everywhere. Where we're trying to work out how to best make use of the resources we have to build some products, or build some internal things at the most efficient way. >> Yes, we will see the production planning also has many, many applications as well. >> So we saw graph coloring, now graph coloring may seem to be a kind of toy problem that no one's really interested in, but in every compiler there's graph coloring to do register allocation. And graph coloring is kind of a simplified version of roistering. >> Yeah, and of course it has applications in time tabling as well. >> And time tabling and roistering, yeah. >> And then we also saw a knapsack problem. >> Yeah, so the knapsack problem is kind of the smallest discrete optimization problem which has all of the nasty things. It's in be hard, so it's going to be hard to solve. And it's really this exact trade off between the constraints fighting against the objective, which we'll see as a large part of what we do in discrete optimization. >> We all want to be able to solve knapsack problem because we always have limited capacity, but we always want to maximize our profits. >> And knapsack problems occur as a sub problem of many, many real world problems. >> Yeah. >> So, we've now finished the course material, now you'll need to go off and do the workshop and the assignment. So, workshop one is about temperature control in a forge, and you will use linear constraints and arrays. And mainly it's there to make you see beyond the procedural view, the first part you'll think, I can easily write that in a procedural language. The next part we are actually writing controller, you need to think declaratively, and so that's the aim of that workshop. >> Right, remember to read the specification and try the problems before watching the solution videos. >> And then assignment one is also it's going to be fairly simple, they'll get harder, don't worry. So you're going to solve some cryptarithm problems, and the very first one is just checking that you can actually submit through the Coursera infrastructure. And then you'll look at more complicated cryptarithm problems all based around the seven paces poem story. >> Right, so, this is the end of the summary.