This is the last module of the third course in our specialization. You are going to learn two things in this module. First, you are going to learn the basics of how to model problems that require yes or no decisions. These models use variables that can only take on two values, zero or one, they are called binary variables. There are many business problems that can be modeled with binary variables. So it's important that you know the fundamentals of this model. Second, you're going to learn how predictive and prescriptive analytics can be combined in a single model. This will illustrate how techniques don't live in isolation, they can work together to tackle complex problems. In fact, you can consider this a preview of what we're going to ask you to do for the capstone project for this specialization stage. In module three you learned that optimization can be used to find the best option out of many possible alternatives. Linear programming was a solution technique behind the models that we formulated. Recall that for linear programming to work all the functions in the model must be linear. That is, the functions must be sums or differences of variables, multiplied by constant values. The variables in those models, are allowed to take fractional values, in a range that we are free to specify. The ones that we created, if you recall, we forced the variables to be non-negative. Those variables are helpful to model many type of decisions, but they're not helpful when the decisions are about whether to do something or not. For example, if you want a model to choose a set of suppliers, then you need variables that can tell you whether a particular supplier is chosen or not. This will be the same as in the situation where you would like to choose the type of digital ads to use in an advertising campaign. Anything that has to do with choosing an item or not requires binary variables. Models with binary variables are part of what is called integer programming. Solving integer programming problems is exponentially more difficult than solving linear programming problems. This is why these problems are often solved using heuristic optimization. When a Heuristic search ends, it can not guarantee that the optimal solution has been found. However, these techniques normally find optimal solutions, or they provide very good approximations. In general, they can find a solution that is much better than what you and I could find by a manual process. We'll discuss some fundamental concepts of Heuristics versus optimal procedures and we'll show some examples. The second part of this module is really exciting because we will combine what you learn in module two and module three. Remember that in module two, you learn about Monte Carlo simulation, this technique allow you to model uncertainty. We saw that adding uncertainty into a model is important because expected values tend to simplify things too much by ignoring the full complexity of the problem. Well after we model uncertainty with Monte Carlo simulation, we went back to using respective values to create optimization models in module three. In part we did this because I wanted to introduce optimization without the complexity of dealing with uncertainty. But now you know the fundamentals of both, simulation and optimization. So it's time to combine them and create models that use predictive and prescriptive tools to deal with the reality of complex decision problems.