Section 1 – Brief Course Description In 2009, the College Board, in partnership with the National Science Foundation, received a grant to prototype the development of this new course, titled AP Computer Science: Principles. The course will introduce students to programming but will also give them an understanding of the fundamental concepts of computing, its breadth of application and its potential for transforming the world we live in. It is rigorous, engaging and accessible. Computer Science Principles is a proposed AP course under development that seeks to broaden participation in computing and computer science. This course covers/explores many important concepts in computing such as, storyboarding (flowcharts), object oriented and event driven programming, how to create an use world/object methods, use of parameters, functions and If/Else statements, Boolean functions, randomness, loops and conditional loops, recursion, list search and list processing, variables, debugging, and array visualization using an index variable. Section 2 – Textbooks/Supplemental Instructional Materials Textbook: Learning to Program with Alice (3rd Edition) Publication Date: March 7, 2011 Publisher: Prentice Hall Authors: Wanda P. Dann, Stephen Cooper, Randy Pausch ISBN 978-0-13-208516-8 The text will be read entirely over the duration of the course. When/how/why this text is used is integrated in the key assignment section The class, Computer Science Principles is modeled after the CSE 3 course (informational fluency), taught at University of California San Diego by Professor Beth Simon. This course uses the same textbook and is a required class for all nonengineering freshman at the university. Supplemental instructional materials: Website: Expeditions through Alice https://sites.google.com/a/eng.ucsd.edu/expeditions-through-alice/ Website is read in entirely over the duration of the course. When/how/why this text is used is integrated in the key assignment section Section 3 – Course Purpose This course is designed to provide the student with the analytical and logic skills to understand and apply computational logic and processes to the understanding and use of basic programming (using Alice) and the ability to explain the logic behind basic sequencing of functions in programs such as Excel. The emphasis in this course is the ability of the student to understand the logic behind the actions of the computer, the analytical skills to be able to explain the logic or the errors in the logic, and the communication skills to explain the logic to peers and instructors. This course is rigorous and rich in computational content, and includes computational and critical thinking and skills, while engaging students in the creative aspects of the field. Through both its content and pedagogy, this course aims to appeal to a broad audience. CS Principles – Section 4 Unit 1 – Getting Started With The Alice Programming Environment Major themes to be covered: Introduction to Alice Alice Concepts Text and 2D Graphic Images Alice is a 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to objectoriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. By manipulating the objects in their virtual world, students gain experience with all the programming constructs typically taught in an introductory programming course. Alice allows students to create cartoon-like animations of objects. The objects are three dimensional, having width, height, and depth. Each object has an orientation that provides a sense of direction. That is, an object “knows” which way Is up, down, left, right, forward, and backward relative to itself. A computer program can be thought of as a sequence of instructions that tell the computer what to do. Importantly a computer program is also a way to tell another human being what you want the computer to do. Learning to think about arranging a sequence of instructions to carry out a task (how to design a program) is probably the most important part of learning to program. Students will be shown the interface and basic operations such as importing objects, methods, how to order and modify instructions, and execute the code. Students will be shown some examples of what is possible with Alice as well as how to insert text and 2D images into their worlds (billboards). Learning Goals and Outcomes: Students will understand that learning to program is actually learning how to think about arranging a sequence of instructions to carry out a task. Students will understand that a program is a sequence of instructions that tell the computer what to do. It is a also a sequence of instructions that tell another human being what you want the computer to do. In Alice, the animation of 3D objects takes place in a virtual world. Students will know that Alice provides a huge number of 3D models. Furthermore, an Alice object has a unique center set by graphic artist when the 3D model is first created. The center of the ground in an Alice world is located at the position(0, 0, 0). Students will know how to insert text know how to insert text and the how to use billboards (2D images). Unit 2 - Program Design and Implementation Major themes to be covered Scenarios and Storyboards Orientation and movement instructions Translating a written description/scenario into Alice code Fundamental concepts of Alice will be introduced. Students will begin with reading scenarios and designing a storyboard. A scenario helps programmers set the stage. It will tell them what objects will be used and what actions they will perform. Students will be shown how to break down a scenario into a sequence of scenes that provide a sense of the order in which the actions will take place. The resulting storyboards can be used as a guide for the implementation (writing the code). Finally, Testing code (writing the program) will be an important step in finding and removing bugs (errors in the program). Students will be shown how to use comments to explain their coding. Learning Goals and Outcomes: Students will understand that a scenario is a problem statement that describes the overall animation in terms of what problem needs to be solved. Students will understand that storyboards can be visual or textual. A visual storyboard is a sequence of hand-drawn sketches or images that break down a scenario into a sequence of major scenes with transitions between scenes. Each sketch represents a state of the animation – sort of a snap-shot of a scene – showing the position, color, size, and other properties of objects in the scene. A textual storyboard is more like a to-do list, providing and algorithmic list of steps that describe sequential and/or simultaneous actions. Students will understand that a program consists of lines of code that specify the actions objects are to perform. The characters that are used in Alice are known as objects. Students will understand that we write program statements to make the objects move by dragging their action instructions (methods) into the editor. Also students will understand that within the Alice programming environment that code is structured in Do in order and Do together blocks to tell Alice which instructions are to be executed in order and which are to be executed simultaneously. Complicated animations may be constructed from simple compositions of Do in order and Do together blocks of code. Knowing what each means and knowing how to combine them (by nesting on inside the other) is powerful; it provides an easy way to put together more complicated actions. Unit 3 - Programming: Putting Together the Pieces of Program Code to Create Programs Major themes to be covered: Built-in Functions and Expressions: Simple Control Structures Camera and animation controls Objects Oriented and Event driven Programming Concepts Students will be introduced to the different types of “pieces” of program code such as: Instructions – statements that execute to make objects perform a certain action Control structures – a statement that controls the execution of instructions Functions - asks a question about a condition or computes a value Expressions – a math operation on numbers or other kinds of values. The Alice programming environment provides the students built-in functions for the World and for objects within. Students will be shown how expressions will allow them to compute a value or preform a comparison of some property of two objects. Understanding that one of the uses of functions and expressions in an animation program is to help avoid collisions (when an object moves into the same position as another object). Students will be shown how to use the built-in functions and Boolean expressions to check the current condition in their world (program) and make decisions about whether (or not) a section of the program will be executed. The students will learn that within the Alice programming environment, that the conditional execution control structure is the If/Else statement. An If statement has two parts: the If part and the Else part. In the If part, a condition is checked and a decision is made depending on the condition is true, the If part of the If/Else statement is executed. Otherwise, the Else part of the statement is executed. It is possible that the Else part of the statement may be Do nothing, in which case no action is taken. Also that the simple repetition control structure is the Loop. A Loop statement allows you to repeat a section of program code a counted number of times. Learning Goals and Outcomes: Students will understand that functions can be used in Alice to ask questions about properties of the World or properties of an object within it. Also that functions can also be used compute a value. Students will know that when a function is called, that it returns a particular type of value. For example, a Boolean function returns either true of false. Students will understand that an expression may use an arithmetic operation (addition, subtraction, multiplication, division) to compute a numeric value. Students will understand that another kind of expression compares one object to another, using relational operators (==, !=, >=, <, <=) and the result is true of false. The conditional execution control structure (within Alice, an If/Else statement) is used to make a decision about whether a particular section of the program will be executed. Lastly, that a repetition control structure is used to repeat a section of program code again and again. For example, a simple repetition control in Alice is the Loop statement. Unit 4 - Classes, Objects, Methods and Parameters Major themes to be covered: World-Level Methods Parameters Object-Level Methods and Inheritance Properties; visible and invisible objects Students will learn how to write their own methods and how to use parameters to send information to a method when it called. An advantage of using methods is that the programmer can think about a collection of instructions as all one actionabstraction. Also, methods will make it easier for the students to debug their code. Two different kinds of methods can be written: world-level methods that involve two or more objects interacting in some way, and object-level methods that define a complex action carried out by a single object acting Students will be shown that parameters are used to communicate values from one method to another. In a method, a parameter acts as a placeholder for a value of a particular type. Furthermore, when an argument is sent in to a method, the parameter represents that argument in the instructions in the method. Students will be exposed to and practice working with object, sound, string, and numbers, and other types of values. Students will be shown that methods can be thought of as extending an object’s behavior. Once new object-level methods are defined, a new class can be saved out. The new class has a different name and has all the new methods (and also the old methods) as available actions. It inherits the properties and actions of the original class but defines more things than the original class. A major benefit is that you can use objects of the new class over and over again in new worlds. This major benefit is that the students can use objects of the new class over and over again in the new worlds. This allows you to take advantage of methods you have written without having to write them again. Students will be exposed to guidelines for writing object-level methods: only sounds imported for the class should be played in a object-level method; world-level methods should not be called; and instructions involving other objects should not be used. Following those guidelines will help ensure that objects of their newly defined classes be safely be used in other worlds. Stepwise refinement will be covered, which is a design technique where a complex task is broken down into small pieces and then each piece is broken down further – until the entire task is completely defined by simple actions. The simple actions all work together to carry out the complex task. Learning Goals and Outcomes: Students will be master the concept of how to run (or execute) a method, and that this requires that the method must be called. In a call to a method, a value sent in to a method parameter is an argument. Parameters are used for communication with a method. Students will understand that a parameter must be declared to represent a value of a particular type. Types of values for parameters include object, Boolean (“true” or “false”), number, sound, color, string, and others. Students will be able to create new classes by defining object-level methods and then saving out the class with a new name. The concept of inheritance, which is an object-oriented concept where a new class is defined based on an existing class will by understood. Students will understand that object-level methods can be written that accept object parameters. This allows programmers to write a object-level method and pass in another object. Then, the object performing the object-level method can interact with the parameterized object. Unit 5 – Interaction: Events and Event Handling Major Themes to be covered: Interactive Programming Parameters and Event Handler Methods Creating your own models Students will focus on the creation of interactive (event-driven) worlds. Creating worlds with events will allow them to build significantly more interesting worlds (programs), such as game like animations and simulations. Just like many other object-programming languages, event-driven programming requires knowledge of advanced of topics. Students will be able to use the Events Editor to create events and link them to event handling methods. The event handling method has the responsibility of taking action each time the event occurs. The Events Editor will handle many of the messy details of event-driven programing and will allow students not be held back syntax structures. Learning Goals and Outcomes: Students will understand that an event is something that happens (usually a user interaction). Events are created by user input such as a keyboard press, mouse click, joystick movement) and that evens are linked to an event handling method. The concept that each time an event occurs, its corresponding event handling method will be practiced and understood. Students will understand that this is what is meant by event-driven programming. Students will understand that an event handling method contains instructions to carry out a response to the event and that a parameter can be passed to an event handling method when an event occurs. The idea of incremental development will be covered and practiced. Incremental development is a skill used by programmers where they will write and test a small piece of code, then write another small bit of code and test, and so on until the entire program is completed. Incremental development is a technique that will make it easier for the students to debug their work. Unit 6 - Using Functions and Control Statements Major Themes to be covered: Functions and If/Else Functions Execution Control with If/Else and Boolean Functions Random numbers and random motion Students will be shown different ways to use functions and If statements in methods. In Alice, an If statement allows for the conditional execution of a section of code (based on the value of a Boolean condition, true or false). The Boolean condition is used to determine whether the If part of the Else part of the statement will be executed at runtime. Thus, an If statement allows us to control the flow of execution of a section of a program code. The idea built-in functions do not always meet the particular needs of a program will be covered. Students will be shown how to write functions that return different types of values. The benefit of writing their own functions is it that they can think about the task on a higher plane – a form of abstraction. The concept that functions that compute and return a number value make program code much less cluttered and easier to read, because the computation is hidden in a function will be discussed. Such functions will be useful in many situations. For example, the students could write a function to return the number of visible objects on the screen in an arcade-style game. Students will be shown how parameters can be used to allow a function to be used with different objects. As with class-level methods, you can write a class-level function and save it out with the object. This allows the function to be reused in another program. Learning Goals and Outcomes: Students will be able to correctly use if statements. A If statement is a block of program code that allows for the conditional execution of that code. Also, an If statement contains a Boolean condition used to determine whether the segment of code will execute. Students will understand that if the Boolean condition evaluates to true, the If part of the statement is executed. If the expression evaluates to false, the Else part is executed. Boolean conditions may call built-in functions that return a true of false value. Students will be able to use logical operators (and, or, not) to combine simple Boolean expressions into more complex expressions. Students will understand that relational operators (<, >, >=, <=, ==, !=) can be used to compare values in a Boolean expression. Students will be able to write functions that return a Boolean value used in If statements. Students will understand that functions can also be written to compute and return other types of values. Unit 7 - Repetition: Definite and conditional Loops Major Themes to be covered: Loops While – a conditional loop Events and repetition Students will be introduced to concepts of Loop and While (conditional) as control structures for repeating an instruction or block of instructions. A counted Loop allows programmers to specify exactly how many times a block of code will be repeated, and a While statement allows you to repeat a block of code as long as some condition remains true. The advantage of using loops will be immediately obvious to the students. Students will shown that they are easy to write and also easy to understand. This will be a powerful tool that the students will be able to incorporate into their code. Learning Goals and Outcomes: Students will be able to use counted Loop statements to repeat an instruction, or block of several instructions. Students will grasp the concept that a key component in a counted Loop is the count – the number of times the instruction within the loop will be repeated. Also, that the count must be a positive whole number or infinity. A negative value for the count would result in the Loop statement not execution at all. Furthermore, students will understand that if the count if infinity, the loop will repeat until the program shuts down. Students will be able be able to use Do in order or Do together in a nested loop and that that otherwise Alice will assume that the instructions are to be executed in order. Students will understand that when a loop is nested within a loop, the inner loop will fully execute each time the outer loop executes, once. The students will understand that a While statement is a conditional loop as well as the concept that the Boolean condition used for entry in a While statement is the same as used in If statements. The difference is that the While statement is a loop, and the condition is checked again after the instructions within the While statement have been executed. If the condition is still true, the loop repeats. Lastly, If statements can be combines with While statements. In some programs, a While statement is nested within an If statement. In other situations, an If statement may be nested within a While statement. Unit 8 - Repetition: Recursion Major Themes to be covered: Introduction to Recursion Another flavor of recursion Engineering look and feel Students will be introduced to the concept of using recursion as a mechanism for repetition. Recursion is a powerful tool that programmers use for building more complex and interesting worlds (programs). Recursion is often used where we do not know (at the time a program is written) the number of times a block of code should be repeated. There are two major situations where we do not know (even at runtime, what the program first starts to run) the count of repetitions. The first is when random motion is involved. Students will explore a type of recursion where more executions of a section of program code are “generated” each time the result of the previous decision is true. The second flavor of recursion will be demonstrated about how a complex problem is broken down in simper and simpler versions. The solutions to the smaller subproblems are used to cooperatively solve the larger problem. Learning Goals and Outcomes: Students will understand that recursion is most useful when they cannot use a Loop statement because they will not know (at the time they are writing a program) how many loops iterations will be needed. Students will learn that recursion occurs when a method calls itself and that recursion enables a method to be repeatedly called. Furthermore, any recursive method must have at least one base case, where no recursive call is made. When the base case occurs, the recursion stops. Students will understand that when you use recursion, you generally do not generally also use a loop statement (Loop or While). Instead, an If statement is used to check a condition, and the decision to recursively call the method depends on the value of the condition. At this point in the course students have learned three ways for accomplishing repetition in a program: Loop, While, and recursion. Students will be able to critically look at a programming situation and decide the best course of action to create repetition for the program that they are creating. Unit 9 – Lists and List Processing Major Themes to be covered: Lists and List Processing List Search Grouping Objects In programming, many different kinds of organizing structures can be used to create a collection of objects or information about objects. Each kind of structure offers different capabilities or features. In Alice, lists are used as organizing structures (data structures). A list is a collection of several items of the same type (such as Object or Color). Students will be shown how to create a list as well as iterating through a list. Alice provides two mechanisms for iterating through a list: sequentially (using For all in order) and simultaneously (using For all together). The students will be shown that the For all together iteration is like setting up a multiway telephone conference call – everyone is on the line at the same time. The For all in order statement is similar to Do in order in that actions are performed in sequence, and the For all together statement is similar to Do together in that actions are performed simultaneously. A common application of list is searching for an item in a list. A list search walks through each item in the list, on at a time, until we find the one we want. Learning Goals and Outcomes: Students will understand that a list is a collection of items. The items in a list all have the same type (such as Object). In Alice, objects in a list do not all need to be instances, of the same model. For example, a student will understand that a list containing five chickens is fine. A list containing three chickens and two dogs is also fine, as both of these are the same type – in this case Object. Students will know that a list can be iterated through either sequentially or simultaneously. If a list contains objects, and each object is to perform some action, the list item is often passed as a parameter to a method, where the object performs the action. Unit 10 – Variables and Revisiting Inheritance: Major Themes to be covered: Variables Array visualization using an index variable Debugging with watch and text output Students will review the use of properties to store information about an object in a world. We call this state information. Students will be introduced to the term/concept mute variable to describe those properties that can be changed at runtime. The mutable variable presented to the students will be class-level. Classlevel variables keep track of information about a specific object. Students will learn how to add a new class-level variable to an object and then save out the object and its new variable to create a new class. This is a form of inheritance similar to previous units, where students defined their own methods and saved out the object and its new methods as a new class. The difference is that previously the students extended a class by adding behavior (methods), but now they extend a class by adding state information. Array visualizations are created to illustrate the concept of an array structure. In Alice, an array Visualization object has a built-in elements variable that tracks the index (position) of each element in the array. Learning Goals and Outcomes: Students will understand that mutable variables can be useful for extending the capabilities of a class. Like object-level methods, object-level variables are saved out with the object and reused when instances of the new class are added to other worlds. Students will know that an array structure organizes a collection of elements. Each element is located in a particular position in the array. An array index variable is used to refer to the location of an element in the array. CS Principles – Section 5 Unit 1 – Key Assignments Built in Alice tutorials 1-4: Prior to working the key assignments for unit 1, students will read pages 5-18 and pages 331-361(appendix A/B) from the textbook Learning to Program with Alice. Students will complete a series of Essential Questions (p19, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. For the first unit students will work through a series of tutorials embedded within the software. These are guided, interactive tutorials that introduce students to the software. Students are shown basic concepts and then asked to do simple tasks themselves. The tutorials give feedback to the student if they did something incorrectly and allows them to revise their mistakes. These tutorials are broad in nature and give the students an over/pre view about many of the concepts that they will learn during the course of the class. Key Assignments: Built in Alice tutorials Activity Objective Built-in Software Tutorial 1: Introduces students to the Alice software interface and basic operations. Students will be given guided practice on the following topics and concepts; how to open and save worlds, importing, placing, and sizing objects in to the world, object tree, drag and drop (graphical) programming, executing a program, examples of how order of instructions matter and how to modify and or rearrange the instructions, and understanding primitive methods for each object work and how to apply them to an object Students will practice creating methods. This will be covered in depth later in unit 4. Students will practice creating, naming, opening, and editing their own methods with guidance from the software. Students will practice calling world level methods. Students will practice controlling the duration of an instruction. Students will practice working with the subparts of an object (left or right Students will understand the Alice interface and controls, how to import objects, and how create and modify a method. Students will know how to execute code as well as save and open program files. Built-in Software Tutorial 2: Students will be able to create methods for the whole or subpart of an object. Students will be able to edit and call methods as needed. leg, or head of a person for example) and learn that they have their own methods. Built-in Software Tutorial 3: Students will practice Students will be able to creating and modify events create events for their (user interactions that will worlds. be covered in greater detail later in the course). Students will practice creating events such as clicking on an object and having action trigger. Built-in Software Tutorial 4: Students will practice creating scenes. This will prove useful when students create storyboards and then program them in the next unit. Students will create a new world, practice importing and copying objects, positioning and sizing them, as well as control the camera (view). Students will be comfortable importing and positioning objects within their worlds. Unit 2 – Key Assignments Prior to working the key assignments for unit 2, students will read pages 22-57 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 1 – Telling A Story, Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p58, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Students create a visual and textual storyboard (two storyboards) for each of the following scenario: Students create a visual and textual storyboard (two storyboards) for each of the following scenario: Students will finish a program that has been initially setup for them, (from the authors from the text) such as background scenery and objects. Scenario 1: A child’s game: Alice, the white rabbit, and the Cheshire cat enjoy a game of musical chairs in a tea party scene (program). One of the characters yells “switch” and they all run around the table to stand beside the next chair. After the switch, a chair is tipped over and the character standing next to it is eliminated from the game (moves away form the table). Scenario 2: A video game: A jet fighter plane is returning to the carrier deck after a training mission. The plane makes a half-circle around the carrier to get into position for landing and then gradually descends. The carrier is in motion, so the plane has to continually adjust its decent to finally land on the deck. After the plane touches down on the carrier, it continues to move across the deck to finally come to a halt. Scenario 3: An Olympic simulation: An ice skater is a practicing her skating routine for the Olympic trials. She will perform a sequence of jumps and spins, while classical music is playing. Students will practice and master the concept of visual and textual storyboards. Students will practice and master the concept of sequencing instructions and that a program consists of lines of code that specify the actions objects are to perform. Students will practice and master the concept of visual and textual storyboards. Students will practice and master the concept of sequencing instructions and that a program consists of lines of code that specify the actions objects are to perform. Students will practice and master the concept of visual and textual storyboards. Students will practice and master the concept of sequencing instructions and that a program consists of lines of code that specify the actions objects are to perform. Students will finish a program that has been initially setup for them, such as background scenery and objects. Students will finish a program that has been initially setup for them, (from the authors from the text) such as background scenery and objects. Students will create an island world with fish in the water. Students will position the fish and the camera point of view. Next the students will have the fish swim around the island. Finally, they have the fish jump out of the water and then dive down into the water. Students will create a world having a tortoise (animal object), a stool (furniture), and a cookie (food). Students will position the tortoise and the stool side by side and then use a move method to move the tortoise 2 meters away from the stool. They will use a turn to face method to sure the tortoise is facing the stool. Students will write a program to move the tortoise to the stool to get the cookie. Finally the students will program the tortoise to show its thanks (for the cookie) by looking at the camera and waving an arm. Students will practice and master using Do in order and Do together blocks telling the software which instructions are to be executed and in what order. Students will practice and master combining these blocks by nesting them inside one another. Students will practice and master using Do in order and Do together blocks telling the software which instructions are to be executed and in what order. Students will practice and master combining these blocks by nesting them inside one another. Unit 3 – Key Assignments Prior to working the key assignments for unit 3, students will read pages 62-82 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 2 – Dividing The Story(methods), Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p82-83, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Students will finish a program that has been initially setup for them, (from the authors from the text) such as background scenery and objects. Students will create a world from a template provided for them (snow template). Students will add a snowman and a ramp. They will write instructions to move the snowman to the base of the ramp. When the snowman reaches the base of the ramp, the snowman will turn around and move far away from the ramp very quickly and say “Yikes!” Students will create a scene with a blimp and a dragon. In this scenario students will program that scene that the dragon has found a blimp and is curious. The dragon will fly around the blimp to check it out. The students must program to have the dragon move to the blimp and then fly around it (lengthwise) three times. The students will use a number function as the count for a loop. Students will place a snowman and stool in a world. The students will use a loop to make the snowman move to the stool, one meter at a Students will practice using functions and understand a function can be used to compute and return a value. In this case the snowman and the base of the ramp. Students will finish a program that has been initially setup for them, (from the authors from the text) such as background scenery and objects. Students will finish a program that has been initially setup for them, (from the authors from the text) such as background scenery and objects. Students will practice using functions and understand a function can be used to compute and return a value. Students will practice and master using repetition control structures. Students will practice and master using If/Else statements and relational operators to determine if a statement will be executed using Boolean operators. Students will practice and master using time. They will use a repetition control distance to function to structures. determine the number of times the loop repeats. (The distance to function might return a fractional distance such as 3.75 meters. The students will practice and understand that the Loop statement truncates the fractional numbers to the integer 3 and will repeat three times.) Students test their solution by moving the snowman to the stool to different locations on the screen and running the program with each change, so they can know whether it works no matter where the snowman and the stool are located. Unit 4 – Key Assignments Prior to working the key assignments for unit 4, students will read pages 89-127 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 3 – Stories from Pieces (methods), Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p128-129, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Students will create a Scenario - Gallop and Students will practice program from a given scenario. Students will create a program from a given scenario. Jump: Kelly has entered an equestrian show as an amateur jumper. She is somewhat nervous about the competition so she and the horse are practicing a jump. Students will be asked to create an initial scene with a horse and rider facing a fence. Students will be tasked to write a program with two world-level methods, one named gallop (horse and rider gallop forward one step) and another named jump (horse and rider jump the fence). In the gallop method the horse’s front legs should lift and then go down as the back legs lift and the horse moves forward. Then the back legs should go back down. The jump method should be similar, but the horse should move up far enough to clear the fence in mid-stride. Students will test each method to be sure that it works as expected. Students will need to adjust the distance amounts to make each look somewhat realistic. Scenario - Magic Act A magician is performing a levitation illusion, in which objects seem to rise magically into the air. The magician points a magic wand at this assistant, and she gently rises into the air and then floats back down using complex methods (world and object) to control objects. Students will have learned how and when to use different pieces of program code (instructions, control structures, functions, and expressions). Students will practice and master world-level methods and parameters to provide variation while writing the code for this scenario. Students will understand and be able to adjust and object’s opacity, such as the Students will create their own original program. to her original position on the table. Then the magician performs the same trick with the rabbit. The rabbit, being a lighter object, floats up higher than the magician’s assistant. Because the magician’s assistant and rabbit are each to levitate in the same way, use a single method and use parameters to communicate which object is to float and the distance the object is to move upward (and back down). bunny to make it appear that it disappears. Challenge -Student Creation (Open-ended): Students will be asked to choose an animal or a person from one of the galleries. The object selected must have at least two legs, arms, and/wings that can move, turn, and roll. Students will be asked to write three object level methods that substantially add functionality to what the objects of the class know how to do. They must use save object to create a new class with a different name. They must also add an instance of their new class to their world (program). Lastly, then write an animation to demonstrate the new methods. Students will show mastery of unit concepts by creating their own world (program) that includes object-level methods, creating a new class, correctly using instances of their new class, all to create a short story. Unit 5 – Key Assignments Prior to working the key assignments for unit 5, students will read pages 140-169 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 4 – Acting The Same (parameters) and Chapter 5 – Acting Differenty, Expeditions Through Alice (webbased multimedia textbook companion materials). Students will complete a series of Essential Questions (p159, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Students will create a program from a given scenario. Flight Simulator Completion: Students will create a world for an acrobatic airshow. They will be asked to create implement a flyForward and barrel event handling methods and link them to the corresponding events. They will be asked to make the move and roll actions have an abrupt style to reduce the pause in the animation between key presses. The students will use sound to make the animation more realistic. Once the students have the basic movements programmed they will next add a flyLeft and flyRight event handling methods. Lastly, the students will add a Students will practice and demonstrate mastery of interactive programming (use of events – control flying by user input). Students will be able to apply properties (in this case sound) to their program to make a more interesting and realistic program. Students will show be able to link their events to a method within their program. Students will create a program from a given scenario. Students will create a program from a given scenario. forwardLoop stunt that works when the user presses the Enter key. Scenario – A Clicker’s Dream: Students will create a world that provides a place where a person can click on lots of objects an watch interesting things happen. Students will use the sand template and add a saloon, a house, a windmill, a well, a fence, a cloud, a tumbleweed, and three crates. Students will be asked to add several other items to make the world more interesting. Students will make methods for each of the objects described below and create an event that calls the method when a person clicks the object. •Windmill: turnBlades— turns the windmill’s blades two revolutions •Saloon left door: swingLeftDoor—swings the saloon’s right door open, then closes it •Crate: breakApart— explodes the crate •Cloud: lightningFlash— quickly turns the lightning bolt on and off twice •Tumbleweed: burnUp— starts the tumbleweed on fire •Students will define actions for their objects Scenario--Piano: Students will be asked to create a keyboard that Students will show mastery of user triggered events. Students will make methods for objects. They will show mastery of creating an event that call the method when a person clicks on the object. Students will demonstrate the mastery of parameters to add variation and simplify their programming. The students will learn that there is more than one way to program the plays notes when they click on the keys. This is a challenging project and will require the students to plan carefully. Students will learn to break up the project up into several smaller parts (stepwiserefinement). project and still have it work. Students will demonstrate that they understand that they must make methods for each individual key to play. Students will demonstrate how to import graphics and sounds into Alice and use them in a program. Unit 6 – Key Assignments Prior to working the key assignments for unit 6, students will read pages 173-200 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 6 – Get in the Story (events), and Chapter 7 – Calculation Realism(mathematical expressions and functions), Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p200-201, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Students will create a program from a given scenario. Pyramid Climb – Scenario: On spring break, a student is visiting the land of the Pharaohs. The student decides to climb one of the pyramids, starting at the bottom and moving straight up the side. Students will be asked to setup and initial scene consisting of a person and a pyramid. Students will be asked to write a method to animate the climb so that Students will practice and master applying functions to solve a programming problem (in this case having an object walk up the side of a pyramid). Students will understand that function will result in a number that can be used in various ways. Student Challenge – student is presented a scenario and must create the code to create required actions. the person’s feet are always on the side of the pyramid. To determine how far the person must move to complete the climb, the climb method must call a method. The function will compute the side length of the pyramid. The formula the students will use to compute the distance up the side of the pyramid is based on the Pythagorean theorem. The value of c will provide a rough estimate of how far the person should move (in a diagonal direction) up the side of the pyramid. Scenario -- Help the Snowman get Home Game: Students are asked to create a game where the goal is to move the snowman through a forest to get him home to his igloo. The hazard in the their game is that if the snowman gets too close to a tree (object location on the grid), he moves back 10 meters. Students will add the snowman, a snowbard, an igloo, and eight pine trees. Students will create an event so that the skateboard can be controlled by the user. Students must create a method for the skateboard name check ForCollisionWithTrees. If the skateboard’s distance to the pine tree is less than Students practice and master the concepts of using If/Else statements(checking locations of trees for example) and Boolean Functions (distance to the tree true/false). Student Challenge – student is presented a scenario and must create the code to create required actions. 3.75 meters, then move the skateboard back 10 meters. For this method, students will need to check each tree in the scene. Once they have the If/Else working for one tree, the should copy it for each of the trees Scenario--Random Sphere Catch Game: Students are asked to create a game where the goal is to click on spheres that are randomly flying in the air. When the player successfully catches (clicks on) a sphere, a puff of smoke appears and then quickly disappears. When the puff of smoke disappears, the spere also disappears. The game is over when all the spheres have been caught. Students should add a World-level method named startGame that calls the moveAroundRandomly method for each sphere, all at the same time. Students will need to add an event that calls startGame and another event that calls disappear. Students practice and master the concepts of random numbers and random motion, execution control with If/Else statements, and applying functions in a correct manner. Unit 7 – Key Assignments Prior to working the key assignments for unit 7, students will read pages 213-228 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 8 – Choosing your path (If statements) and Chapter 9 – More Complex Control Of Execution (compound Boolean expressions and nested If/Elses), Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p228-229, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Lock Combination: Students are tasked with the challenge of creating a new class of combination lock with four class-level methods—leftOne, rightOne, leftReveolution, rightRevolution—that turn the dial one number left, one number right, one revolution left, and one revolution right, respectively. For this challenge students must create a method named open that opens it, and another named close that closes it. Students should use a loop instruction to turn the dial left 25 times. They then should use a loop to turn the dial right and finally use a loop to turn the dial back to the left three times. (The combination is 25, 16, 3) They should be able to pop open the latch, close the latch, and return the dial to zero. The students will use Wait to make the lock pause between each turn of the dial. Students will practice and master creating and reusing methods (for example, lock operations), Conditional loops (combination), and nested loops. Student Challenge – student is presented a scenario and must create the code to create required actions. Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Make a working clock: A common display on a computer desktop is a digital time display, showing the hour, minute, and second hands all working continuously display the time, second by second and updating the minutes and hours as time passes. All three hands of the clock should rotate just like a real clock. To create the clock, students must import an alarmClock(object) and a katana(object). They must position the katana on the clock to be used as a second hand. The world’s (program) functions include several time functions that access the computer’s built in clock. Students will be asked to use the world functions of hour of Am or PM, minute of the hour, and second of the minute to roll the hands to their correct starting positions. They must also use a while loop to continuously update the second hand and If/Else statements to decide when to move each of the minute and hour hands. Scenario—Drinking Bird: Students will be asked to recreate a small toy popular with child (a simulation of the drinking bird). The students must Students will practice and master using loops with a While statement specifying how many times a block of code will be repeated (for example, movement of hand and tracking of time), events and repletion. Students will practice and master using loops (infinite loop in this case), events and repetition. create a world (program) that includes a bird positioned in front of a container of water. Because of the counterbalance in front of weights on either end of its body, the parrot should repeatedly lover its head into the water. Students should use an infinite Loop statement to make the bird drink. Unit 8 – Key Assignments Prior to working the key assignments for unit 8, students will read pages 239-257 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 10 – Doing Things Over And Over (Loops), Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p258, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Butterfly Chase: Students will be asked to use recursion to make a rabbit chase a butterfly. The butterfly should fly to a random, nearby location (within 0.2 meters in any direction). The white rabbit, however, must always remain on the ground (rabbits do not fly). Each time the butterfly Students will practice and master the concept of recursion as they write the code for the butterfly in this world. They will understand how a complex problem such as this can be broken down into smaller more manageable problems to solve. moves, the student will use a turn to face method to make the rabbit turn toward the butterfly and then move the rabbit toward the butterfly 0.5 meters. When the rabbit gets close enough he should catch the butterfly in a net. To complete this program students will need to utilize the randomMotion method and the butterfly’s flight pattern will need to be controlled so it does not go to high or low (underground). Students will use an If statement to check the butterfly’s distance above the ground and them move the butterfly up or down accordingly. The butterfly’s distance above the ground should always be within the range of 0 (ground level) and 1 (meter above the ground). Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Why Did the Chicken Cross The Road? For this project students will program a chicken that has a sweet-tooth and crosses the road to eat the gumdrops along the way. Students must write a game animation where the player guides the chicken across the road to get to the gumdrops. Cars and other vehicles should move in both directions as the chicken tries to cross Students will practice and master the concept of recursion as they write the code for the butterfly in this world. They will understand how a complex problem such as this can be broken down into smaller more manageable problems to solve. to where the gumdrops are located. Students will program the arrow keys to make the chicken jump left, right, forward, and back. The spacebar will be programmed to make the chicken peck (if pecked on gumdrops they should disappear) A recursive method should be used to control the play of the game. If the chicken gets hit by a vehicle, the game is over. The game continues as long as the chicken has not managed to peck all the gumdrops and has not been hit by a vehicle. If the chicken manages to cross the road and peck at all the gumdrops along the way, the player wins the game. At that point the player is shown text or has a sound play signaling that the game has been won. Unit 9 – Key Assignments Prior to working the key assignments for unit 9, students will read pages 267-279 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 11 – Grouping Items Together(Lists), Chapter 13 – Intro to Spreadsheets, and Chapter 14 – Spreadsheets: Working With Large DataSets, Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p279-280, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Pop the Balloon Game: Students will take the code they wrote in unit 6 (Random Sphere Catch) and add code to modify the behavior of the program. Students will now be asked to use a list to make the code less complex and easier to understand. They will be first be asked to create a world –level list named spheres and add each of the 10 sphere objects to the list. They will also need to modify the disappear method to use a For all in order to check if the item that was clicked was a sphere. If that is the case they will need to make it disappear. Students will practice and master using lists (in this case – spheres) to make their code simpler to write, manage, and document. Students will master list processing as well as list searching. Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Monty’s Dilemma: Students will be presented as famous mathematical problem (the Monty Dilemma) which states, suppose you are on a game show, and your give the choice of three doors. Behind one is a car, behind the others, toy monkeys. You pick a door, say number 1, and host, and the host who knows what’s behind the doors, opens Students will practice and master using lists (in this case – doors) to make their code simpler to write, manage, and document. Students will master list processing as well as list searching. another door, say number 3, which has a toy monkey. He says to you, “Do you want to pick door number 2?’ Is it to your advantage to switch your choice of doors? One way the students could find an answer to this question is to create a simulation of the game where the objects are placed randomly behind the doors. Then play the game 25 times where you do not switch and 25 times where they do switch. They will need to keep track of their success rate when they switch and when they do not switch. Students will create an initial setup for their world with three doors spaced evenly with 2 monkeys and 1 car. To program the game, students will make a list containing the three doors. When the animation begins, randomly pick two doors and swap them. They will be asked to use method called swap that takes two doors as parameters. The two doors should swap by moving in opposite directions. The two doors should only swap if they are different. The swap should repeat 10 times. (The idea is to make it difficult for the player to know what object is behind what door.) Text will prompt the player to choose a door. After the player clicks on one of the doors, they will pick another door that hides a monkey and open that door. The player will be asked if he/she wants to switch the choice. If the object behind the door (selected by the player) is the car, the player has won. Unit 10 – Key Assignments Prior to working the key assignments for unit 10, students will read pages 289-312 from the textbook Learning to Program with Alice. Next the students will work through the guided and interactive materials from Chapter 12 – Object-Oriented Design (Class-Level Methods), Expeditions Through Alice (web-based multimedia textbook companion materials). Students will complete a series of Essential Questions (p312, Learning to Program With Alice) aligned with text at the end of the unit using classroom response systems to allow the instructor to gauge the level of understanding and the opportunity to reteach any unclear concepts. Students will work individually and in groups, with guidance from the instructor to complete a series of predefined scenarios that accompany the text to practice and master the key concepts for the unit. The goal of this approach is to allow traditional programming concepts to be more easily taught and more readily understood. Key Assignments: Activity Objective Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—All Possible Permutations: A permutation is a rearrangement of a set of objects. For example, a permutation of the numbers 1,2,3 could be 2,1,3 or it could be 2,3,1. Students will be asked to create an array containing three 3D text numbers objects. They will be asked to write a swap method. Students will practice and master using array visualization using an index variable to create the permutations for their computer program. They will then be asked to write a program that calls the swap method to show the numbers moving around to create permutations of the numbers. Students will need the call the swap method with different parameters so that all possible permutations can be seen. Student Challenge – student is presented a scenario and must create the code to create required actions. Scenario—Record and Play a Song: The program that the students write should allow the user to record their own songs and play them back. This will use some to the code that the students wrote in unit 5 (piano assignment). The students will need to add four buttons: • Start recording-start recording a song • Stop recording-stop recording this song • Play recording-play the latest recorded song •Clear recording-erase the latest recorded song The students will need to create a program where to record a song, the user first clicks the Record button and then clicks on the piano keys to create a sequence of notes. As the users clicks each note, the note is played (to give feedback to the user) and is also records. To record the notes, the students Students will practice and master the use of variables (Boolean and numerical) as they create their music program. Students will be able to effectively debug their code with watch and text output to catch any errors. Students will be able to effectively use arrays . must create a world-level list named newSong. Initially, the newSong list will be empty, but during the recording process notes are added to the end of the list. To stop recording, the user clicks the Stop Record button. Students will need to create a Boolean variable named recording. It should be set to true when recording but false when recording stops. Also any methods that play a note should check this condition before recording the note (or not). Students can use debugging with watch and text output to help when they have problems with their code. Section 6 – Instructional Methods and/or Strategies For the class Computer Science Principles, instructional methods and are modeled after professor Beth Simon’s, from the University of California San Diego’s school of Computer Science and Engineering CSE3 (Fluency in Information Technology) course. This course utilizes multiple instructional methods and strategies to accommodate diverse learning styles and the development of different skills sets. Methods and/or Strategies to be used include: • teacher facilitated Socratic questioning using classroom response systems • direct instruction/lecture • reading assignments • guided learning - scaffold/guided programming and writing assignments • group and independent programming assignments • project based learning Direct instruction will be used in a limited manner to introduce concepts and ideas before readings are assigned to assist students understand concepts to a greater degree. Reading assignments will be assigned with each unit to introduce ideas and concepts. To provide deeper learning and greater understanding of materials, the majority of class instruction (on an ongoing basis) will focus on the Socratic questioning method using classroom response systems to insure participation by all students and provide each participant a voice. The Socratic method will be modeled for students (question, restating, clarifying, explaining, challenging others, taking a position) and they will engage in this method as the instructor and college tutors facilitate. With each unit students will complete a series of scaffold/guided interactive media lessons to provide the student practice and basic mastery of the materials/concepts/ideas. At this point students will be prepared to engage in project based assignments, working as a group or independently to complete a series of challenging programming scenarios to provide true mastery of the material. Section 7 – Assessment Methods and/or Tools For the class Computer Science Principles, appropriate AP level assessments (providing the rigor for this class) were created by professor Beth Simon, from the University of California San Diego’s school of Computer Science and Engineering. All quizzes and exams are the same as those used in her CSE3 (Fluency in Information Technology) class. Both formative and summative assessments are used as on-going throughout this course to make insure that the instructional methods used are effective. The instructor uses multiple reviews of concepts and skills. Peer assessments and classroom response systems are used to facilitate Socratic Questioning, as well as review of student-designed programs, periodic unit tests of multiple choice and short answer to assess student mastery of key concepts. Student feedback during instruction and from formative and informative assessments will be used to modify instructional methods as necessary. Assessments are aligned with the course purpose, the instructional strategies used, and with the CCTE standards and Common Core Standards that apply across major themes in the subject content. These assessments will allow students to demonstrate the mastery of specific key concepts in Computer Science Principles. Students are provided with the opportunity to implement analytical and logical skills of computational thinking to understand and employ computational logic and processes in basic programming. During formative assessments students apply logical and analytical strategies, to explain the reason behind basic functions, both verbally to peers and to the instructor, which will reflect their mastery of the subject and determine how instructional methods can be improved upon. This will give students the chance to attain enough practice to master skills required for the course. Teamwork and Peer Assessments allow the students to reflect on course content and to practice newly obtained knowledge. A teamwork and peer assessment rubric measuring impact of performance, program development quality prior to and during development, validity of project content, and sophistication of knowledge applied to final program project gives the instructor the tool to evaluate individual and team skill levels. Also, upon completion of a project students will fill out a selfevaluation questionnaire that will also contribute to the overall assessment of the final project. The team rubric assessment also allows for the instructor to determine next steps during the learning process as the instruction approaches the summative assessment. These informal assessments give students specific feedback about what they are doing well or need to change. Peer assessments, teamwork rubric evaluations, classroom polls (interactive classroom response systems) and review of student-designed programs also allows the instructor an opportunity to identify individual student learning goals and set criteria for student success. These evaluations are real evidence of student growth and true learning towards mastery of course content and help the instructor to modify instructional methods as needed. Summative assessments provide students with a variety of reviews in different contexts that address content learned throughout the year. Instructor uses these assessments to monitor if proficiency is maintained over time. Assessment grading percentages contribute to the student’s quarter course grade. Participation 10% Quizzes 20% Class Assignments/Projects 20% Exams 50%