As we mentioned in the introduction, now we're going to take a look at the graphical organizer tool that we have set up to help structure your thinking, to help structure the different practices that we've been talking about, and to help you both follow along some of the cases that we are presenting along with using this for your own project. The graphic organizer is separated into a series of pages. Each page is about one of the iterations that you will be doing as you're breaking your problem down and structuring your problem. So as we talked about in the introduction, you may iterate through this process many times, and so we have a large number of pages here you can use for iteration. You probably won't need to use all of them. You shouldn't feel pressure to use all of them. They're just there to help you go through your problem in as many ways as you need to, to break it down, structure it, and get it ready to start thinking about some algorithms. Now, in the iteration pages that we have here, you'll see slots for identifying your problem which we have here, you'll see an area where you can start decomposing your problem into subproblems; and then if you have any notes any ideas throughout this process about some patterns you could use for solving your subproblems, you can jot those down in the pattern recognition box. Finally, if you have any ideas about abstraction, about some information or data that you don't think you'll need or that you need to think about differently, you can jot those down in this bottom box. So again, there's no set way to go through this. There's no right or wrong answer, no right or wrong way to do this. There's just these different areas where as you get ideas, as you're thinking about your problem, you can write down different notes, write down different pieces of information to help break your problem down and get it ready for ultimately thinking about some algorithms to solve those problems, and then later you would start writing computer code to implement those algorithms. So if we go back to the cake example that we did in the introduction. We could start out here with the first iteration of our problem, and as you recall we had a really high level problem where we said that we need a cake for my grandmother's birthday party. As you recall, we said that was a pretty good way to start as a good problem that we think we can start addressing, but maybe it needed a few more details. It might still be a little bit high level. We might need more information to think about pieces like the cake and what kind of cake we need. The birthday party, where is it? When is it? How do we get there? Things like that and so while this is a good starting point for our problem, we then decided that we might need to think about breaking this down, getting more information, and stating our problem in a more detailed way. So if we do that, we can now go to a second iteration where we have now described our problem and broken it, not broken it down yet, but described our problem and put a lot more information that'll help us think about the specific problem we want to solve, different aspects of the problem that we want to solve, and different pieces of information that we may need in order to solve the problem. So as we did in the introduction, we can now show here where we said for "I needed a cake for my grandmother's birthday party." We now after thinking about it and getting more information, we have a lot more detail. We know we want a chocolate cake with some fruit, simple frosting. We know what we want it to say on the decorations, and we have some time constraints in some budget constraints for the project. So now that we've done this, we have a much more detailed problem that we can start working off of to continue on with our problem-solving process here. So once you've identified your problem, and you feel good that again this is a problem that computers could help solve, and it's a problem that has enough detail that you could start moving forward with, we can start thinking about other pieces of the process that we need to address. So at this point, you might have had some more information about your problem, and if you still thought I think I need some more details yet again, you would then probably go to a page for iteration three and start making a more detailed take on your problem. But here we feel pretty good at iteration two. We think we have a good problem, and now we're going to move on to the other parts of the process. So once we have our problem, we can start breaking that down into smaller subproblems that we can solve. This was the decomposition phase, and as you can see here, we broke this down into four distinct subproblems where problem number 1, we had to make the cake; problem number 2, make the frosting; problem number 3, think about how we were going to present the cake; and at this point we thought we were going to decorate the cake and build a cake base, a large base that we would have the cake on that we could put photos and other mementos on. Then, subproblem number 4, we need to transport the cake to the party. So these are the four subproblems that we can break our big problem down, and again this makes it easier to start thinking about how we're going to solve the larger problem because now we can start thinking about how we're going to solve these individual problems and then taken together, the solution to these different problems will help us solve the larger problem that we've identified. Now, after we've decomposed the problem into four subproblems, we can start to think about are there patterns, are there pieces of information, is there data that we've seen in the past that can help us address these different subproblems. So for example, if we are going to build the cake as our subproblem, well we can think about are there previous cake recipes that we've seen that we can modify or that we can use for our particular problem here. Perhaps we could find the exact cake recipe that we would use and then that cake recipe would be our algorithm. But maybe we want to find a base case for a cake and then we can play with it, improvise a little, and try and add to that cake recipe. But the first thing we want to think about are there previous recipes that we could use and that we could modify for this subproblem. Similarly, we could do the same thing with the frosting that as we think about making the cake frosting, is there a previous frosting recipe that we can modify in the same way? We can either use that particular algorithm, that particular recipe for the frosting, or we can use that recipe as the base case that will then modify and improvise with. Then we can think about the third subproblem here which is the presentation for the cake and how we're going to decorate it. Again, we might think about some previous ideas about cake decoration. Maybe we looked on Pinterest or maybe we looked in some magazines and we got some ideas for how we might decorate the cake and the cake base. We could record any ideas that we have in the pattern recognition box. Here for the sake of this example, I have these three sentences in this box that are pretty simple but you can feel free to write down as many notes and as many ideas as you think you need to help you remember everything that you want to do. Don't feel that you need to jot everything down in short sentences, we're just doing that here for the example. So for example, here for previous ideas about cake decoration maybe you have a long list of things that you want to think about for how you're going to decorate and present the cake. Now, the middle box here, again, is where we could jot down any patterns or any ideas we've seen in the past to help us solve the subproblems that we've identified here. But we have this third box down here called abstraction. In the abstraction box, this is where we can jot down some ideas or some notes about things that as we're going through the problem maybe we start to realize that we don't need some of the things we're thinking about or that some of the problem-solving ideas we thought about are actually detours that are taking us away from the larger problem we want to solve. So for example, if we go back to how we're going to present and decorate the cake. When we started this problem, we thought about a very fancy cake base and that we would have photos and other mementos on the cake base, but maybe as we start going through this problem and we start seeing the different pieces that we want to do, we start to realize that maybe the original plan for the cake base it's too expensive and too difficult. We want to abstract out some of the detail that we need for the cake base, and so maybe here we've decided maybe we just need a simpler decoration on the cake and we don't have to worry about a big base because we don't have the time or the money to do that at this point. So we might jot down some notes and talk about how this piece we need to simplify. We don't need all the details for the cake base that we thought about before. As we do that, again, this is not a linear process. So as we're thinking about this, it could then help us think about these previous ideas about cake decoration. Maybe we don't need all the ideas we thought about and maybe we can simplify this piece right here to help us simplify a solution to that subproblem about how we're going to present the cake. I will stop here with the second iteration because we had a really small example and that summed up and showed you just in a really easy way the different phases that you might want to think about. But as you develop larger problems, more complex problems as you look at some of the cases we might talk about here in the case studies you'll see later, you could if necessary, if you wanted to go to as I said a third iteration or even a force iteration and continue writing down notes, clarifying ideas, breaking your subproblems down into more subproblems, etc. You might want to think about using this organizer to organize your thoughts. You might have four iterations. You might have as many as you need. Again, there's no right or wrong way to do this. But the whole point is that you structure your thinking, write down your thoughts about how you can work on clarifying, breaking down, and creating the algorithms to solve the problems that you are showing here.