All right. I'm going to talk to you about the create tasks from the advanced placement computer science principles course. However, this is a great task or rubric that you could use for grading any programming assignment you want to give in your class. So, what do you actually going to do? You're going to develop a program, in 100 percent that's the case. They use the word computational artifact a lot. But in this case, you're absolutely producing a program. There are two key components. One is it must be a program that interests you or it can solve a problem. I could tell you very interesting stories about why the solve a problem part came about, because we really really want when we are developing a course to be about something that the student is interested in. We don't want to just say print out the first 10 Fibonacci numbers or something like that. So, but there are a lot of traditional computer scientists who like the computer solve problems, and that's true they do. However, computers also allow you to express your creativity, and that is supposed to be a key focus of AP CS principles course. I think it should be really key focus of any K-12 computer science class. So, let me strongly encourage you as a teacher to make sure that at least some, if not many or all in some cases of the programming assignments you give, are about things letting students design cause they interests them. All right. Two key things you're going to do. First, you're going to develop the program, and by the way, I'm going to give you a cheat sheet to keep track of notes when you develop because you're going to have to tell us later about how you iteratively developed your program and tested it. Then again, that brings us to the second point. Besides actually turning the program, you're going to have to write about that program. You're going to have to write about the development process, and you're going to have to write about the final bits that you created and tell us about that. That's what we're going to focus on next. Just so you get a preview, there's actually this huge, big, it's two pages. I actually think it just pulled over under three, scoring guidelines on the create performance task with very explicit things that people look for and get points for or not. So, this is going to be your friend, you are going to get to know this really well, just not yet. All right. So, there are two really key parts to the create task. Yes, you're going to create something of interest to you. But, it must feature very strongly algorithms, in fact three of them, and abstractions, one of them. So, let's start by talking about what algorithms are. So, the first box here, algorithms are used to develop and express solutions to computational problems. That description comes from the AP CS principles examined course guide. So, from the AP version, they think algorithm is used to develop and express solutions to computational problems. The bottom definition comes from the CSTA standards page. An algorithm is a step-by-step process to complete a task. I think those are a both true, and b actually, interestingly represent different aspects of thinking about what an algorithm is from the point of the fact that you need to create a program that uses at least three algorithms. So, one key thing to note from the rubric and we'll bring this up later is, an algorithm by definition for the advanced placement people can not be a single instruction. Single instruction is just not complicated enough. It needs to have some computational value that you can talk about. I think really when you get down to it, what they're really looking for is when you say, this thing here is an algorithm, then you can have some English description to say what it does. So, this prints out the first ten numbers of Fibonacci. Isn't first tenth Fibonacci numbers, because that would be an algorithm. Can also be like this implements the scoring update in my Pong game, or this detects whether the ball has gone out of bounds and does the following. Those are all algorithms. So, you guys just did this. I would say that this is an algorithm, not pink picture but they fill sky, draw a sun, draw a grass, draw a flower. That is an algorithm that I would say, together, this algorithm paints a picture. This is not an algorithm, it is a single instruction. Yes, the thing inside it as we just saw, yes that's an algorithm. But actually just calling not a single instruction, that's not an algorithm. But here's another algorithm. This is from way back with while loops, right? What did this do? It implemented a program that said, ''Booting up try to stop me with your mouse.'' Then, it has a game that you are moving around until you're touching a particular thing, that's flying around the screen. I think it was a soccer ball, I don't know. All right. So, one key takeaway here, is that for the purposes of grading whether something has an algorithm or not, it can be really beneficial to make a single block as we did, and putting your entire algorithm in it, that can make it much easier for the grader. Whether that's you, the person that teacher is grading, or is we're going to see what APCS principles view all we sent in, and there'll be graders hired by the College Board that will grade your students work. So, I recommend to students that they make a block, a method, a procedure, and then put their algorithm inside that because that makes it easier for the grader to see and obviously agree that this is an algorithm. Let's go on to abstractions. So, here's the definition of abstraction from the advanced placement course in exam description guide. It reduces information and detail to facilitate focus on relevant concepts. Now, that's a big definition of abstraction that could apply both in computational thinking but also in programming. Here is the definition of abstraction in two parts from the Computer Science Teachers Association Standards. They recognize the fact that abstracting is both a process, but I'm going to focus us for the purposes of the create task on the second definition, a product. Why don't you read that definition please? Okay. So, key thing in terms of a product, it's a representation of something. It's going to be a representation of code, and it allows you to re-frame a problem by hiding details, that's key. The word irrelevant to the question at hand that's a little much detail. But you're going to be basically making methods and hiding details. Creating blocks to hide away details. That's what we're doing. So, here's an example of abstraction. Fillsky, calling that method, that is an abstraction. It's hiding away the details of set pen color, pen down, fill. There could be, you could imagine ''Oh my gosh.'' You could make your fillsky so much more complex. You can have all things in it. Maybe it's gradients or things like that. But, there's three-part process in this case, and we can abstract away and not have to think about those details when we're building something just by calling fillsky. Here's another abstraction. We said paintPicture itself was just a single instruction. Yes, it's a method call, and it allows us to abstract away and not have to think about the fact that painting a picture involves filling the sky, drawing the sun, drawing the grass, drawing the flower. Maybe there'll be drawing lots of other things, okay? So, it really simplifies and hides away the irrelevant details when we just want to say paint the picture. So, let's come back to where we started. Just remember that even though we're talking about, we need to be really careful when thinking about algorithms. As we go forward, you're going to see how even more it can't just be three separate algorithms, set as one algorithm or two. We'll get to that detail, and that you really have to have an abstraction. That, it's important that we want you to build a program that interests you. We really want you to specially, to encourage your students to build programs that are important to them because part of the goal of the computer science and K-12 should be not only to build up these computational thinking processes, but also to inspire students about how computation can be involved in making the world a better place, or allowing them to accomplish a goal that they have for themselves, their family, or their community, et cetera. So, interesting problem that interests you.