the notion of an optimization problem provides structured way to think about solving lots of computational problems whenever you set about solving problem that involves finding the biggestthe smallestthe mostthe fewestthe fastestthe least expensiveetc there is good chance that you can map the problem onto classic optimization problem for which there is known computational solution in generalan optimization problem has two parts an objective function that is to be maximized or minimized for examplethe airfare between boston and istanbul set of constraints (possibly emptythat must be honored for examplean upper bound on the travel time in this we introduce the notion of an optimization problem and give few examples we also provide some simple algorithms that solve them in the next we discuss more efficient ways of solving an important class of optimization problems the main things to take away from this aremany problems of real importance can be simply formulated in way that leads naturally to computational solution reducing seemingly new problem to an instance of well-known problem allows one to use preexisting solutions exhaustive enumeration algorithms provide simplebut often computationally intractableway to search for optimal solutions greedy algorithm is often practical approach to finding pretty goodbut not always optimalsolution to an optimization problem knapsack problems and graph problems are classes of problems to which other problems can often be reduced as usual we will supplement the material on computational thinking with few bits of python and some tips about programming knapsack problems it' not easy being burglar in addition to the obvious problems (making sure that home is emptypicking lockscircumventing alarmsdealing with ethical quandariesetc ) burglar has to decide what to steal the problem is that most homes contain more things of value than the average burglar can carry away what' poor burglar to dohe needs to find the set of things that provides the most value without exceeding his carrying capacity