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 non- engineering 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 object- oriented 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 action- abstraction. 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. Class- level 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 Activity Objective in Alice tutorials

Built-in Software Introduces students to the Students will understand Tutorial 1: Alice software interface the Alice interface and and basic operations. controls, how to import Students will be given objects, and how create guided practice on the and modify a method. following topics and Students will know how concepts; how to open and to execute code as well as save worlds, importing, save and open program placing, and sizing objects files. 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 Built-in Software Students will practice Students will be able to Tutorial 2: creating methods. This will create methods for the be covered in depth later whole or subpart of an in unit 4. Students will object. Students will be practice creating, naming, able to edit and call opening, and editing their methods as needed. 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 leg, or head of a person for example) and learn that they have their own methods.

Built-in Software Students will practice Students will be able to Tutorial 3: 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 Students will practice Students will be Tutorial 4: creating scenes. This will comfortable importing prove useful when and positioning objects students create within their worlds. 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).

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 Scenario 1: A child’s Students will practice and and textual storyboard game: Alice, the white master the concept of (two storyboards) for rabbit, and the Cheshire visual and textual each of the following cat enjoy a game of storyboards. Students scenario: musical chairs in a tea will practice and master party scene (program). the concept of sequencing One of the characters yells instructions and that a “switch” and they all run program consists of lines around the table to stand of code that specify the beside the next chair. After actions objects are to the switch, a chair is perform. tipped over and the character standing next to it is eliminated from the game (moves away form the table). Students create a visual Scenario 2: A video game: Students will practice and and textual storyboard A jet fighter plane is master the concept of (two storyboards) for returning to the carrier visual and textual each of the following deck after a training storyboards. Students scenario: mission. The plane makes will practice and master a half-circle around the the concept of sequencing carrier to get into position instructions and that a for landing and then program consists of lines gradually descends. The of code that specify the carrier is in motion, so the actions objects are to plane has to continually perform. 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. Students will finish a Scenario 3: An Olympic Students will practice and program that has been simulation: An ice skater is master the concept of initially setup for them, a practicing her skating visual and textual (from the authors from routine for the Olympic storyboards. Students the text) such as trials. She will perform a will practice and master background scenery and sequence of jumps and the concept of sequencing objects. spins, while classical music instructions and that a is playing. program consists of lines of code that specify the actions objects are to perform.

Students will finish a Students will create an Students will practice and program that has been island world with fish in master using Do in order initially setup for them, the water. Students will and Do together blocks such as background position the fish and the telling the software which scenery and objects. camera point of view. Next instructions are to be the students will have the executed and in what fish swim around the order. Students will island. Finally, they have practice and master the fish jump out of the combining these blocks water and then dive down by nesting them inside into the water. one another. Students will finish a Students will create a Students will practice and program that has been world having a tortoise master using Do in order initially setup for them, (animal object), a stool and Do together blocks (from the authors from (furniture), and a cookie telling the software which the text) such as (food). Students will instructions are to be background scenery and position the tortoise and executed and in what objects. the stool side by side and order. Students will then use a move method to practice and master move the tortoise 2 meters combining these blocks away from the stool. They by nesting them inside will use a turn to face one another. 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.

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 Students will create a Students will practice program that has been world from a template using functions and initially setup for them, provided for them (snow understand a function can (from the authors from template). Students will be used to compute and the text) such as add a snowman and a return a value. In this background scenery and ramp. They will write case the snowman and objects. instructions to move the the base of the ramp. 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 finish a Students will create a Students will practice program that has been scene with a blimp and a using functions and initially setup for them, dragon. In this scenario understand a function can (from the authors from students will program that be used to compute and the text) such as scene that the dragon has return a value. Students background scenery and found a blimp and is will practice and master objects. curious. The dragon will using repetition control fly around the blimp to structures. check it out. The students must program to have the dragon move to the blimp and then fly around it (lengthwise) three times. Students will finish a The students will use a Students will practice and program that has been number function as the master using If/Else initially setup for them, count for a loop. Students statements and relational (from the authors from will place a snowman and operators to determine if the text) such as stool in a world. The a statement will be background scenery and students will use a loop to executed using Boolean objects. make the snowman move operators. Students will to the stool, one meter at a 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 Jump: using complex methods scenario. Kelly has entered an (world and object) to equestrian show as an control objects. Students amateur jumper. She is will have learned how somewhat nervous about and when to use different the competition so she and pieces of program code the horse are practicing a (instructions, control jump. Students will be structures, functions, and asked to create an initial expressions). 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. Students will create a Scenario - Magic Act Students will practice and program from a given A magician is performing a master world-level scenario. levitation illusion, in which methods and parameters objects seem to rise to provide variation while magically into the air. The writing the code for this magician points a magic scenario. Students will wand at this assistant, and understand and be able to she gently rises into the air adjust and object’s and then floats back down opacity, such as the to her original position on bunny to make it appear the table. Then the that it disappears. 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).

Students will create their Challenge -Student Students will show own original program. Creation (Open-ended): mastery of unit concepts Students will be asked to by creating their own choose an animal or a world (program) that person from one of the includes object-level galleries. The object methods, creating a new selected must have at least class, correctly using two legs, arms, and/wings instances of their new that can move, turn, and class, all to create a short roll. Students will be story. 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. 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 (web- based 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 Flight Simulator Students will practice and program from a given Completion: demonstrate mastery of scenario. Students will create a interactive programming world for an acrobatic air- (use of events – control show. They will be asked flying by user input). to create implement a Students will be able to flyForward and barrel apply properties (in this event handling methods case sound) to their and link them to the program to make a more corresponding events. interesting and realistic They will be asked to make program. Students will the move and roll actions show be able to link their have an abrupt style to events to a method within reduce the pause in the their program. 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 forwardLoop stunt that works when the user presses the Enter key. Students will create a Scenario – A Clicker’s Students will show program from a given Dream: mastery of user triggered scenario. Students will create a events. Students will world that provides a make methods for place where a person can objects. They will show click on lots of objects an mastery of creating an watch interesting things event that call the method happen. Students will use when a person clicks on the sand template and add the object. Students will a saloon, a house, a demonstrate the mastery windmill, a well, a fence, a of parameters to add cloud, a tumbleweed, and variation and simplify three crates. Students will their programming. 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 Students will create a Scenario--Piano: The students will learn program from a given Students will be asked to that there is more than scenario. create a keyboard that one way to program the plays notes when they project and still have it click on the keys. This is a work. Students will challenging project and demonstrate that they will require the students to understand that they plan carefully. Students must make methods for will learn to break up the each individual key to project up into several play. Students will smaller parts (stepwise- demonstrate how to refinement). 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 Pyramid Climb – Students will practice and program from a given Scenario: master applying functions scenario. On spring break, a student to solve a programming is visiting the land of the problem (in this case Pharaohs. The student having an object walk up decides to climb one of the the side of a pyramid). pyramids, starting at the Students will understand bottom and moving that function will result in straight up the side. a number that can be Students will be asked to used in various ways. 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 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. Student Challenge – Scenario -- Help the Students practice and student is presented a Snowman get Home master the concepts of scenario and must create Game: using If/Else the code to create Students are asked to statements(checking required actions. create a game where the locations of trees for goal is to move the example) and Boolean snowman through a forest Functions (distance to the to get him home to his tree true/false). 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 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 Student Challenge – Scenario--Random Students practice and student is presented a Sphere Catch Game: master the concepts of scenario and must create Students are asked to random numbers and the code to create create a game where the random motion, required actions. goal is to click on spheres execution control with that are randomly flying in If/Else statements, and the air. When the player applying functions in a successfully catches (clicks correct manner. 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.

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 – Scenario—Lock Students will practice and student is presented a Combination: Students master creating and re- scenario and must create are tasked with the using methods (for the code to create challenge of creating a new example, lock required actions. class of combination lock operations), Conditional with four class-level loops (combination), and methods—leftOne, nested loops. 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.

Student Challenge – Scenario—Make a Students will practice and student is presented a working clock: A common master using loops with a scenario and must create display on a computer While statement the code to create desktop is a digital time specifying how many required actions. display, showing the hour, times a block of code will minute, and second hands be repeated (for example, all working continuously movement of hand and display the time, second by tracking of time), events second and updating the and repletion. 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. Student Challenge – Scenario—Drinking Students will practice and student is presented a Bird: master using loops scenario and must create Students will be asked to (infinite loop in this case), the code to create recreate a small toy events and repetition. required actions. popular with child (a simulation of the drinking bird). The students must 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 – Scenario—Butterfly Students will practice and student is presented a Chase: master the concept of scenario and must create Students will be asked to recursion as they write the code to create use recursion to make a the code for the butterfly required actions. rabbit chase a butterfly. in this world. They will The butterfly should fly to understand how a a random, nearby location complex problem such as (within 0.2 meters in any this can be broken down direction). The white into smaller more rabbit, however, must manageable problems to always remain on the solve. ground (rabbits do not fly). Each time the butterfly 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 – Scenario—Why Did the Students will practice and student is presented a Chicken Cross The Road? master the concept of scenario and must create For this project students recursion as they write the code to create will program a chicken the code for the butterfly required actions. that has a sweet-tooth and in this world. They will crosses the road to eat the understand how a gumdrops along the way. complex problem such as Students must write a this can be broken down game animation where the into smaller more player guides the chicken manageable problems to across the road to get to solve. the gumdrops. Cars and other vehicles should move in both directions as the chicken tries to cross 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 – Scenario—Pop the Students will practice and student is presented a Balloon Game: master using lists (in this scenario and must create Students will take the code case – spheres) to make the code to create they wrote in unit 6 their code simpler to required actions. (Random Sphere Catch) write, manage, and and add code to modify the document. Students will behavior of the program. master list processing as Students will now be well as list searching. 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.

Student Challenge – Scenario—Monty’s Students will practice and student is presented a Dilemma: master using lists (in this scenario and must create Students will be presented case – doors) to make the code to create as famous mathematical their code simpler to required actions. problem (the Monty write, manage, and Dilemma) which states, document. Students will suppose you are on a game master list processing as show, and your give the well as list searching. 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 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 – Scenario—All Possible Students will practice and student is presented a Permutations: master using array scenario and must create A permutation is a visualization using an the code to create rearrangement of a set of index variable to create required actions. objects. For example, a the permutations for permutation of the their computer program. 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. 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 – Scenario—Record and Students will practice and student is presented a Play a Song: master the use of scenario and must create The program that the variables (Boolean and the code to create students write should numerical) as they create required actions. allow the user to record their music program. their own songs and play Students will be able to them back. This will use effectively debug their some to the code that the code with watch and text students wrote in unit 5 output to catch any (piano assignment). The errors. Students will be students will need to add able to effectively use four buttons: arrays . • 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 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 self- evaluation 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%