CSP & CSA: Most text was taken from collegeboard.
Logic: Most text was taken from http://intrologic.stanford.edu/
×
Class Sylabus
Teacher Mr. Wiessmann
Subject AP Computer Science A
Email edwiessmann@philasd.org
Cell Phone 215-900-8742
School Phone 215-351-7618
Book Java Methods
Online Book https://runestone.academy/runestone/default/user/login?_next=/runestone/default/index
Course Description "The proposed syllabus is for a full school year course. The course meets for five 50-minute class periods per week. The course includes a number of individual programming projects assigned for one week each. The time after the AP CS Exam is devoted to a team project and enrichment activities.

The course is based on numerous problem solving exercises, labs, and case studies, which require students to design and implement Java classes. [CR1] The course requires 40-50 hours of hands-on work in a computer lab.[CR6]"**
AP Computer Science Course Homepage: https://apcentral.collegeboard.org/courses/ap-computer-science-a/course
AP Computer Science College Board Description: https://apcentral.collegeboard.org/pdf/ap-computer-science-a-course-description.pdf?course=ap-computer-science-a
Classroom Website: phillycomputerscience.com
AP CSA Exam Date: Tuesday, May 5, 2020 Noon
AP Exam Schedule: https://professionals.collegeboard.com/testing/ap/about/dates
Materials List Litvin, Maria, and Gary Litvin. Java Methods: Object-Oriented Programming and Data Structures, 2nd AP Edition, Andover, Mass.: Skylight Publishing, 2011.
The College Board’s Magpie, Picture, and Elevens Labs Student Guides.
CodingBat: http://codingbat.com/java
Java Methods student files, teacher files, Powerpoints, Test Package, additional resources at http://www.skylit.com/javamethods and http://www.skylit.com/projects/.
Resourses found on PhillyMathClass.com
Class Rules: Students must obey the school wide rules of the Academy @ Palumbo at all times.
Tutoring After School Tuesday 3:00-6:00 by appointment
×
Big Ideas
BIG IDEA 1: MODULARITY (MOD) Incorporating elements of abstraction, by breaking problems down into interacting pieces, each with their own purpose, makes writing complex programs easier. Abstracting simplifies concepts and processes by looking at the big picture rather than being overwhelmed by the details. Modularity in object-oriented programming allows us to use abstraction to break complex programs down into individual classes and methods.
BIG IDEA 2: VARIABLES (VAR) Information used as a basis for reasoning, discussion, or calculation is referred to as data. Programs rely on variables to store data, on data structures to organize multiple values when program complexity increases, and on algorithms to sort, access, and manipulate this data. Variables create data abstractions, as they can represent a set of possible values or a group of related values.
BIG IDEA 3: CONTROL (CON) Doing things in order, making decisions, and doing the same process multiple times are represented in code by using control structures and specifying the order in which instructions are executed. Programmers need to think algorithmically in order to define and interpret processes that are used in a program.
BIG IDEA 4: IMPACT OF COMPUTING (IOC) Computers and computing have revolutionized our lives. To use computing safely and responsibly, we need to be aware of privacy, security, and ethical issues. As programmers, we need to understand how our programs will be used and be responsible for the consequences.
×
Units
UNIT 1
Primitive Types
This unit introduces students to the Java programming language and the use of classes, providing students with a firm foundation of concepts that will be leveraged and built upon in all future units. Students will focus on writing the main method and will start to call preexisting methods to produce output. The use of preexisting methods for input is not prescribed in the course; however, input is a necessary part of any computer science course so teachers will need to determine how they will address this in their classrooms. Students will start to learn about three built-in data types and learn how to create variables, store values, and interact with those variables using basic operations. The ability to write expressions is essential to representing the variability of the real world in a program and will be used in all future units. Primitive data is one of two categories of variables covered in this course. The other category, reference data, will be covered in Unit 2.
UNIT 2
Using Objects
In the first unit, students used primitive types to represent real-world data and determined how to use them in arithmetic expressions to solve problems. This unit introduces a new type of data: reference data. Reference data allows real-world objects to be represented in varying degrees specific to a programmer’s purpose. This unit builds on students’ ability to write expressions by introducing them to Math class methods to write expressions for generating random numbers and other more complex operations. In addition, strings and the existing methods within the String class are an important topic within this unit. Knowing how to declare variables or call methods on objects is necessary throughout the course but will be very important in Units 5 and 9 when teaching students how to write their own classes and about inheritance relationships.
UNIT 3
Boolean Expressions and if Statements
Algorithms are composed of three building blocks: sequencing, selection, and iteration. This unit focuses on selection, which is represented in a program by using conditional statements. Conditional statements give the program the ability to decide and respond appropriately and are a critical aspect of any nontrivial computer program. In addition to learning the syntax and proper use of conditional statements, students will build on the introduction of Boolean variables by writing Boolean expressions with relational and logical operators. The third building block of all algorithms is iteration, which you will cover in Unit 4. Selection and iteration work together to solve problems.
UNIT 4
Iteration
This unit focuses on iteration using while and for loops. As you saw in Unit 3, Boolean expressions are useful when a program needs to perform different operations under different conditions. Boolean expressions are also one of the main components in iteration. This unit introduces several standard algorithms that use iteration. Knowledge of standard algorithms makes solving similar problems easier, as algorithms can be modified or combined to suit new situations. Iteration is used when traversing data structures such as arrays, ArrayLists, and 2D arrays. In addition, it is a necessary component of several standard algorithms, including searching and sorting, which will be covered in later units.
UNIT 5
Writing Classes
This unit will pull together information from all previous units to create new, user-defined reference data types in the form of classes. The ability to accurately model real-world entities in a computer program is a large part of what makes computer science so powerful. This unit focuses on identifying appropriate behaviors and attributes of real-world entities and organizing these into classes. Students will build on what they learn in this unit to represent relationships between classes through hierarchies, which appear in Unit 9. The creation of computer programs can have extensive impacts on societies, economies, and cultures. The legal and ethical concerns that come with programs and the responsibilities of programmers are also addressed in this unit.
UNIT 6
Array
This unit focuses on data structures, which are used to represent collections of related data using a single variable rather than multiple variables. Using a data structure along with iterative statements with appropriate bounds will allow for similar treatment to be applied more easily to all values in the collection. Just as there are useful standard algorithms when dealing with primitive data, there are standard algorithms to use with data structures. In this unit, we apply standard algorithms to arrays; however, these same algorithms are used with ArrayLists and 2D arrays as well. Additional standard algorithms, such as standard searching and sorting algorithms, will be covered in the next unit.
UNIT 7
ArrayList
As students learned in Unit 6, data structures are helpful when storing multiple related data values. Arrays have a static size, which causes limitations related to the number of elements stored, and it can be challenging to reorder elements stored in arrays. The ArrayList object has a dynamic size, and the class contains methods for insertion and deletion of elements, making reordering and shifting items easier. Deciding which data structure to select becomes increasingly important as the size of the data set grows, such as when using a large real-world data set. In this unit, students will also learn about privacy concerns related to storing large amounts of personal data and about what can happen if such information is compromised.
UNIT 8
2D Array
In Unit 6, students learned how 1D arrays store large amounts of related data. These same concepts will be implemented with two-dimensional (2D) arrays in this unit. A 2D array is most suitable to represent a table. Each table element is accessed using the variable name and row and column indices. Unlike 1D arrays, 2D arrays require nested iterative statements to traverse and access all elements. The easiest way to accomplished this is in row-major order, but it is important to cover additional traversal patterns, such as back and forth or column-major.
UNIT 9
Inheritance
Creating objects, calling methods on the objects created, and being able to define a new data type by creating a class are essential understandings before moving into this unit. One of the strongest advantages of Java is the ability to categorize classes into hierarchies through inheritance. Certain existing classes can be extended to include new behaviors and attributes without altering existing code. These newly created classes are called subclasses. In this unit, students will learn how to recognize common attributes and behaviors that can be used in a superclass and will then create a hierarchy by writing subclasses to extend a superclass. Recognizing and utilizing existing hierarchies will help students create more readable and maintainable programs.
UNIT 10
Recursion
Sometimes a problem can be solved by solving smaller or simpler versions of the same problem rather than attempting an iterative solution. This is called recursion, and it is a powerful math and computer science idea. In this unit, students will revisit how control is passed when methods are called, which is necessary knowledge when working with recursion. Tracing skills introduced in Unit 2 are helpful for determining the purpose or output of a recursive method. In this unit, students will learn how to write simple recursive methods and determine the purpose or output of a recursive method by tracing.
** Most of the text in this Syllabus were taken from Collegeboard CSA resources
×
TOPIC Lesson Assignment
Blockchain https://www.youtube.com/watch?v=hYip_Vuv8J0 Write a one page summary of what blockchiain is. How did the narrator connect with each audience. What level was most helpful for you?
IP Address https://www.youtube.com/watch?v=7_-qWlvQQtY Find two other sources describing ip addresses and reference theses in your paper. Write a one page summary about how private your data is online based on what you have learned by researching ip addresses.
Binary Math https://www.youtube.com/watch?v=XKu_SEDAykw&t=1043s Write a one page summary on the question that the engineer for google had to answer. Explain the problem and the stages of development the interview went over. Why is communication important?
 
×

UNIT 1: Primitive Types

Overview

AP EXAM WEIGHTING 2.5–5%
CLASS PERIODS ~8–10
OVERVIEW This unit introduces students to the Java programming language and the use of classes, providing students with a firm foundation of concepts that will be leveraged and built upon in all future units. Students will focus on writing the main method and will start to call preexisting methods to produce output. The use of preexisting methods for input is not prescribed in the course; however, input is a necessary part of any computer science course so teachers will need to determine how they will address this in their classrooms. Students will start to learn about three built-in data types and learn how to create variables, store values, and interact with those variables using basic operations. The ability to write expressions is essential to representing the variability of the real world in a program and will be used in all future units. Primitive data is one of two categories of variables covered in this course. The other category, reference data, will be covered in Unit 2.

1.1 Why Programming? Why Java?

DATES
TOPIC 1.1 Why Programming? Why Java?
ENDURING UNDERSTANDING MOD-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence. VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE MOD-1.A Call System class methods to generate output to the console. VAR-1.A Create string literals
ESSENTIAL KNOWLEDGE MOD-1.A.1 System.out.print and System.out.println display information on the computer monitor. MOD-1.A.2 System.out.println moves the cursor to a new line after the information has been displayed, while System.out.print does not. VAR-1.A.1 A string literal is enclosed in double quotes.

1.2 Variables and Data Types

DATES
TOPIC 1.2 Variables and Data Types
ENDURING UNDERSTANDING VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE VAR-1.B Identify the most appropriate data type category for a particular specification. VAR-1.C Declare variables of the correct types to represent primitive data.
ESSENTIAL KNOWLEDGE VAR-1.B.1 A type is a set of values (a domain) and a set of operations on them. VAR-1.B.2 Data types can be categorized as either primitive or reference. VAR-1.B.3 The primitive data types used in this course define the set of operations for numbers and Boolean values. VAR-1.C.1 The three primitive data types used in this course are int, double, and boolean. VAR-1.C.2 Each variable has associated memory that is used to hold its value. VAR-1.C.3 The memory associated with a variable of a primitive type holds an actual primitive value VAR-1.C.4 When a variable is declared final, its value cannot be changed once it is initialized.

1.3 Expressions and Assignment Statements

DATES
TOPIC 1.3 Expressions and Assignment Statements
ENDURING UNDERSTANDING CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-1.A Evaluate arithmetic expressions in a program code. CON-1.A.5 An arithmetic operation that uses a double value will evaluate to a double value.
ESSENTIAL KNOWLEDGE CON-1.A.1 A literal is the source code representation of a fixed value. CON-1.A.2 Arithmetic expressions include expressions of type int and double. CON-1.A.3 The arithmetic operators consist of +, −, *, /, and %. CON-1.A.4 An arithmetic operation that uses two int values will evaluate to an int value. CON-1.A.5 An arithmetic operation that uses a double value will evaluate to a double value. CON-1.A.6 Operators can be used to construct compound expressions. CON-1.A.7 During evaluation, operands are associated with operators according to operator precedence to determine how they are grouped. CON-1.A.8 An attempt to divide an integer by zero will result in an ArithmeticException to occur. CON-1.B.1 The assignment operator (=) allows a program to initialize or change the value stored in a variable. The value of the expression on the right is stored in the variable on the left. CON-1.B.2 During execution, expressions are evaluated to produce a single value CON-1.B.3 The value of an expression has a type based on the evaluation of the expression.

1.4 Compound Assignment Operators

DATES
TOPIC 1.4 Compound Assignment Operators
ENDURING UNDERSTANDING CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-1.B Evaluate what is stored in a variable as a result of an expression with an assignment statement.
ESSENTIAL KNOWLEDGE CON-1.B.4 Compound assignment operators (+=, −=, *=, /=, %=) can be used in place of the assignment operator. CON-1.B.5 The increment operator (++) and decrement operator (−−) are used to add 1 or subtract 1 from the stored value of a variable or an array element. The new value is assigned to the variable or array element.

1.5 Casting and Ranges of Variables

DATES
TOPIC 1.5 Casting and Ranges of Variables
ENDURING UNDERSTANDING CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-1.C Evaluate arithmetic expressions that use casting.
ESSENTIAL KNOWLEDGE CON-1.C.1 The casting operators (int) and (double) can be used to create a temporary value converted to a different data type. CON-1.C.2 Casting a double value to an int causes the digits to the right of the decimal point to be truncated. CON-1.C.3 Some programming code causes int values to be automatically cast (widened) to double values. CON-1.C.4 Values of type double can be rounded to the nearest integer by (int)(x + 0.5) or (int)(x – 0.5) for negative numbers. CON-1.C.5 Integer values in Java are represented by values of type int, which are stored using a finite amount (4 bytes) of memory. Therefore, an int value must be in the range from Integer.MIN_VALUE to Integer.MAX_VALUE inclusive. CON-1.C.6 If an expression would evaluate to an int value outside of the allowed range, an integer overflow occurs. This could result in an incorrect value within the allowed range.

Activities

Sample Activities Error analysis
Provide students with code that contains syntax errors. Ask students to identify and correct the errors in the provided code. Once they feel they have identified and corrected all syntax errors, have them verify their conclusion by using a compiler and an IDE that does not autocorrect errors.
Activating prior knowledge
The basic arithmetic operators of +, −, /, and * are similar to what students have experienced in math class or when using a calculator. Give students a list of expressions and ask them to apply what they know from math class to evaluate the meaning of the expressions. Have them verify their results by putting them into a compiler.
Sharing and responding
Put student into groups of two. Provide each student with a different set of statements; in each pair, one student should have a list of statements that contain compound assignment operators, while the other student should have a list of statements that accomplish the same thing without using compound statements. Be sure the statements are in a different order. Students should take turns describing what a statement does to their partner, and the partner should determine which statement of theirs is equivalent to the one being described.
Predict and compare
Provide students with several statements that involve casting. Each cast should be on a different value in the statement. Have students predict the resulting value. For any statements that would not compile or work as intended, have students explain the problem and propose a solution. They should verify their results by putting those results into a compiler.
 
×

UNIT 2: Using Objects

Overview

AP EXAM WEIGHTING 5–7.5%
CLASS PERIODS ~13–15
OVERVIEW In the first unit, students used primitive types to represent real-world data and determined how to use them in arithmetic expressions to solve problems. This unit introduces a new type of data: reference data. Reference data allows real-world objects to be represented in varying degrees specific to a programmer’s purpose. This unit builds on students’ ability to write expressions by introducing them to Math class methods to write expressions for generating random numbers and other more complex operations. In addition, strings and the existing methods within the String class are an important topic within this unit. Knowing how to declare variables or call methods on objects is necessary throughout the course but will be very important in Units 5 and 9 when teaching students how to write their own classes and about inheritance relationships.

2.1 Objects: Instances of Classes

DATES
TOPIC 2.1 Objects: Instances of Classes
ENDURING UNDERSTANDING MOD-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence.
LEARNING OBJECTIVE MOD-1.B Explain the relationship between a class and an object.
ESSENTIAL KNOWLEDGE MOD-1.B.1 An object is a specific instance of a class with defined attributes. MOD-1.B.2 A class is the formal implementation, or blueprint, of the attributes and behaviors of an object.

2.2 Creating and Storing Objects (Instantiation)

DATES
TOPIC 2.2 Creating and Storing Objects (Instantiation)
ENDURING UNDERSTANDING MOD-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence. VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE MOD-1.C Identify, using its signature, the correct constructor being called. MOD-1.D For creating objects: a. Create objects by calling constructors without parameters. b. Create objects by calling constructors with parameters. VAR-1.D Define variables of the correct types to represent reference data.
ESSENTIAL KNOWLEDGE MOD-1.C.1 A signature consists of the constructor name and the parameter list. MOD-1.C.2 The parameter list, in the header of a constructor, lists the types of the values that are passed and their variable names. These are often referred to as formal parameters. MOD-1.C.3 A parameter is a value that is passed into a constructor. These are often referred to as actual parameters. MOD-1.C.4 Constructors are said to be overloaded when there are multiple constructors with the same name but a different signature. MOD-1.C.5 The actual parameters passed to a constructor must be compatible with the types identified in the formal parameter list. MOD-1.C.6 Parameters are passed using call by value. Call by value initializes the formal parameters with copies of the actual parameters. MOD-1.D For creating objects: a. Create objects by calling constructors without parameters. b. Create objects by calling constructors with parameters. MOD-1.D.2 A class contains constructors that are invoked to create objects. They have the same name as the class. MOD-1.D.3 Existing classes and class libraries can be utilized as appropriate to create objects. MOD-1.D.4 Parameters allow values to be passed to the constructor to establish the initial state of the object. VAR-1.D.1 The keyword null is a special value used to indicate that a reference is not associated with any object. VAR-1.D.2 The memory associated with a variable of a reference type holds an object reference value or, if there is no object, null. This value is the memory address of the referenced object.

2.3 Calling a Void Method

DATES
TOPIC 2.3 Calling a Void Method
ENDURING UNDERSTANDING MOD-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence.
LEARNING OBJECTIVE MOD-1.E Call non-static void methods without parameters.
ESSENTIAL KNOWLEDGE MOD-1.E.1 An object’s behavior refers to what the object can do (or what can be done to it) and is defined by methods. MOD-1.E.2 Procedural abstraction allows a programmer to use a method by knowing what the method does even if they do not know how the method was written. MOD-1.E.3 A method signature for a method without parameters consists of the method name and an empty parameter list. MOD-1.E.4 A method or constructor call interrupts the sequential execution of statements, causing the program to first execute the statements in the method or constructor before continuing. Once the last statement in the method or constructor has executed or a return statement is executed, flow of control is returned to the point immediately following where the method or constructor was called. MOD-1.E.5 Non-static methods are called through objects of the class. MOD-1.E.6 The dot operator is used along with the object name to call non-static methods. MOD-1.E.7 Void methods do not have return values and are therefore not called as part of an expression. MOD-1.E.8 Using a null reference to call a method or access an instance variable causes a NullPointerException to be thrown.

2.4 Calling a Void Method with Parameters

DATES
TOPIC 2.4 Calling a Void Method with Parameters
ENDURING UNDERSTANDING MOD-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence.
LEARNING OBJECTIVE MOD-1.F Call non-static void methods with parameters.
ESSENTIAL KNOWLEDGE MOD-1.F.1 A method signature for a method with parameters consists of the method name and the ordered list of parameter types. MOD-1.F.2 Values provided in the parameter list need to correspond to the order and type in the method signature. MOD-1.F.3 Methods are said to be overloaded when there are multiple methods with the same name but a different signature.

2.5 Calling a Non-void Method

DATES
TOPIC 2.5 Calling a Non-void Method
ENDURING UNDERSTANDING MOD-1 Some objects or concepts are so frequently represented that programmers can draw upon existing code that has already been tested, enabling them to write solutions more quickly and with a greater degree of confidence.
LEARNING OBJECTIVE MOD-1.G Call non-static non-void methods with or without parameters.
ESSENTIAL KNOWLEDGE MOD-1.G.1 Non-void methods return a value that is the same type as the return type in the signature. To use the return value when calling a non-void method, it must be stored in a variable or used as part of an expression.

2.6 String Objects: Concatenation, Literals, and More

DATES
TOPIC 2.6 String Objects: Concatenation, Literals, and More
ENDURING UNDERSTANDING VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE VAR-1.E For String class: a. Create String objects. b. Call String methods.
ESSENTIAL KNOWLEDGE VAR-1.E.1 String objects can be created by using string literals or by calling the String class constructor VAR-1.E.2 String objects are immutable, meaning that String methods do not change the String object. VAR-1.E.3 String objects can be concatenated using the + or += operator, resulting in a new String object. VAR-1.E.4 Primitive values can be concatenated with a String object. This causes implicit conversion of the values to String objects. VAR-1.E.5 Escape sequences start with a \ and have a special meaning in Java. Escape sequences used in this course include \”, \\, and \n.

2.7 String Methods

DATES
TOPIC 2.7 String Methods
ENDURING UNDERSTANDING VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE VAR-1.E For String class: a. Create String objects. b. Call String methods.
ESSENTIAL KNOWLEDGE VAR-1.E.6 Application program interfaces (APIs) and libraries simplify complex programming tasks. VAR-1.E.7 Documentation for APIs and libraries are essential to understanding the attributes and behaviors of an object of a class. VAR-1.E.8 Classes in the APIs and libraries are grouped into packages. VAR-1.E.9 The String class is part of the java.lang package. Classes in the java.lang package are available by default. VAR-1.E.10 A String object has index values from 0 to length – 1. Attempting to access indices outside this range will result in an IndexOutOfBoundsException. VAR-1.E.11 A String object can be concatenated with an object reference, which implicitly calls the referenced object’s toString method. VAR-1.E.12 The following String methods and constructors—including what they do and when they are used—are part of the Java Quick Reference: § String(String str) — Constructs a new String object that represents the same sequence of characters as str § int length() — Returns the number of characters in a String object § String substring (int from, int to) returns stubstring starting at from ending at to -1 § String substring(int from) — Returns substring(from, length()) § int indexOf(String str) — Returns the index of the first occurrence of str; returns -1 if not found § boolean equals(String other) — Returns true if this is equal to other; returns false otherwise § int compareTo(String other) — Returns a value < 0 if this is less than other; returns zero if this is equal to other; returns a value > 0 if this is greater than other VAR-1.E.13 A string identical to the single element substring at position index can be created by calling substring(index, index + 1)

Activities

Sample Activities Using manipulatives
When introducing students to the idea of creating objects, you can use a cookie cutter and modeling clay or dough, with the cutter representing the class and the cut dough representing the objects. For each object cut, write the instantiation. Ask students to describe what the code is doing and how the different parameter values (e.g., thickness, color) change the object that was created.
Marking the text
Provide students with several statements that define a variable and create an object on a single line. Have students mark up the statements by circling the assignment operator and the new keyword. Then, have students underline the variable type and the constructor. Lastly, have them draw a rectangle around the list of actual parameters being passed to the constructor. Using these marked-up statements, ask students to create several new variables and objects.
Think-pair-share
Provide students with several code segments, each with a missing expression that would contain a call to a method in the Math class, and a description of the intended outcome of each code segment. Ask them which statement should be used to complete the code segment. Have them share their responses with a partner to compare answers and come to agreement, and then have groups share with the entire class.
 
×

UNIT 3: Boolean Expressions and if Statements

Overview

AP EXAM WEIGHTING 15–17.5%
CLASS PERIODS ~11–13
OVERVIEW Algorithms are composed of three building blocks: sequencing, selection, and iteration. This unit focuses on selection, which is represented in a program by using conditional statements. Conditional statements give the program the ability to decide and respond appropriately and are a critical aspect of any nontrivial computer program. In addition to learning the syntax and proper use of conditional statements, students will build on the introduction of Boolean variables by writing Boolean expressions with relational and logical operators. The third building block of all algorithms is iteration, which you will cover in Unit 4. Selection and iteration work together to solve problems.

3.1 Boolean Expressions

DATES
TOPIC 3.1 Boolean Expressions
ENDURING UNDERSTANDING CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-1.E Evaluate Boolean expressions that use relational operators in program code.
ESSENTIAL KNOWLEDGE CON-1.E.1 Primitive values and reference values can be compared using relational operators (i.e., == and !=). CON-1.E.2 Arithmetic expression values can be compared using relational operators (i.e., <, >, <=, >=). CON-1.E.3 An expression involving relational operators evaluates to a Boolean value.

3.2 if Statements and Control Flow

DATES
TOPIC 3.2 if Statements and Control Flow
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.A Represent branching logical processes by using conditional statements.
ESSENTIAL KNOWLEDGE CON-2.A.1 Conditional statements interrupt the sequential execution of statements. CON-2.A.2 if statements affect the flow of control by executing different statements based on the value of a Boolean expression. CON-2.A.3 A one-way selection (if statement) is written when there is a set of statements to execute under a certain condition. In this case, the body is executed only when the Boolean condition is true.

3.3 if-else Statements

DATES
TOPIC 3.3 if-else Statements
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.A Represent branching logical processes by using conditional statements.
ESSENTIAL KNOWLEDGE CON-2.A.4 A two-way selection is written when there are two sets of statements— one to be executed when the Boolean condition is true, and another set for when the Boolean condition is false. In this case, the body of the “if” is executed when the Boolean condition is true, and the body of the “else” is executed when the Boolean condition is false.

3.4 else if Statements

DATES
TOPIC 3.4 else if Statements
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.A Represent branching logical processes by using conditional statements.
ESSENTIAL KNOWLEDGE CON-2.A.5 A multi-way selection is written when there are a series of conditions with different statements for each condition. Multi-way selection is performed using if-else-if statements such that exactly one section of code is executed based on the first condition that evaluates to true.

3.5 Compound Boolean Expressions

DATES
TOPIC 3.5 Compound Boolean Expressions
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values. CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-2.B Represent branching logical processes by using nested conditional statements. CON-1.F Evaluate compound Boolean expressions in program code.
ESSENTIAL KNOWLEDGE CON-2.B.1 Nested if statements consist of if statements within if statements. CON-1.F.1 Logical operators !(not), &&(and), and ||(or) are used with Boolean values. This represents the order these operators will be evaluated. CON-1.F.2 An expression involving logical operators evaluates to a Boolean value. CON-1.F.3 When the result of a logical expression using && or || can be determined by evaluating only the first Boolean operand, the second is not evaluated. This is known as short-circuited evaluation.

3.6 Equivalent Boolean Expressions

DATES
TOPIC 3.6 Equivalent Boolean Expressions
ENDURING UNDERSTANDING CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-1.G Compare and contrast equivalent Boolean expressions.
ESSENTIAL KNOWLEDGE CON-1.G.1 De Morgan’s Laws can be applied to Boolean expressions. CON-1.G.2 Truth tables can be used to prove Boolean identities. CON-1.G.3 Equivalent Boolean expressions will evaluate to the same value in all cases.

3.7 Comparing Objects

DATES
TOPIC 3.7 Comparing Objects
ENDURING UNDERSTANDING CON-1 The way variables and operators are sequenced and combined in an expression determines the computed result.
LEARNING OBJECTIVE CON-1.H Compare object references using Boolean expressions in program code.
ESSENTIAL KNOWLEDGE CON-1.H.1 Two object references are considered aliases when they both reference the same object. CON-1.H.2 Object reference values can be compared, using == and !=, to identify aliases. CON-1.H.3 A reference value can be compared with null, using == or !=, to determine if the reference actually references an object. CON-1.H.4 Often classes have their own equals method, which can be used to determine whether two objects of the class are equivalent.

Activities

Sample Activities Code tracing
Provide students with several code segments that contain conditional statements. Have students trace various sample inputs, keeping track of the statements that get executed and the order in which they are executed. This can help students find errors and validate results.
Pair programming
Have students work with a partner to create a “guess checker” that could be used as part of a larger game. Students compare four given digits to a preexisting four-digit code that is stored in individual variables. Their program should provide output containing the number of correct digits in correct locations, as well as the number of correct digits in incorrect locations. This program can be continually improved as students learn about nested conditional statements and compound Boolean expressions.
Diagramming
Have students create truth tables by listing all the possible true and false combinations and corresponding Boolean values for a given compound Boolean expression. Once students have created the truth table, provide students with input values. Have students determine the value of each individual Boolean expression and use the truth table to determine the result of the compound Boolean expression.
Student response system
Provide students with a code segment that utilizes conditional statements and a compound Boolean expression, and ask them to choose an equivalent code segment that uses a nested conditional statement (and vice versa). Have them report their responses using a student response system.
Predict and compare
Have students predict the output of several different code segments that compare object references—some that use .equals() and some that use ==. Once done, have them create a program that contains those code segments and compare the actual and expected results. This is best illustrated using a simple class that you write yourself.
 
×

UNIT 4: Iteration

Overview

AP EXAM WEIGHTING 17.5–22.5%
CLASS PERIODS ~14–16
OVERVIEW This unit focuses on iteration using while and for loops. As you saw in Unit 3, Boolean expressions are useful when a program needs to perform different operations under different conditions. Boolean expressions are also one of the main components in iteration. This unit introduces several standard algorithms that use iteration. Knowledge of standard algorithms makes solving similar problems easier, as algorithms can be modified or combined to suit new situations. Iteration is used when traversing data structures such as arrays, ArrayLists, and 2D arrays. In addition, it is a necessary component of several standard algorithms, including searching and sorting, which will be covered in later units.

4.1 while Loops

DATES
TOPIC 4.1 while Loops
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.C Represent iterative processes using a while loop. CON-2.D For algorithms in the context of a particular specification that does not require the use of traversals: § Identify standard algorithms. § Modify standard algorithms. § Develop an algorithm.
ESSENTIAL KNOWLEDGE CON-2.C.1 Iteration statements change the flow of control by repeating a set of statements zero or more times until a condition is met. CON-2.C.2 In loops, the Boolean expression is evaluated before each iteration of the loop body, including the first. When the expression evaluates to true, the loop body is executed. This continues until the expression evaluates to false, whereupon the iteration ceases. CON-2.C.3 A loop is an infinite loop when the Boolean expression always evaluates to true. CON-2.C.4 If the Boolean expression evaluates to false initially, the loop body is not executed at all. CON-2.C.5 Executing a return statement inside an iteration statement will halt the loop and exit the method or constructor. CON-2.D.1 There are standard algorithms to: § Identify if an integer is or is not evenly divisible by another integer § Identify the individual digits in an integer § Determine the frequency with which a specific criterion is met CON-2.D.2 There are standard algorithms to: § Determine a minimum or maximum value § Compute a sum, average, or mode

4.2 for Loops

DATES
TOPIC 4.2
for Loops
ENDURING UNDERSTANDING CON-2
Programmers incorporate iteration and selection into code as a way of providing
instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.E
Represent iterative
processes using a for loop.
ESSENTIAL KNOWLEDGE CON-2.E.1
There are three parts in a for loop header:
the initialization, the Boolean expression, and
the increment. The increment statement can
also be a decrement statement.
CON-2.E.2
In a for loop, the initialization statement is only executed once before the first Boolean expression evaluation. The variable being initialized is referred to as a loop control variable.
CON-2.E.3
In each iteration of a for loop, the increment
statement is executed after the entire loop
body is executed and before the Boolean
expression is evaluated again.
CON-2.E.4
A for loop can be rewritten into an equivalent
while loop and vice versa.
CON-2.E.5
“Off by one” errors occur when the iteration
statement loops one time too many or one time
too few.

4.3 Developing Algorithms Using Strings

DATES
TOPIC 4.3
Developing Algorithms
Using Strings
ENDURING UNDERSTANDING CON-2
Programmers incorporate iteration and selection into code as a way of providing
instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.F
For algorithms in the context of a particular specification that involves String objects:
§ Identify standard
algorithms.
§ Modify standard
algorithms.
§ Develop an algorithm.
ESSENTIAL KNOWLEDGE CON-2.F.1
There are standard algorithms that utilize
String traversals to:
§ Find if one or more substrings has a particular property
§ Determine the number of substrings that meet specific criteria
§ Create a new string with the characters reversed

4.4 Nested Iteration

DATES
TOPIC 4.4
Nested Iteration
ENDURING UNDERSTANDING CON-2
Programmers incorporate iteration and selection into code as a way of providing
instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.G
Represent nested iterative
processes.
ESSENTIAL KNOWLEDGE CON-2.G.1
Nested iteration statements are iteration
statements that appear in the body of another
iteration statement.
CON-2.G.2
When a loop is nested inside another loop,
the inner loop must complete all its iterations
before the outer loop can continue.

4.5 Informal Code Analysis

DATES
TOPIC 4.5
Informal Code Analysis
ENDURING UNDERSTANDING CON-2
Programmers incorporate iteration and selection into code as a way of providing
instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.H
Compute statement execution counts and informal run-time comparison of iterative statements.
ESSENTIAL KNOWLEDGE CON-2.H.1
A statement execution count indicates the number of times a statement is executed by the program.

Activities

Sample Activities Jigsaw
As a whole class, look at a code segment containing iteration and the resulting output. Afterward, divide students into groups, and provide each group with a slightly modified code segment. After groups have determined how the result changes based on their modified segment, have them get together with students who investigated a different version of the code segment and share their conclusions.
Note-taking
Provide students with a method that, when given an integer, returns the month name from a String that includes all the month names in order, each separated by a space. Have them annotate what each statement does in the method. Then, ask students to use their annotated method as a guide to write a similar method that, given a student number as input, returns the name of a student from a String containing the first name of all students in the class, each separated by a space.
Simplify the problem
Provide students with several code segments containing iteration. For each segment, have students trace through the execution of a loop with smaller bounds to see what boundary cases are considered, and then use that information to determine the number of times each loop executes with the original bounds.
 
×

UNIT 5: Writing Classes

AP EXAM WEIGHTING 5–7.5%
CLASS PERIODS ~12–14
OVERVIEW This unit will pull together information from all previous units to create new, user-defined reference data types in the form of classes. The ability to accurately model real-world entities in a computer program is a large part of what makes computer science so powerful. This unit focuses on identifying appropriate behaviors and attributes of real-world entities and organizing these into classes. Students will build on what they learn in this unit to represent relationships between classes through hierarchies, which appear in Unit 9. The creation of computer programs can have extensive impacts on societies, economies, and cultures. The legal and ethical concerns that come with programs and the responsibilities of programmers are also addressed in this unit.

5.1 Anatomy of a Class

DATES
TOPIC 5.1 Anatomy of a Class
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept. MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-2.A Designate access and visibility constraints to classes, data, constructors, and methods. MOD-3.A Designate private visibility of instance variables to encapsulate the attributes of an object.
ESSENTIAL KNOWLEDGE MOD-2.A.1 The keywords public and private affect the access of classes, data, constructors, and methods. MOD-2.A.2 The keyword private restricts access to the declaring class, while the keyword public allows access from classes outside the declaring class. MOD-2.A.3 Classes are designated public. MOD-2.A.4 Access to attributes should be kept internal to the class. Therefore, instance variables are designated as private. MOD-2.A.5 Constructors are designated public. MOD-2.A.6 Access to behaviors can be internal or external to the class. Therefore, methods can be designated as either public or private. MOD-3.A.1 Data encapsulation is a technique in which the implementation details of a class are kept hidden from the user. MOD-3.A.2 When designing a class, programmers make decisions about what data to make accessible and modifiable from an external class. Data can be either accessible or modifiable, or it can be both or neither. MOD-3.A.3 Instance variables are encapsulated by using the private access modifier. MOD-3.A.4 The provided accessor and mutator methods in a class allow client code to use and modify data.

5.2 Constructors

DATES
TOPIC 5.2 Constructors
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept.
LEARNING OBJECTIVE MOD-2.B Define instance variables for the attributes to be initialized through the constructors of a class.
ESSENTIAL KNOWLEDGE MOD-2.B.1 An object’s state refers to its attributes and their values at a given time and is defined by instance variables belonging to the object. This creates a “has-a” relationship between the object and its instance variables. MOD-2.B.2 Constructors are used to set the initial state of an object, which should include initial values for all instance variables. MOD-2.B.3 Constructor parameters are local variables to the constructor and provide data to initialize instance variables. MOD-2.B.4 When a mutable object is a constructor parameter, the instance variable should be initialized with a copy of the referenced object. In this way, the instance variable is not an alias of the original object, and methods are prevented from modifying the state of the original object. MOD-2.B.5 When no constructor is written, Java provides a no-argument constructor, and the instance variables are set to default values.

5.3 Documentation with Comments

DATES
TOPIC 5.3 Documentation with Comments
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept.
LEARNING OBJECTIVE MOD-2.C Describe the functionality and use of program code through comments.
ESSENTIAL KNOWLEDGE MOD-2.C.1 Comments are ignored by the compiler and are not executed when the program is run. MOD-2.C.2 Three types of comments in Java include /* */, which generates a block of comments, //, which generates a comment on one line, and /** */, which are Javadoc comments and are used to create API documentation. MOD-2.C.3 A precondition is a condition that must be true just prior to the execution of a section of program code in order for the method to behave as expected. There is no expectation that the method will check to ensure preconditions are satisfied. MOD-2.C.4 A postcondition is a condition that must always be true after the execution of a section of program code. Postconditions describe the outcome of the execution in terms of what is being returned or the state of an object. MOD-2.C.5 Programmers write method code to satisfy the postconditions when preconditions are met.

5.4 Accessor Methods

DATES
TOPIC 5.4 Accessor Methods
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept.
LEARNING OBJECTIVE MOD-2.D Define behaviors of an object through non-void methods without parameters written in a class.
ESSENTIAL KNOWLEDGE MOD-2.D.1 An accessor method allows other objects to obtain the value of instance variables or static variables. MOD-2.D.2 A non-void method returns a single value. Its header includes the return type in place of the keyword void. MOD-2.D.3 In non-void methods, a return expression compatible with the return type is evaluated, and a copy of that value is returned. This is referred to as “return by value.” MOD-2.D.4 When the return expression is a reference to an object, a copy of that reference is returned, not a copy of the object. MOD-2.D.5 The return keyword is used to return the flow of control to the point immediately following where the method or constructor was called. MOD-2.D.6 The toString method is an overridden method that is included in classes to provide a description of a specific object. It generally includes what values are stored in the instance data of the object. MOD-2.D.7 If System.out.print or System.out. println is passed an object, that object’s toString method is called, and the returned string is printed.

5.5 Mutator Methods

DATES
TOPIC 5.5 Mutator Methods
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept.
LEARNING OBJECTIVE MOD-2.E Define behaviors of an object through void methods with or without parameters written in a class.
ESSENTIAL KNOWLEDGE MOD-2.E.1 A void method does not return a value. Its header contains the keyword void before the method name. MOD-2.E.2 A mutator (modifier) method is often a void method that changes the values of instance variables or static variables.

5.6 Writing Methods

DATES
TOPIC 5.6 Writing Methods
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept.
LEARNING OBJECTIVE MOD-2.F Define behaviors of an object through non-void methods with parameters written in a class.
ESSENTIAL KNOWLEDGE MOD-2.F.1 Methods can only access the private data and methods of a parameter that is a reference to an object when the parameter is the same type as the method’s enclosing class. MOD-2.F.2 Non-void methods with parameters receive values through parameters, use those values, and return a computed value of the specified type. MOD-2.F.3 It is good programming practice to not modify mutable objects that are passed as parameters unless required in the specification. MOD-2.F.4 When an actual parameter is a primitive value, the formal parameter is initialized with a copy of that value. Changes to the formal parameter have no effect on the corresponding actual parameter. MOD-2.F.5 When an actual parameter is a reference to an object, the formal parameter is initialized with a copy of that reference, not a copy of the object. If the reference is to a mutable object, the method or constructor can use this reference to alter the state of the object. MOD-2.F.6 Passing a reference parameter results in the formal parameter and the actual parameter being aliases. They both refer to the same object.

5.7 Static Variables and Methods

DATES
TOPIC 5.7 Static Variables and Methods
ENDURING UNDERSTANDING MOD-2 Programmers use code to represent a physical object or nonphysical concept, real or imagined, by defining a class based on the attributes and/or behaviors of the object or concept.
LEARNING OBJECTIVE MOD-2.G Define behaviors of a class through static methods. MOD-2.H Define the static variables that belong to the class.
ESSENTIAL KNOWLEDGE MOD-2.G.1 Static methods are associated with the class, not objects of the class. MOD-2.G.2 Static methods include the keyword static in the header before the method name. MOD-2.G.3 Static methods cannot access or change the values of instance variables. MOD-2.G.4 Static methods can access or change the values of static variables. MOD-2.G.5 Static methods do not have a this reference and are unable to use the class’s instance variables or call non-static methods. MOD-2.H.1 Static variables belong to the class, with all objects of a class sharing a single static variable. MOD-2.H.2 Static variables can be designated as either public or private and are designated with the static keyword before the variable type. MOD-2.H.3 Static variables are used with the class name and the dot operator, since they are associated with a class, not objects of a class.

5.8 Scope and Access

DATES
TOPIC 5.8 Scope and Access
ENDURING UNDERSTANDING VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE VAR-1.G Explain where variables can be used in the program code.
ESSENTIAL KNOWLEDGE VAR-1.G.1 Local variables can be declared in the body of constructors and methods. These variables may only be used within the constructor or method and cannot be declared to be public or private. VAR-1.G.2 When there is a local variable with the same name as an instance variable, the variable name will refer to the local variable instead of the instance variable. VAR-1.G.3 Formal parameters and variables declared in a method or constructor can only be used within that method or constructor. VAR-1.G.4 Through method decomposition, a programmer breaks down a large problem into smaller subproblems by creating methods to solve each individual subproblem.

5.9 this Keyword

DATES
TOPIC 5.9 this Keyword
ENDURING UNDERSTANDING VAR-1 To find specific solutions to generalizable problems, programmers include variables in their code so that the same algorithm runs using different input values.
LEARNING OBJECTIVE VAR-1.H Evaluate object reference expressions that use the keyword this.
ESSENTIAL KNOWLEDGE VAR-1.H.1 Within a non-static method or a constructor, the keyword this is a reference to the current object—the object whose method or constructor is being called. VAR-1.H.2 The keyword this can be used to pass the current object as an actual parameter in a method call.

5.10 Ethical and Social Implications of Computing Systems

DATES
TOPIC 5.10 Ethical and Social Implications of Computing Systems
ENDURING UNDERSTANDING IOC-1 While programs are typically designed to achieve a specific purpose, they may have unintended consequences.
LEARNING OBJECTIVE IOC-1.A Explain the ethical and social implications of computing systems.
ESSENTIAL KNOWLEDGE IOC-1.A.1 System reliability is limited. Programmers should make an effort to maximize system reliability. IOC-1.A.2 Legal issues and intellectual property concerns arise when creating programs. IOC-1.A.3 The creation of programs has impacts on society, economies, and culture. These impacts can be beneficial and/or harmful.

Activities

Sample Activities Kinesthetic learning
Have students break into groups of 4–5 to play board games. Ask them to play the game for about 10 minutes. While they play the game, they should keep track of the various nouns they encounter and actions that happen as part of the game. The nouns can be represented in the computer as classes, and the actions are the behaviors. At the end of game play, ask students to create UML diagrams for the identified classes.
Marking the text
Present students with specifications, and have them highlight or underline any preconditions (both implicit and explicit) that exist for the method to function. This includes information about parameters, such as object references not being null.
Create a plan
When asked to write a method, have students write an outline using pseudocode with paper and pencil. Then, go through it step-by-step with sample input to ensure that the process is correct and to determine if any additional information is needed before beginning to program a solution on the computer.
Paraphrase
Provide students with several example classes that utilize static variables for unique identification numbers or for counting the number of objects that have been created, but do not provide any description or documentation for the code. Have students spend time creating objects and calling the static methods to investigate how the static variables behave, then have them document the code appropriately to describe how each class utilizes static variables and methods.
 
×

UNIT 6: Array

Overview

AP EXAM WEIGHTING 10–15%
CLASS PERIODS ~6–8
OVERVIEW This unit focuses on data structures, which are used to represent collections of related data using a single variable rather than multiple variables. Using a data structure along with iterative statements with appropriate bounds will allow for similar treatment to be applied more easily to all values in the collection. Just as there are useful standard algorithms when dealing with primitive data, there are standard algorithms to use with data structures. In this unit, we apply standard algorithms to arrays; however, these same algorithms are used with ArrayLists and 2D arrays as well. Additional standard algorithms, such as standard searching and sorting algorithms, will be covered in the next unit.

6.1 Array Creation and Access

DATES
TOPIC 6.1 Array Creation and Access
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.A Represent collections of related primitive or object reference data using onedimensional (1D) array objects.
ESSENTIAL KNOWLEDGE VAR-2.A.1 The use of array objects allows multiple related items to be represented using a single variable. VAR-2.A.2 The size of an array is established at the time of creation and cannot be changed. VAR-2.A.3 Arrays can store either primitive data or object reference data. VAR-2.A.4 When an array is created using the keyword new, all of its elements are initialized with a specific value based on the type of elements: § Elements of type int are initialized to 0 § Elements of type double are initialized to 0.0 § Elements of type boolean are initialized to false § Elements of a reference type are initialized to the reference value null. No objects are automatically created VAR-2.A.5 Initializer lists can be used to create and initialize arrays. VAR-2.A.6 Square brackets ([ ]) are used to access and modify an element in a 1D array using an index. VAR-2.A.7 The valid index values for an array are 0 through one less than the number of elements in the array, inclusive. Using an index value outside of this range will result in an ArrayIndexOutOfBoundsException being thrown.

6.2 Traversing Arrays

DATES
TOPIC 6.2 Traversing Arrays
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.B Traverse the elements in a 1D array
ESSENTIAL KNOWLEDGE VAR-2.B.1 Iteration statements can be used to access all the elements in an array. This is called traversing the array VAR-2.B.2 Traversing an array with an indexed for loop or while loop requires elements to be accessed using their indices. VAR-2.B.3 Since the indices for an array start at 0 and end at the number of elements − 1, “off by one” errors are easy to make when traversing an array, resulting in an ArrayIndexOutOfBoundsException being thrown.

6.3 Enhanced for Loop for Arrays

DATES
TOPIC 6.3 Enhanced for Loop for Arrays
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.C Traverse the elements in a 1D array object using an enhanced for loop.
ESSENTIAL KNOWLEDGE VAR-2.C.1 An enhanced for loop header includes a variable, referred to as the enhanced for loop variable. VAR-2.C.2 For each iteration of the enhanced for loop, the enhanced for loop variable is assigned a copy of an element without using its index. VAR-2.C.3 Assigning a new value to the enhanced for loop variable does not change the value stored in the array. VAR-2.C.4 Program code written using an enhanced for loop to traverse and access elements in an array can be rewritten using an indexed for loop or a while loop.

6.4 Developing Algorithms Using Arrays

DATES
TOPIC 6.4 Developing Algorithms Using Arrays
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.I For algorithms in the context of a particular specification that requires the use of array traversals: § Identify standard algorithms. § Modify standard algorithms. § Develop an algorithm.
ESSENTIAL KNOWLEDGE CON-2.I.1 There are standard algorithms that utilize array traversals to: § Determine a minimum or maximum value § Compute a sum, average, or mode § Determine if at least one element has a particular property § Determine if all elements have a particular property § Access all consecutive pairs of elements § Determine the presence or absence of duplicate elements § Determine the number of elements meeting specific criteria CON-2.I.2 There are standard array algorithms that utilize traversals to: § Shift or rotate elements left or right § Reverse the order of the elements

Activities

Sample Activities Diagramming
Provide students with several prompts to create and access elements in an array. After they have determined the code for each prompt, have students draw a memory diagram that shows references and the arrays they point to. Have students update the diagram with each statement to demonstrate how changing the contents through one array reference effects all the array references for this array.
Error analysis
Provide students with several error-ridden code segments containing array traversals along with the expected output of each segment. Ask them to identify any errors that they see on paper and to suggest fixes to provide the expected output. Have them type up their solutions in an IDE to verify their work.
Think-pair-share
Ask students to consider two program code segments that are meant to yield the same result: one using a traditional for loop and one using a for each loop. Have them take a few minutes to think independently about whether the two segments accomplish the same result and, if not, what changes could be made in order for that to happen. Then, ask students to work with their partners to come up with situations where it would make sense to use one type of loop over the other before sharing with the whole class.
Pair programming
Have students use pair programming to solve an array-based free-response question. Have one student be the driver for Part A while the other navigates, then have them switch for Part B. Once they are done, have partners switch solutions with another group and work through the scoring guidelines to “grade” that solution. Spend time as a class discussing the different approaches students used.
 
×

UNIT 7: ArrayList

Overview

AP EXAM WEIGHTING 2.5–7.5%
CLASS PERIODS ~10–12
OVERVIEW As students learned in Unit 6, data structures are helpful when storing multiple related data values. Arrays have a static size, which causes limitations related to the number of elements stored, and it can be challenging to reorder elements stored in arrays. The ArrayList object has a dynamic size, and the class contains methods for insertion and deletion of elements, making reordering and shifting items easier. Deciding which data structure to select becomes increasingly important as the size of the data set grows, such as when using a large real-world data set. In this unit, students will also learn about privacy concerns related to storing large amounts of personal data and about what can happen if such information is compromised.

7.1 Introduction to ArrayList

DATES
TOPIC 7.1 Introduction to ArrayList
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.D Represent collections of related object reference data using ArrayList objects.
ESSENTIAL KNOWLEDGE VAR-2.D.1 An ArrayList object is mutable and contains object references. VAR-2.D.2 The ArrayList constructor ArrayList() constructs an empty list. VAR-2.D.3 Java allows the generic type ArrayList<E>, where the generic type E specifies the type of the elements. VAR-2.D.4 When ArrayList<E> is specified, the types of the reference parameters and return type when using the methods are type E. VAR-2.D.5 ArrayList<E> is preferred over ArrayList because it allows the compiler to find errors that would otherwise be found at run-time.

7.2 ArrayList Methods

DATES
TOPIC 7.2 ArrayList Methods
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.D Represent collections of related object reference data using ArrayList objects.
ESSENTIAL KNOWLEDGE VAR-2.D.6 The ArrayList class is part of the java. util package. An import statement can be used to make this class available for use in the program. VAR-2.D.7 The following ArrayList methods— including what they do and when they are used—are part of the Java Quick Reference: § int size() - Returns the number of elements in the list § boolean add(E obj) - Appends obj to end of list; returns true § void add(int index, E obj) - Inserts obj at position index (0 <= index <= size), moving elements at position index and higher to the right (adds 1 to their indices) and adds 1 to size § E get(int index) - Returns the element at position index in the list § E set(int index, E obj) — Replaces the element at position index with obj;returns the element formerly at position index § E remove(int index) — Removes element from position index, moving elements at position index + 1 and higher to the left (subtracts 1 from their indices) and subtracts 1 from size; returns the element formerly at position index

7.3 Traversing ArrayLists

DATES
TOPIC 7.3 Traversing ArrayLists
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.E For ArrayList objects: a. Traverse using a for or while loop b. Traverse using an enhanced for loop
ESSENTIAL KNOWLEDGE VAR-2.E.1 Iteration statements can be used to access all the elements in an ArrayList. This is called traversing the ArrayList. VAR-2.E.2 Deleting elements during a traversal of an ArrayList requires using special techniques to avoid skipping elements. VAR-2.E.3 Since the indices for an ArrayList start at 0 and end at the number of elements − 1, accessing an index value outside of this range will result in an ArrayIndexOutOfBoundsException being thrown. VAR-2.E.4 Changing the size of an ArrayList while traversing it using an enhanced for loop can result in a ConcurrentModificationException being thrown. Therefore, when using an enhanced for loop to traverse an ArrayList, you should not add or remove elements.

7.4 Developing Algorithms Using ArrayLists

DATES
TOPIC 7.4 Developing Algorithms Using ArrayLists
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.J For algorithms in the context of a particular specification that requires the use of ArrayList traversals: § Identify standard algorithms. § Modify standard algorithms. § Develop an algorithm.
ESSENTIAL KNOWLEDGE CON-2.J.1 There are standard ArrayList algorithms that utilize traversals to: § Insert elements § Delete elements § Apply the same standard algorithms that are used with 1D arrays CON-2.J.2 Some algorithms require multiple String, array, or ArrayList objects to be traversed simultaneously

7.5 Searching

DATES
TOPIC 7.5 Searching
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.K Apply sequential/linear search algorithms to search for specific information in array or ArrayList objects.
ESSENTIAL KNOWLEDGE CON-2.K.1 There are standard algorithms for searching. CON-2.K.2 Sequential/linear search algorithms check each element in order until the desired value is found or all elements in the array or ArrayList have been checked.

7.6 Sorting

DATES
TOPIC 7.6 Sorting
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.L Apply selection sort and insertion sort algorithms to sort the elements of array or ArrayList objects. CON-2.M Compute statement execution counts and informal run-time comparison of sorting algorithms.
ESSENTIAL KNOWLEDGE CON-2.L.1 Selection sort and insertion sort are iterative sorting algorithms that can be used to sort elements in an array or ArrayList. CON-2.M.1 Informal run-time comparisons of program code segments can be made using statement execution counts.

7.7 Ethical Issues Around Data Collection

DATES
TOPIC 7.7 Ethical Issues Around Data Collection
ENDURING UNDERSTANDING IOC-1 While programs are typically designed to achieve a specific purpose, they may have unintended consequences.
LEARNING OBJECTIVE IOC-1.B Explain the risks to privacy from collecting and storing personal data on computer systems.
ESSENTIAL KNOWLEDGE IOC-1.B.1 When using the computer, personal privacy is at risk. Programmers should attempt to safeguard personal privacy. IOC-1.B.2 Computer use and the creation of programs have an impact on personal security. These impacts can be beneficial and/or harmful.

Activities

Sample Activities Predict and compare
Have students look at the code they wrote to solve the free-response question in Unit 6 (or other code from Unit 6) on paper, and have them rewrite it using an ArrayList. Have them highlight the parts that need to be changed and determine how to change them. Then, have students type up the changes in an IDE and confirm that the program still works as expected.
Identify a subtask
Have students read through an ArrayList-based free-response question in groups, and have them identify all subtasks. These subtasks could be conditional statements, iteration, or even other methods. Once the subtasks have been identified, divide the subtasks among the group members, and have students implement their given subtask. When all students are finished, have them combine the subtasks into a single solution.
Discussion group
Discuss the algorithm necessary to search for the smallest value in an ArrayList. Without explaining what you are doing, change the Boolean expression so that it will find the largest value, and ask students to describe what the resulting algorithm will do. Then, change the algorithm to store and return the location of the largest value, and discuss the change.
 
×

UNIT 8: 2D Array

Overview

AP EXAM WEIGHTING 7.5–10%
CLASS PERIODS ~10–12
OVERVIEW In Unit 6, students learned how 1D arrays store large amounts of related data. These same concepts will be implemented with two-dimensional (2D) arrays in this unit. A 2D array is most suitable to represent a table. Each table element is accessed using the variable name and row and column indices. Unlike 1D arrays, 2D arrays require nested iterative statements to traverse and access all elements. The easiest way to accomplished this is in row-major order, but it is important to cover additional traversal patterns, such as back and forth or column-major.

8.1 2D Arrays

DATES
TOPIC 8.1 2D Arrays
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value.
LEARNING OBJECTIVE VAR-2.F Represent collections of related primitive or object reference data using two-dimensional (2D) array objects.
ESSENTIAL KNOWLEDGE VAR-2.F.1 2D arrays are stored as arrays of arrays. Therefore, the way 2D arrays are created and indexed is similar to 1D array objects. X EXCLUSION STATEMENT—(EK VAR-2.F.1): 2D array objects that are not rectangular are outside the scope of the course and AP Exam. VAR-2.F.2 For the purposes of the exam, when accessing the element at arr[first][second], the first index is used for rows, the second index is used for columns. VAR-2.F.3 The initializer list used to create and initialize a 2D array consists of initializer lists that represent 1D arrays. VAR-2.F.4 The square brackets [row][col] are used to access and modify an element in a 2D array. VAR-2.F.5 “Row-major order” refers to an ordering of 2D array elements where traversal occurs across each row, while “column-major order” traversal occurs down each column.

8.2 Traversing 2D Arrays

DATES
TOPIC 8.2 Traversing 2D Arrays
ENDURING UNDERSTANDING VAR-2 To manage large amounts of data or complex relationships in data, programmers write code that groups the data together into a single data structure without creating individual variables for each value. CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE VAR-2.G For 2D array objects: § Traverse using nested for loops. § Traverse using nested enhanced for loops. CON-2.N For algorithms in the context of a particular specification that requires the use of 2D array traversals: § Identify standard algorithms. § Modify standard algorithms. § Develop an algorithm.
ESSENTIAL KNOWLEDGE VAR-2.G.1 Nested iteration statements are used to traverse and access all elements in a 2D array. Since 2D arrays are stored as arrays of arrays, the way 2D arrays are traversed using for loops and enhanced for loops is similar to 1D array objects. VAR-2.G.2 Nested iteration statements can be written to traverse the 2D array in “row-major order” or “column-major order.” VAR-2.G.3 The outer loop of a nested enhanced for loop used to traverse a 2D array traverses the rows. Therefore, the enhanced for loop variable must be the type of each row, which is a 1D array. The inner loop traverses a single row. Therefore, the inner enhanced for loop variable must be the same type as the elements stored in the 1D array CON-2.N.1 When applying sequential/linear search algorithms to 2D arrays, each row must be accessed then sequential/linear search applied to each row of a 2D array CON-2.N.2 All standard 1D array algorithms can be applied to 2D array objects.

Activities

Sample Activities Using manipulatives
Use different-sized egg cartons or ice cube trays with random compartments filled with small toys or candy. Create laminated cards with the code for the construction of, and access to, a 2D array, leaving blanks for the name and size dimensions. Have students fill in the missing code that would be used to represent the physical 2D array objects and access the randomly stored elements
Activating prior knowledge
When first introducing 2D arrays and row-major traversal, ask students which part of the nested for loop structure loops over a 1D array. Based on what they know about the traversal of 1D array structures, ask them to calculate the number of times the inner loop executes.
Sharing and responding
As a class, create a set of test cases to be used with answers to a free-response question. Have students write their answers to the free-response question individually on paper. After exchanging solutions with another student, ask students to find errors or validate results of their peers’ code by tracing the code with the developed test cases. Allow students an opportunity to provide feedback on the program code as well as the results of each test case.
 
×

UNIT 9: Inheritance

Overview

AP EXAM WEIGHTING 5–10%
CLASS PERIODS ~14–15
OVERVIEW Creating objects, calling methods on the objects created, and being able to define a new data type by creating a class are essential understandings before moving into this unit. One of the strongest advantages of Java is the ability to categorize classes into hierarchies through inheritance. Certain existing classes can be extended to include new behaviors and attributes without altering existing code. These newly created classes are called subclasses. In this unit, students will learn how to recognize common attributes and behaviors that can be used in a superclass and will then create a hierarchy by writing subclasses to extend a superclass. Recognizing and utilizing existing hierarchies will help students create more readable and maintainable programs.

9.1 Creating Superclasses and Subclasses

DATES
TOPIC 9.1 Creating Superclasses and Subclasses
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-3.B Create an inheritance relationship from a subclass to the superclass.
ESSENTIAL KNOWLEDGE MOD-3.B.1 A class hierarchy can be developed by putting common attributes and behaviors of related classes into a single class called a superclass. MOD-3.B.2 Classes that extend a superclass, called subclasses, can draw upon the existing attributes and behaviors of the superclass without repeating these in the code. MOD-3.B.3 Extending a subclass from a superclass creates an “is-a” relationship from the subclass to the superclass. MOD-3.B.4 The keyword extends is used to establish an inheritance relationship between a subclass and a superclass. A class can extend only one superclass.

9.2 Writing Constructors for Subclasses

DATES
TOPIC 9.2 Writing Constructors for Subclasses
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-3.B Create an inheritance relationship from a subclass to the superclass.
ESSENTIAL KNOWLEDGE MOD-3.B.5 Constructors are not inherited. MOD-3.B.6 The superclass constructor can be called from the first line of a subclass constructor by using the keyword super and passing appropriate parameters. MOD-3.B.7 The actual parameters passed in the call to the superclass constructor provide values that the constructor can use to initialize the object’s instance variables. MOD-3.B.8 When a subclass’s constructor does not explicitly call a superclass’s constructor using super, Java inserts a call to the superclass’s no-argument constructor. MOD-3.B.9 Regardless of whether the superclass constructor is called implicitly or explicitly, the process of calling superclass constructors continues until the Object constructor is called. At this point, all of the constructors within the hierarchy execute beginning with the Object constructor.

9.3 Overriding Methods

DATES
TOPIC 9.3 Overriding Methods
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE LEARNING OBJECTIVE MOD-3.B Create an inheritance relationship from a subclass to the superclass.
ESSENTIAL KNOWLEDGE MOD-3.B.10 Method overriding occurs when a public method in a subclass has the same method signature as a public method in the superclass. MOD-3.B.11 Any method that is called must be defined within its own class or its superclass. MOD-3.B.12 A subclass is usually designed to have modified (overridden) or additional methods or instance variables. MOD-3.B.13 A subclass will inherit all public methods from the superclass; these methods remain public in the subclass.

9.4 super Keyword

DATES
TOPIC 9.4 super Keyword
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-3.B Create an inheritance relationship from a subclass to the superclass.
ESSENTIAL KNOWLEDGE MOD-3.B.14 The keyword super can be used to call a superclass’s constructors and methods. MOD-3.B.15 The superclass method can be called in a subclass by using the keyword super with the method name and passing appropriate parameters.

9.5 Creating References Using Inheritance Hierarchies

DATES
TOPIC 9.5 Creating References Using Inheritance Hierarchies
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-3.C Define reference variables of a superclass to be assigned to an object of a subclass in the same hierarchy.
ESSENTIAL KNOWLEDGE MOD-3.C.1 When a class S “is-a” class T, T is referred to as a superclass, and S is referred to as a subclass. MOD-3.C.2 If S is a subclass of T, then assigning an object of type S to a reference of type T facilitates polymorphism. MOD-3.C.3 If S is a subclass of T, then a reference of type T can be used to refer to an object of type T or S. MOD-3.C.4 Declaring references of type T, when S is a subclass of T, is useful in the following declarations: § Formal method parameters § arrays — T[] var ArrayList<T> var

9.6 Polymorphism

DATES
TOPIC 9.6 Polymorphism
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-3.D Call methods in an inheritance relationship.
ESSENTIAL KNOWLEDGE MOD-3.D.1 Utilize the Object class through inheritance. MOD-3.D.2 At compile time, methods in or inherited by the declared type determine the correctness of a non-static method call. MOD-3.D.3 At run-time, the method in the actual object type is executed for a non-static method call.

9.7 Object Superclass

DATES
TOPIC 9.7 Object Superclass
ENDURING UNDERSTANDING MOD-3 When multiple classes contain common attributes and behaviors, programmers create a new class containing the shared attributes and behaviors forming a hierarchy. Modifications made at the highest level of the hierarchy apply to the subclasses.
LEARNING OBJECTIVE MOD-3.E Call Object class methods through inheritance.
ESSENTIAL KNOWLEDGE MOD-3.E.1 The Object class is the superclass of all other classes in Java. MOD-3.E.2 The Object class is part of the java.lang package MOD-3.E.3 The following Object class methods and constructors—including what they do and when they are used—are part of the Java Quick Reference: § boolean equals(Object other) § String toString() MOD-3.E.4 Subclasses of Object often override the equals and toString methods with classspecific implementations.

Activities

Sample Activities Activating prior knowledge
Have students review what they know about classes, methods, and the scope of variables by having them write a class based on specifications that can easily be extended by subclasses. This class will become the superclass for subclasses they write later in the unit.
Create a plan
Given a class design problem that requires the use of multiple classes in an inheritance hierarchy, students identify the common attributes and behaviors among these classes and write these into a superclass. Any additional information that does not belong in the superclass will be categorized to determine the additional classes that might be necessary and what methods will need to be added or overridden in the subclasses.
Think aloud
Provide students with a code segment that contains method calls using the super keyword. Have students describe the code segment out loud to themselves. Give students several individual statements that attempt to interact with the given code segment, and have them talk through each one, describing which statements would work and which ones would not, as well as the reasons why those statements wouldn’t work.
Student response system
Provide students with several statements where objects are created and the reference type and object type are different but related. Then provide students with calls to methods on these created objects. Use a student response system to have students determine whether each statement is legal, would result in a compile-time error, or would result in a run-time error.
 
×

UNIT 10: Recursion

Overview

AP EXAM WEIGHTING 5–7.5%
CLASS PERIODS ~3–5
OVERVIEW Sometimes a problem can be solved by solving smaller or simpler versions of the same problem rather than attempting an iterative solution. This is called recursion, and it is a powerful math and computer science idea. In this unit, students will revisit how control is passed when methods are called, which is necessary knowledge when working with recursion. Tracing skills introduced in Unit 2 are helpful for determining the purpose or output of a recursive method. In this unit, students will learn how to write simple recursive methods and determine the purpose or output of a recursive method by tracing.

10.1 Recursion

DATES
TOPIC 10.1 Recursion
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.O Determine the result of executing recursive methods.
ESSENTIAL KNOWLEDGE CON-2.O.1 A recursive method is a method that calls itself CON-2.O.2 Recursive methods contain at least one base case, which halts the recursion, and at least one recursive call. CON-2.O.3 Each recursive call has its own set of local variables, including the formal parameters. CON-2.O.4 Parameter values capture the progress of a recursive process, much like loop control variable values capture the progress of a loop. CON-2.O.5 Any recursive solution can be replicated through the use of an iterative approach. X EXCLUSION STATEMENT—(EK CON-2.O.5): Writing recursive program code is outside the scope of the course and AP Exam. CON-2.O.6 Recursion can be used to traverse String, array, and ArrayList objects.

10.2 Recursive Searching and Sorting

DATES
TOPIC 10.2 Recursive Searching and Sorting
ENDURING UNDERSTANDING CON-2 Programmers incorporate iteration and selection into code as a way of providing instructions for the computer to process each of the many possible input values.
LEARNING OBJECTIVE CON-2.P Apply recursive search algorithms to information in String, 1D array, or ArrayList objects. CON-2.Q Apply recursive algorithms to sort elements of array or ArrayList objects.
ESSENTIAL KNOWLEDGE CON-2.P.1 Data must be in sorted order to use the binary search algorithm. CON-2.P.2 The binary search algorithm starts at the middle of a sorted array or ArrayList and eliminates half of the array or ArrayList in each iteration until the desired value is found or all elements have been eliminated. CON-2.P.3 Binary search can be more efficient than sequential/linear search. X EXCLUSION STATEMENT—(EK CON-2.P.3): Search algorithms other than sequential/linear and binary search are outside the scope of the course and AP Exam. CON-2.P.4 The binary search algorithm can be written either iteratively or recursively. CON-2.Q.1 Merge sort is a recursive sorting algorithm that can be used to sort elements in an array or ArrayList.

Activities

Sample Activities Sharing and responding
Provide students with the pseudocode to multiple recursive algorithms, and have students write the base case of the recursive methods and share it with their partner. The partner should then provide feedback, including any corrections or additions that may be needed.
Look for a pattern
Provide students with a recursive method and several different inputs. Have students run the recursive method, record the various outputs, and look for a pattern between the input and related output. Ask students to write one or two sentences as a broad description of what the recursive method is doing.
Code tracing
When looking at a recursive method to determine how many times it executes, have students create a call tree or a stack trace to show the method being called and the values of any parameters of each call. Students can then count up the number of times a statement executes or a method is called.
×
Teacher Mr. Wiessmann
Subject AP Computer Science Principles
Email edwiessmann@philasd.org
Cell Phone 215-900-8742
School Phone 215-351-7618
Hangout Code https://hangouts.google.com/group/9xAXLhgCUv7rMZCN2
Google Classroom Code jrc69m
Course Description The AP Computer Science Principles course is designed to be equivalent to a first- semester introductory college computing course. In this course, students will develop computational thinking skills vital for success across all disciplines, such as using computational tools to analyze and study data and working with large data sets to analyze, visualize, and draw conclusions from trends. The course engages students in the creative aspects of the field by allowing them to develop computational artifacts based on their interests. Students will also develop effective communication and collaboration skills by working individually and collaboratively to solve problems, and will discuss and write about the impacts these solutions could have on their community, society, and the world.
Assessments Students will be assessed on a variety of Projects, Written Assessments, and Formal Assessments. Students are required to participate during class time.
Grading Policy 10% Homework
20% Classwork
30% Performance Based Learning
40% Tests
Period Length (minutes) 47
Materials List Pen or Pencil for Writing
Notebook for Journal Entries, Notes, and Constructive Response Questions
Books: Computer Science Illuminated 3rd Addition
  https://runestone.academy/runestone/default/user/login?_next=/runestone/default/index
Class Rules: Students must obey the school wide rules of the Academy @ Palumbo at all times.
Tutoring After School Tuesday & Thursday 3:00-6:00 by appointment
AP Computer Science Principles Course Homepage: http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/231724.html
AP CSP College Board: https://apcentral.collegeboard.org/courses/ap-computer-science-principles?course=ap-computer-science-principles
Classroom Website: phillycomputerscience.com
AP Exam Date: May 11 Afternoon
AP Exam Schedule: https://professionals.collegeboard.com/testing/ap/about/dates
Code.org Resources https://studio.code.org/courses/csp-2018
Crash Course Resources https://www.youtube.com/playlist?list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo
×
The Concept Outline
Big Idea 1: Creativity
(0 days, 0 minutes)
[CR2a]
Computing is a creative activity. Creativity and computing are prominent forces in innovation; the innovations enabled by computing have had and will continue to have far-reaching impact.
Big Idea 2: Abstraction
(14 days, 658 minutes)
[CR1a][CR1f][CR2a][CR2b]
Abstraction: Abstraction reduces information and detail to facilitate focus on relevant concepts. It is a process, a strategy, and the result of reducing detail to focus on concepts relevant to understanding and solving problems.
Big Idea 3: Data and Information
(14 days, 658 minutes)
[CR1a][CR1f][CR2a][CR2c]
Data and information facilitate the creation of knowledge. Computing enables and empowers new methods of information processing, driving monumental change across many disciplines — from art to business to science.
Big Idea 4: Algorithms
(15 days, 705 minutes)
[CR1a][CR1f][CR2a][CR2d]
Algorithms are used to develop and express solutions to computational problems. Algorithms realized in software have affected the world in profound and lasting ways.
Big Idea 5: Programming
(15 days, 705 minutes)
[CR1a][CR1f][CR2a][CR2e]
Programming enables problem solving, human expression, and creation of knowledge. Programming and the creation of software has changed our lives. It results in the creation of software, and facilitates the creation of computational artifacts, such as music, images, and visualizations.
Big Idea 6: The Internet
(10 days, 470 minutes)
[CR1a][CR1f][CR2a][CR2f]
The Internet pervades modern computing. The Internet and the systems built on it have had a profound impact on society. Computer networks support communication and collaboration.
Big Idea 7: Global Impact
(8 days, 376 minutes)
[CR1a][CR1f][CR2a][CR2g]
Computing has global impact. Our methods for communicating, collaborating, problem solving, and doing business have changed and are changing due to innovations enabled by computing.
Create
(30 instructional and assessment days, 1410 minutes, a minimum of 12 hours are earmarked for the assessment)
[CR1b][CR1f][CR2a][CR4]
Abstraction, Algorithms, Programming
Explore
(20 instructional and assessment days, 940 minutes, a minimum of 8 hours are earmarked for the assessment)
[CR1b][CR3]
Data, Internet, Global Impact
×
AP Computer Science Principles Exam Structure
Assessment Overview This assessment comprises two parts: performance tasks and the end-of-course AP Exam and the through-course AP assessment.
The AP Computer Science Principles Exam will be a multiple-choice, paper and pencil exam.
The two performance tasks require students to explore the impacts of computing and create computational artifacts through programming.
Format of Assessment
AP COMPUTER SCIENCE PRINCIPLES EXAM: 2 HOURS (60% of AP Exam score)
• Multiple Choice (single- and multiple-select) | 74 Questions | 120 minutes | 60% of assessment score
AP COMPUTER SCIENCE PRINCIPLES THROUGH-COURSE PERFORMANCE TASKS (2) (Combined 40% of AP Exam Score):
• Explore – Impact of Computing Innovations | 8 hours (classroom time) | 16% of assessment score
• Create – Application to Ideas |12 hours (classroom time) | 24% of assessment score
Computational Artifacts Computational artifacts must provide an illustration, representation, or explanation of the computing innovation’s intended purpose, its function, or its effect. The computational artifacts must not simply repeat the information supplied in the written responses and should be primarily nontextual.
Submit a video, audio, or PDF le. Use computing tools and techniques to create one original computational artifact (a visualization, a graphic, a video, a program, or an audio recording). Acceptable multimedia le types include .mp3, .mp4, .wmv, .avi, .mov, .wav, .aif, or .pdf format. PDF les must not exceed three pages. Video or audio les must not exceed 1 minute in length and must not exceed 30MB in size.
×
Topic Lesson Assignment
Blockchain https://www.youtube.com/watch?v=hYip_Vuv8J0 Write a one page summary of what blockchiain is. How did the narrator connect with each audience. What level was most helpful for you?
IP Address https://www.youtube.com/watch?v=7_-qWlvQQtY Find two other sources describing ip addresses and reference theses in your paper. Write a one page summary about how private your data is online based on what you have learned by researching ip addresses.
Binary Math https://www.youtube.com/watch?v=XKu_SEDAykw&t=1043s Write a one page summary on the question that the engineer for google had to answer. Explain the problem and the stages of development the interview went over. Why is communication important?
×
Essential Questions: ▶ How can a creative development process affect the creation of computational artifacts?
▶ How can computing and the use of computational tools foster creative expression?
▶ How can computing extend traditional forms of human expression and experience?
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words:
[CR2a]EU 1.1 Creative development can be an essential process for creating computational artifacts.
LO 1.1.1 Apply
a creative development process when creating computational artifacts. [P2][CR1b]
EK 1.1.1A A creative process in the development of a computational artifact can include, but is not limited to, employing nontraditional, nonprescribed techniques; the use of novel combinations of artifacts, tools, and techniques; and the exploration of personal curiosities.
Creative development process
EK 1.1.1B Creating computational artifacts employs an iterative and often exploratory process to translate ideas into tangible form.
[CR2a]EU 1.2 Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem.
LO 1.2.1 Create a computational artifact for creative expression. [P2][CR1b]
EK 1.2.1A A computational artifact is something created by a human using a computer and can be, but is not limited to, a program, an image, an audio, a video, a presentation, or a Web page file.
Computational artifact
Computing tools
EK 1.2.1B Creating computational artifacts requires understanding of and use of software tools and services.
EK 1.2.1C Computing tools and techniques are used to create computational artifacts and can include, but are not limited to, programming integrated development environments (IDEs), spreadsheets, three-dimensional (3-D) printers, or text editors.
EK 1.2.1D A creatively developed computational artifact can be created by using nontraditional, nonprescribed computing techniques.
EK 1.2.1E Creative expressions in a computational artifact can re ect personal expressions of ideas or interests.
LO 1.2.2 Create a computational artifact using computing tools and techniques to solve a problem. [P2][CR1b]
EK 1.2.2A Computing tools and techniques can enhance the process of nding a solution to a problem.
EK 1.2.2B A creative development process for creating computational artifacts can be used to solve problems when traditional or prescribed computing techniques are not effective.
LO 1.2.3 Create a new computational artifact by combining or modifying existing artifacts. [P2][CR1b]
EK 1.2.3A Creating computational artifacts can be done by combining and modifying existing artifacts or by creating new artifacts.
EK 1.2.3B Computation facilitates the creation and modi cation of computational artifacts with enhanced detail and precision.
EK 1.2.3C Combining or modifying existing artifacts can show personal expression of ideas.
LO 1.2.4 Collaborate in the creation of computational artifacts. [P6][CR1f]
EK 1.2.4A A collaboratively created computational artifact re ects effort by more than one person.
Collaborate/collaboration
EK 1.2.4B Effective collaborative teams consider the use of online collaborative tools.
EK 1.2.4C Effective collaborative teams practice interpersonal communication, consensus building, con ict resolution, and negotiation.
EK 1.2.4D Effective collaboration strategies enhance performance.
EK 1.2.4E Collaboration facilitates the application of multiple perspectives (including sociocultural perspectives) and diverse talents and skills in developing computational artifacts.
EK 1.2.4F A collaboratively created computational artifact can re ect personal expressions of ideas.
LO 1.2.5 Analyze the correctness, usability, functionality, and suitability of computational artifacts. [P4][CR1d]
EK 1.2.5A The context in which an artifact is used determines the correctness, usability, functionality, and suitability of the artifact.
Analyze
EK 1.2.5B A computational artifact may have weaknesses, mistakes, or errors depending on the type of artifact.
EK 1.2.5C The functionality of a computational artifact may be related to how it is used or perceived.
EK 1.2.5D The suitability (or appropriateness) of a computational artifact may be related to how it is used or perceived.
[CR2a]EU 1.3 Computing can extend traditional forms of human expression and experience.
LO 1.3.1 Use computing tools and techniques for creative expression. [P2][CR1b]
EK 1.3.1A Creating digital effects, images, audio, video, and animations has transformed industries.
Creative expression (digital)
EK 1.3.1B Digital audio and music can be created by synthesizing sounds, sampling existing audio and music, and recording and manipulating sounds, including layering and looping.
EK 1.3.1C Digital images can be created by generating pixel patterns, manipulating existing digital images, or combining images.
EK 1.3.1D Digital effects and animations can be created by using existing software or modi ed software that includes functionality to implement the effects and animations.
EK 1.3.1E Computing enables creative exploration of both real and virtual phenomena.
×
Essential Questions: ▶ How are vastly different kinds of data, physical phenomena, and mathematical concepts represented on a computer?
▶ How does abstraction help us in writing programs, creating computational artifacts, and solving problems?
▶ How can computational models and simulations help generate new understanding and knowledge?
Crash Course Video Series: Early Computing: Crash Course Computer Science #1
Electronic Computing: Crash Course Computer Science #2
Boolean Logic & Logic Gates: Crash Course Computer Science #3
Representing Numbers and Letters with Binary: Crash Course Computer Science #4
How Computers Calculate - the ALU: Crash Course Computer Science #5
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words: Sample Activities:
Sources
[CR2b]EU 2.1 A variety of abstractions built on binary sequences can be used to represent all digital data.
LO 2.1.1 Describe the variety of abstractions used to represent data. [P3][CR1c]
EK 2.1.1A Digital data is represented by abstractions at different levels.
Abstraction
Digital data
Bits
Number bases
Binary numbers (base-2)
Hexadecimal (base-16)
During the first week of class, students participate in activities and discussions to form a basis for the CSP
course: What computer science involves (CS), how CS impacts our lives, how CS shapes our innovations
and activities, and more. LO 7.2.1[P1] [CR1a] [CR2g]
EK 2.1.1B At the lowest level, all digital data are represented by bits.
EK 2.1.1C At a higher level, bits are grouped to represent abstractions, including but not limited to numbers, characters, and color.
EK 2.1.1D Number bases, including binary, decimal, and hexadecimal, are used to represent and investigate digital data.
EK 2.1.1E At one of the lowest levels of abstraction, digital data is represented in binary (base 2) using only combinations of the digits zero and one.
EXClUSION STATEMENT (for EK 2.1.1E): Two’s complement conversions are beyond the scope of this course and the AP Exam.
EK 2.1.1F Hexadecimal (base 16) is used to represent digital data because hexadecimal representation uses fewer digits than binary.
EK 2.1.1G Numbers can be converted from any base to any other base.
LO 2.1.2 Explain how binary sequences are used to represent digital data. [P5][CR1e]
EK 2.1.2A A finite representation is used to model the in nite mathematical concept of a number.
EXCLUSION STATEMENT (for EK 2.1.2A): Binary representations of scientific notation are beyond the scope of this course and the AP Exam.
Binary sequences
Programming languages
Real numbers (floating-point)
Software
We will create a wall of (1) abstraction in everyday life using visual examples and (2) WHY? – a list of
why CS is relevant to our lives, careers, businesses, governments, etc. By semester two, the question
mark “?” of the WHY? will be changed to a “!”: WHY! Because at this transition we will see that
computer science is not only relevant but also exciting and deserves an exclamation. LO 2.1.1[P3], LO
7.1.1[P4] [CR1c] [CR2f]
EK 2.1.2B In many programming languages, the xed number of bits used to represent characters or integers limits the range of integer values and mathematical operations; this limitation can result in over ow or other errors.
EXCLUSION STATEMENT (for EK 2.1.2B): Range limitations of any one language, compiler, or architecture are beyond the scope of this course and the AP Exam.
EK 2.1.2C In many programming languages, the xed number of bits used to represent real numbers (as oating- point numbers) limits the range of oating-point values and mathematical operations; this limitation can result in round-off and other errors.
EK 2.1.2D The interpretation of a binary sequence depends on how it is used.
EK 2.1.2E A sequence of bits may represent instructions or data.
EK 2.1.2F A sequence of bits may represent different types of data in different contexts.
[CR2b]EU 2.2 Multiple levels of abstraction are used to write programs or create other computational artifacts.
LO 2.2.1 Develop an abstraction when writing a program or creating other computational artifacts. [P2][CR1b]
EK 2.2.1A The process of developing an abstraction involves removing detail and generalizing functionality.
Students will be given a paper sack and asked to bring it back with three items inside that represent their
past, present, and future in technology. The items can be actual devices/items or photos of the item.
Students will share their innovations as way to introduce themselves and share innovations in computing.
LO 1.2.5[P4] [CR1d] [CR2a]
EK 2.2.1B An abstraction extracts common features from speci c examples in order to generalize concepts.
EK 2.2.1C An abstraction generalizes functionality with input parameters that allow software reuse. EXCLUSION STATEMENT (for EK 2.2.1C): An understanding of the difference between value and reference parameters is beyond the scope of this course and the AP Exam.
LO 2.2.2 Use multiple levels of abstraction to write programs. [P3][CR1c]
EK 2.2.2A Software is developed using multiple levels of abstractions, such as constants, expressions, statements, procedures, and libraries.
Students will research and write a report about how data management is impacted by society’s need for data (e.g., how is data accessed by devices, where is data collected and used by businesses, what data tells about a person’s lifestyle). Students will verify the validity of the information sources and provide the respective citations and references. The report will also include legal issues related to data management. Innovations such as Netflix, Twitter, Instagram, and targeted marketing are topics that will fit well into this assignment. LO 3.1.3[P5], LO 7.2.1[P1], LO 7.3.1[P4], LO 7.5.1[P1], LO 7.5.2 [P5] [CR1e] [CR1a] [CR1d] [CR2c] [CR2g]
EK 2.2.2B Being aware of and using multiple levels of abstractions in developing programs help to more effectively apply available resources and tools to solve problems.
LO 2.2.3 Identify multiple levels of abstractions that are used when writing programs. [P3][CR1c]
EK 2.2.3A Different programming languages offer different levels of abstraction.
EXCLUSION STATEMENT (for EK 2.2.3A): Knowledge of the abstraction capabilities of all programming languages is beyond the scope of this course and the AP Exam.
Levels of abstractions
High-level languages
Low-level languages
Abstraction hierarchy
Binary data
Boolean function
Logic gate
Chip (as an abstraction)
Hardware
Lower-level abstractions
Higher-level abstractions
Students will collaboratively filter, sort, and select data from a public data set. LO 3.1.2[P6], LO 3.2.1[P1], LO 3.2.2[P3] [CR1f] [CR1a] [CR1c] [CR2c]
EK 2.2.3B High-level programming languages provide more abstractions for the programmer and make it easier for people to read and write a program.
EK 2.2.3C Code in a programming language is often translated into code in another (lower-level) language to be executed on a computer.
EK 2.2.3D In an abstraction hierarchy, higher levels of abstraction (the most general concepts) would be placed toward the top and lower-level abstractions (the more speci c concepts) toward the bottom.
EK 2.2.3E Binary data is processed by physical layers of computing hardware, including gates, chips, and components.
EK 2.2.3F A logic gate is a hardware abstraction that is modeled by a Boolean function.
EXCLUSION STATEMENT (for EK 2.2.3F): Memorization of speci c gate visual representations is beyond the scope of this course and the AP Exam.
EK 2.2.3G A chip is an abstraction composed of low-level components and circuits that perform a speci c function.
EK 2.2.3H A hardware component can be low level like a transistor or high level like a video card.
EK 2.2.3I Hardware is built using multiple levels of abstractions, such as transistors, logic gates, chips, memory, motherboards, special purpose cards, and storage devices.
EK 2.2.3J Applications and systems are designed, developed, and analyzed using levels of hardware, software, and conceptual abstractions.
EK 2.2.3k Lower-level abstractions can be combined to make higher-level abstractions, such as short message services (SMS) or email messages, images, audio les, and videos.
[CR2b]EU 2.3 Models and simulations use abstraction to generate new understanding and knowledge.
LO 2.3.1 Use models and simulations to represent phenomena. [P3][CR1c]
EK 2.3.1A Models and simulations are simplified representations of more complex objects or phenomena.
Models (see 2.3.1A-C)
Simulations
EK 2.3.1B Models may use different abstractions or levels of abstraction depending on the objects or phenomena being posed.
EK 2.3.1C Models often omit unnecessary features of the objects or phenomena that are being modeled.
EK 2.3.1D Simulations mimic real-world events without the cost or danger of building and testing the phenomena in the real world.
LO 2.3.2 Use models and simulations to formulate, re ne, and test hypotheses. [P3][CR1c]
EK 2.3.2A Models and simulations facilitate the formulation and re nement of hypotheses related to the objects or phenomena under consideration.
Hypotheses
EK 2.3.2B Hypotheses are formulated to explain the objects or phenomena being modeled.
EK 2.3.2C Hypotheses are re ned by examining the insights that models and simulations provide into the objects or phenomena.
EK 2.3.2D The results of simulations may generate new knowledge and new hypotheses related to the phenomena being modeled.
EK 2.3.2E Simulations allow hypotheses to be tested without the constraints of the real world.
EK 2.3.2F Simulations can facilitate extensive and rapid testing of models.
EK 2.3.2G The time required for simulations is impacted by the level of detail and quality of the models and the software and hardware used for the simulation.
EK 2.3.2H Rapid and extensive testing allows models to be changed to accurately re ect the objects or phenomena being modeled.
×
Essential Questions: ▶ How can computation be employed to help people process data and information to gain insight and knowledge?
▶ How can computation be employed to facilitate exploration and discovery when working with data?
▶ What considerations and trade-offs arise in the computational manipulation of data?
▶ What opportunities do large data sets provide for solving problems and creating knowledge?
Crash Course Video Series: Registers and RAM: Crash Course Computer Science #6
The Central Processing Unit (CPU): Crash Course Computer Science #7
Instructions & Programs: Crash Course Computer Science #8
Advanced CPU Designs: Crash Course Computer Science #9
Code.org resources: CSP Unit 2 - Digital Information
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words: Sample Activities:
Sources
[CR2c]EU 3.1 People use computer programs to process information to gain insight and knowledge.
LO 3.1.1 Find patterns and test hypotheses about digitally processed information to gain insight and knowledge. [P4][CR1d]
EK 3.1.1A Computers are used in an iterative and interactive way when processing digital information to gain insight and knowledge.
Data vs. Information see also 3.1.1C-E
Iterative
Filter
Clustering
Data classification
Patterns
Students will play board games in groups and create flow charts based on their game movements. Using
the flowcharts, students will collaborate to write pseudocode. Board games useful to flowcharting include
the following: Sorry, Trouble, Chutes & Ladders, Clue, Uno, Racko, and Mastermind. LO 4.1.2[P5], LO
5.1.3[P6] [CR1e] [CR1f]
EK 3.1.1B Digital information can be ltered and cleaned by using computers to process information.
EK 3.1.1C Combining data sources, clustering data, and data classification are part of the process of using computers to process information.
EK 3.1.1D Insight and knowledge can be obtained from translating and transforming digitally represented information.
EK 3.1.1E Patterns can emerge when data is transformed using computational tools.
LO 3.1.2 Collaborate when processing information to gain insight and knowledge. [P6][CR1f]
EK 3.1.2A Collaboration is an important part of solving data- driven problems.
Data-driven problems
Online collaborative tools
With a partner, students will use software to create digital versions of the flowcharts. The pairs will finish by translating the flowcharts into pseudocode. LO 1.2.2[P2], LO 2.2.1[P2], LO 4.1.2[P5] [CR1b] [CR1e] [CR2a] [CR2b] [CR2d]
EK 3.1.2B Collaboration facilitates solving computational problems by applying multiple perspectives, experiences, and skill sets.
EK 3.1.2C Communication between participants working on data-driven problems gives rise to enhanced insights and knowledge.
EK 3.1.2D Collaboration in developing hypotheses and questions, and in testing hypotheses and answering questions, about data helps participants gain insight and knowledge.
EK 3.1.2E Collaborating face-to-face and using online collaborative tools can facilitate processing information to gain insight and knowledge.
EK 3.1.2F Investigating large data sets collaboratively can lead to insight and knowledge not obtained when working alone.
LO 3.1.3 Explain the insight and knowledge gained from digitally processed data by using appropriate visualizations, notations, and precise language. [P5][CR1e]
EK 3.1.3A Visualization tools and software can communicate information about data.
Visualization(s)see also 3.1.3B
Students work collaboratively to complete a programming lab that solves a given problem. During the semi-guided lab, emphasis will be placed on the algorithm of the block-based code and the abstraction(s) evident. A flowchart, one-minute video, and code PDF will be submitted by each team to demonstrate their program design and functionality. LO 2.2.3 [P3], LO 5.1.2 [P2], LO 5.1.3 [P6], LO 5.2.1 [P3]
EK 3.1.3B Tables, diagrams, and textual displays can be used in communicating insight and knowledge gained from data.
EK 3.1.3C Summaries of data analyzed computationally can be effective in communicating insight and knowledge gained from digitally represented information.
EK 3.1.3DTransforming information can be effective in communicating knowledge gained from data.
EK 3.1.3E Interactivity with data is an aspect of communicating.
[CR2c]EU 3.2 Computing facilitates exploration and the discovery of connections in information.
LO 3.2.1 Extract information from data to discover and explain connections or trends. [P1][CR1a]
EK 3.2.1A Large data sets provide opportunities and challenges for extracting information and knowledge.
Extract(ing)
Large data set(s)see also 3.2.2
Trend(s)see also 7.1.1G
Computing tools (fusion tables, queries)
Search tools
Filter systems (filter tools)
Spreadsheet/database software
Metadata
Using App Inventor, students will create a Doodle drawing project during the first four days of the unit. After the four-day teacher introduction and overview of the interface, students will independently create another app of their choosing (from App Inventor’s online book) or from their own design. The ideas of student decision-making and time management will be discussed along with the use of prior concepts of flowcharting, efficient algorithms, and abstraction development in programming. Students will present their final projects on Days 9-10 of the project. Submission of artifacts will be meant to mimic PT components as a way to scaffold skill set development. LO 5.1.1 [P2] [CR1b] [CR2e]
EK 3.2.1B Large data sets provide opportunities for identifying trends, making connections in data, and solving problems.
EK 3.2.1C Computing tools facilitate the discovery of connections in information within large data sets.
EK 3.2.1D Search tools are essential for ef ciently nding information.
EK 3.2.1E Information ltering systems are important tools for nding information and recognizing patterns in the information.
EK 3.2.1F Software tools, including spreadsheets and databases, help to ef ciently organize and nd trends in information.
EXCLUSION STATEMENT (for EK 3.2.1F): Students are not expected to know speci c formulas or options available in spreadsheet or database software packages.
EK 3.2.1G Metadata is data about data.
EK 3.2.1H Metadata can be descriptive data about an image, a Web page, or other complex objects.
EK 3.2.1I Metadata can increase the effective use of data or data sets by providing additional information about various aspects of that data.
LO 3.2.2 Determine how large data sets impact the use of computational processes to discover information and knowledge. [P3][CR1c]
EK 3.2.2A Large data sets include data such as transactions, measurements, texts, sounds, images, and videos.
Scalability
EK 3.2.2B The storing, processing, and curating of large data sets is challenging.
EK 3.2.2C Structuring large data sets for analysis can be challenging.
EK 3.2.2D Maintaining privacy of large data sets containing personal information can be challenging.
EK 3.2.2E Scalability of systems is an important consideration when data sets are large.
EK 3.2.2F The size or scale of a system that stores data affects how that data set is used.
EK 3.2.2G The effective use of large data sets requires computational solutions.
EK 3.2.2H Analytical techniques to store, manage, transmit, and process data sets change as the size of data sets scale.
[CR2c]EU 3.3 There are trade-offs when representing information as digital data.
LO 3.3.1 Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. [P4][CR1d]
EK 3.3.1A Digital data representations involve trade-offs related to storage, security, and privacy concerns.
Digital data representation
Secure transmission concerns
Lossy data compression
Lossless data compression
Data file formats
Privacy concerns
Security concerns
Storage media
EK 3.3.1B Security concerns engender trade-offs in storing and transmitting information.
EK 3.3.1C There are trade-offs in using lossy and lossless compression techniques for storing and transmitting data.
EK 3.3.1D Lossless data compression reduces the number of bits stored or transmitted but allows complete reconstruction of the original data.
EK 3.3.1E Lossy data compression can signi cantly reduce the number of bits stored or transmitted at the cost of being able to reconstruct only an approximation of the original data.
EK 3.3.1F Security and privacy concerns arise with data containing personal information.
EK 3.3.1G Data is stored in many formats depending on its characteristics (e.g., size and intended use).
EK 3.3.1HThe choice of storage media affects both the methods and costs of manipulating the data it contains.
EK 3.3.1I Reading data and updating data have different storage requirements.
×
Essential Questions: ▶ How are algorithms implemented and executed on computers and computational devices?
▶ Why are some languages better than others when used to implement algorithms?
▶ What kinds of problems are easy, what kinds are dif cult, and what kinds are impossible to solve algorithmically?
▶ How are algorithms evaluated?
Code.org resources: CSP Unit 3 - Intro to Programming
Crash Course Video Series: Early Programming: Crash Course Computer Science #10
The First Programming Languages: Crash Course Computer Science #11
Programming Basics: Statements & Functions: Crash Course Computer Science #12
Intro to Algorithms: Crash Course Computer Science #13
Data Structures: Crash Course Computer Science #14
Alan Turing: Crash Course Computer Science #15
Software Engineering: Crash Course Computer Science #16
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words: Sample Activities:
Sources
[CR2d]EU 4.1 Algorithms are precise sequences
of instructions for processes that can
be executed by
a computer and
are implemented using programming languages.
LO 4.1.1 Develop an algorithm for implementation in a program. [P2][CR1b]
EK 4.1.1A Sequencing, selection, and iteration are building blocks of algorithms.
Algorithm
Sequencing
Boolean condition
Selection
Iteration (repetition)
Students will be introduced to text programming language using Python. Emphasis will be placed on how the code components “look in block vs. look in text.” Students will use variables and levels of abstraction to create a basic calculator program using Python. Students will teach each other's calculators for correctness. Submission of artifacts will be meant to mimic PT components as a way to scaffold skill set development. LO 2.2.2[P3], LO 5.3.1[P3], LO 5.4.1[P4], LO 5.5.1[P1] [CR1c] [CR1d] [CR1a] [CR2b] [CR2e]
EK 4.1.1B Sequencing is the application of each step of an algorithm in the order in which the statements are given.
EK 4.1.1C Selection uses a Boolean condition to determine which of two parts of an algorithm is used.
EK 4.1.1D Iteration is the repetition of part of an algorithm until a condition is met or for a speci ed number of times.
EK 4.1.1E Algorithms can be combined to make new algorithms.
EK 4.1.1F Using existing correct algorithms as building blocks for constructing a new algorithm helps ensure the new algorithm is correct.
EK 4.1.1G Knowledge of standard algorithms can help in constructing new algorithms.
EK 4.1.1H Different algorithms can be developed to solve the same problem.
EK 4.1.1I Developing a new algorithm to solve a problem can yield insight into the problem.
LO 4.1.2 Express an algorithm in a language. [P5][CR1e]
EK 4.1.2A Languages for algorithms include natural language, pseudocode, and visual and textual programming languages.
Pseudo code
Natural language
Run Time
Reasonable time
EK 4.1.2B Natural language and pseudocode describe algorithms so that humans can understand them.
EK 4.1.2C Algorithms described in programming languages can be executed on a computer.
EK 4.1.2D Different languages are better suited for expressing different algorithms.
EK 4.1.2E Some programming languages are designed for specific domains and are better for expressing algorithms in those domains.
EK 4.1.2F The language used to express an algorithm can affect characteristics such as clarity or readability but not whether an algorithmic solution exists.
EK 4.1.2G Every algorithm can be constructed using only sequencing, selection, and iteration.
EK 4.1.2H Nearly all programming languages are equivalent in terms of being able to express any algorithm.
EK 4.1.2I Clarity and readability are important considerations when expressing an algorithm in a language.
[CR2d]EU 4.2 Algorithms can solve many, but not all, computational problems.
LO 4.2.1 Explain the difference between algorithms that run in a reasonable time and those that do not run in a reasonable time. [P1][CR1a] EXCLUSION STATEMENT (for LO 4.2.1): Any discussion of nondeterministic polynomial (NP) is beyond the scope of this course and the AP Exam.
EK 4.2.1A Many problems can be solved in a reasonable time.
EK 4.2.1B Reasonable time means that the number of steps the algorithm takes is less than or equal to a polynomial function (constant, linear, square, cube, etc.) of the size of the input. EXCLUSION STATEMENT (for EK 4.2.1B): Using nonpolynomial functions to describe relationships between the number of steps required by an algorithm and the input size is beyond the scope of this course and the AP Exam.
EK 4.2.1C Some problems cannot be solved in a reasonable time, even for small input sizes.
EK 4.2.1D Some problems can be solved but not in a reasonable time. In these cases, heuristic approaches may be helpful to nd solutions in reasonable time.
LO 4.2.2 Explain the difference between solvable and unsolvable problems in computer science. [P1][CR1a] EXCLUSION STATEMENT (for LO 4.2.2): Determining whether a given problem is solvable or unsolvable is beyond the scope of this course and the AP Exam.
EK 4.2.2A A heuristic is a technique that may allow us to nd an approximate solution when typical methods fail to nd an exact solution.
Solvable problem
Unsolvable problem
Heuristic solution(s)
EK 4.2.2B Heuristics may be helpful for nding an approximate solution more quickly when exact methods are too slow. EXCLUSION STATEMENT (for EK 4.2.2B): Speci c heuristic solutions are beyond the scope of this course and the AP Exam.
EK 4.2.2C Some optimization problems such as “ nd the best” or “ nd the smallest” cannot be solved in a reasonable time but approximations to the optimal solution can.
EK 4.2.2D Some problems cannot be solved using any algorithm.
LO 4.2.3 Explain the existence of undecidable problems in computer science. [P1][CR1a]
EK 4.2.3A An undecidable problem may have instances that have an algorithmic solution, but there is no algorithmic solution that solves all instances of the problem.
Undecidable problem
Decidable problem
EK 4.2.3B A decidable problem is one in which an algorithm can be constructed to answer “yes” or “no” for all inputs (e.g., “Is the number even?”).
EK 4.2.3C An undecidable problem is one in which no algorithm can be constructed that always leads to a correct yes-or-no answer. EXCLUSION STATEMENT (for EK 4.2.3C): Determining whether a given problem is undecidable is beyond the scope of this course and the AP Exam.
LO 4.2.4 Evaluate algorithms analytically and empirically for ef ciency, correctness, and clarity. [P4][CR1d]
EK 4.2.4A Determining an algorithm’s ef ciency is done by reasoning formally or mathematically about the algorithm.
Empirical analysis
Linear search
EK 4.2.4B Empirical analysis of an algorithm is done by implementing the algorithm and running it on different inputs.
EK 4.2.4C The correctness of an algorithm is determined by reasoning formally or mathematically about the algorithm, not by testing an implementation of the algorithm. EXCLUSION STATEMENT (for EK 4.2.4C): Formally proving program correctness is beyond the scope of this course and the AP Exam.
EK 4.2.4D Different correct algorithms for the same problem can have different ef ciencies.
EK 4.2.4E Sometimes, more ef cient algorithms are more complex.
EK 4.2.4F Finding an ef cient algorithm for a problem can help solve larger instances of the problem.
EK 4.2.4G Ef ciency includes both execution time and memory usage. EXCLUSION STATEMENT (for EK 4.2.4G): Formal analysis of algorithms (Big-O) and formal reasoning using mathematical formulas are beyond the scope of this course and the AP Exam.
EK 4.2.4H Linear search can be used when searching for an item in any list; binary search can be used only when the list is sorted.
×
Essential Questions: ▶ How are programs developed to help people, organizations, or society solve problems?
▶ How are programs used for creative expression, to satisfy personal curiosity, or to create new knowledge?
▶ How do computer programs implement algorithms?
▶ How does abstraction make the development of computer programs possible?
▶ How do people develop and test computer programs?
▶ Which mathematical and logical concepts are fundamental to computer programming?
Crash Course Video Series: Integrated Circuits & Moore’s Law: Crash Course Computer Science #17
Operating Systems: Crash Course Computer Science #18
Memory & Storage: Crash Course Computer Science #19
Files & File Systems: Crash Course Computer Science #20
Compression: Crash Course Computer Science #21
Keyboards & Command Line Interfaces: Crash Course Computer Science #22
Screens & 2D Graphics: Crash Course Computer Science #23
The Cold War and Consumerism: Crash Course Computer Science #24
The Personal Computer Revolution: Crash Course Computer Science #25
Graphical User Interfaces: Crash Course Computer Science #26
3D Graphics: Crash Course Computer Science #27
Code.org resources: CSP Unit 5 - Building Apps
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words: Sample Activities:
Sources
[CR2e]EU 5.1 Programs can be developed for creative expression, to satisfy personal curiosity, to create new knowledge, or to solve problems (to help people, organizations,
or society).
LO 5.1.1 Develop a program for creative expression, to satisfy personal curiosity, or to create new knowledge. [P2][CR1b]
EK 5.1.1A Programs are developed and used in a variety of ways by a wide range of people depending on the goals of the programmer.
Program(ming)
Students will work in collaborative teams to create either a checker set of chips or chess set. Depending on the size of the team, students will be assigned a number of game pieces to design based on the group’s chosen theme. Various computer-aided design (CAD) programs may be used for this group project based on student selection. Creativity, exploration of innovation, and collaboration are the main areas of focus of this four-week secondary class activity. Student projects will be displayed. LO 1.1.1[P2], LO 1.2.4[P6] [CR1b] [CR1f] [CR2a]
EK 5.1.1B Programs developed for creative expression, to satisfy personal curiosity, or to create new knowledge may have visual, audible, or tactile inputs and outputs.
EK 5.1.1C Programs developed for creative expression, to satisfy personal curiosity, or to create new knowledge may be developed with different standards or methods than programs developed for widespread distribution.
EK 5.1.1D Additional desired outcomes may be realized independently of the original purpose of the program.
EK 5.1.1E A computer program or the results of running a program may be rapidly shared with a large number of users and can have widespread impact on individuals, organizations, and society.
EK 5.1.1F Advances in computing have generated and increased creativity in other elds.
LO 5.1.2 Develop a correct program to solve problems. [P2][CR1b]
EK 5.1.2A An iterative process of program development helps in developing a correct program to solve problems.
Iterative process
Incremental development
Program documentation
Program development
EK 5.1.2B Developing correct program components and then combining them helps in creating correct programs.
EK 5.1.2C Incrementally adding tested program segments to correct working programs helps create large correct programs.
EK 5.1.2D Program documentation helps programmers develop and maintain correct programs to ef ciently solve problems.
EK 5.1.2E Documentation about program components, such as code segments and procedures, helps in developing and maintaining programs.
EK 5.1.2F Documentation helps in developing and maintaining programs when working individually or in collaborative programming environments.
EK 5.1.2G Program development includes identifying programmer and user concerns that affect the solution to problems.
EK 5.1.2H Consultation and communication with program users is an important aspect of program development to solve problems.
EK 5.1.2I A programmer’s knowledge and skill affects how a program is developed and how it is used to solve a problem.
EK 5.1.2J A programmer designs, implements, tests, debugs, and maintains programs when solving problems.
LO 5.1.3 Collaborate to develop a program. [P6][CR1f]
EK 5.1.3A Collaboration can decrease the size and complexity of tasks required of individual programmers.
Collaborative development
Students will use starter code to edit and develop a hangman game in Python. LO 5.2.1[P3], LO 5.4.1[P4], LO 5.5.1[P1] [CR1c] [CR1d] [CR1a] [CR2e]
EK 5.1.3B Collaboration facilitates multiple perspectives in developing ideas for solving problems by programming.
EK 5.1.3C Collaboration in the iterative development of a program requires different skills than developing a program alone.
EK 5.1.3D Collaboration can make it easier to nd and correct errors when developing programs.
EK 5.1.3E Collaboration facilitates developing program components independently.
EK 5.1.3F Effective communication between participants is required for successful collaboration when developing programs.
[CR2e]EU 5.2 People write programs to execute algorithms.
LO 5.2.1 Explain how programs implement algorithms. [P3][CR1c]
EK 5.2.1A Algorithms are implemented using program instructions that are processed during program execution.
Algorithm(s)
Sequential execution
Program instructions
Program execution
Process(es)
Executable programs
Java programming will be introduced to students in this three-week unit. Students will complete several guided activities with the teacher and then will work in pair programming collaborations and individually to complete projects. Graphic projects will be used to introduce students to the use of methods and parameters in Java and to allow students to create works of art. Pair programming will be used during teacher-guided instruction and class activities. LO 2.2.2 [P3], LO 5.1.1[P2], LO 5.1.3[P6] [CR1c] [CR1b] [CR1f] [CR2b] [CR2e]
EK 5.2.1B Program instructions are executed sequentially.
EK 5.2.1C Program instructions may involve variables that are initialized and updated, read, and written.
EK 5.2.1D An understanding of instruction processing and program execution is useful for programming.
EK 5.2.1E Program execution automates processes.
EK 5.2.1F Processes use memory, a central processing unit (CPU), and input and output.
EK 5.2.1G A process may execute by itself or with other processes.
EK 5.2.1H A process may execute on one or several CPUs.
EK 5.2.1I Executable programs increase the scale of problems that can be addressed.
EK 5.2.1J Simple algorithms can solve a large set of problems when automated.
EK 5.2.1k Improvements in algorithms, hardware, and software increase the kinds of problems and the size of problems solvable by programming.
[CR2e]EU 5.3 Programming is facilitated by appropriate abstractions.
LO 5.3.1 Use abstraction to manage complexity in programs. [P3][CR1c]
EK 5.3.1A Procedures are reusable programming abstractions.
Procedure(s)
Parameter(s)
Data abstraction
Strings; string operations
Substring
Concatenation
Integers
Floating-point numberssee also 2.1.2C
Lists; List operations
Application Program Interfaces (APIs); Libraries
Working with starter code and an API, students will create a complicated program and evaluate the algorithms, abstractions, and design of the program for efficiency and reliability. LO 5.2.1[P3], LO 5.3.1[P3] [CR1c] [CR2e]
EK 5.3.1B A procedure is a named grouping of programming
instructions.
EK 5.3.1C Procedures reduce the complexity of writing and maintaining programs.
EK 5.3.1D Procedures have names and may have parameters and return values.
EK 5.3.1E Parameterization can generalize a speci c solution.
EK 5.3.1F Parameters generalize a solution by allowing a procedure to be used instead of duplicated code.
EK 5.3.1G Parameters provide different values as input to procedures when they are called in a program.
EK 5.3.1H Data abstraction provides a means of separating behavior from implementation.
EK 5.3.1I Strings and string operations, including concatenation and some form of substring, are common in many programs.
EK 5.3.1J Integers and oating-point numbers are used in programs without requiring understanding of how they are implemented.
EK 5.3.1k Lists and list operations, such as add, remove, and search, are common in many programs.
EK 5.3.1l Using lists and procedures as abstractions in programming can result in programs that are easier to develop and maintain.
EK 5.3.1m Application program interfaces (APIs) and libraries simplify complex programming tasks.
EK 5.3.1N Documentation for an API/library is an important aspect of programming.
EK 5.3.1O APIs connect software components, allowing them to communicate.
[CR2e]EU 5.4 Programs are developed, maintained, and used by people for different purposes.
LO 5.4.1 Evaluate the correctness of a program. [P4
EK 5.4.1A Program style can affect the determination of program correctness.
Self-identifying variables
Debugging
Program justification
Functionality
Students will work in two-to-three person teams to create a Mock Create Performance Task. A teachergiven topic will be used to allow students to work through the performance task components while experiencing the expectation of the project. Emphasis will be placed on student understanding of the PT prompts and deliverable components. Student groups may select the programming language for their project from Snap!, AI, Java, or Python. Each student small team will be dividing the written components and deliverables to produce one document for each team. Additionally each team will create a one-minute video demonstrating execution of their finished project. Using the College Board rubric, the class will work collaboratively to “score” the written documents while each team completes a self-assessment on their video artifact. This will give students experience with the rubric language and scoring.
EK 5.4.1B Duplicated code can make it harder to reason about a program.
EK 5.4.1C Meaningful names for variables and procedures help people better understand programs.
EK 5.4.1D Longer code segments are harder to reason about than shorter code segments in a program.
EK 5.4.1E Locating and correcting errors in a program is called debugging the program.
EK 5.4.1F Knowledge of what a program is supposed to do is required in order to nd most program errors.
EK 5.4.1G Examples of intended behavior on speci c inputs help people understand what a program is supposed to do.
EK 5.4.1H Visual displays (or different modalities) of program state can help in nding errors.
EK 5.4.1I Programmers justify and explain a program’s correctness.
EK 5.4.1J Justi cation can include a written explanation about how a program meets its speci cations.
EK 5.4.1k Correctness of a program depends on correctness of program components, including code segments and procedures.
EK 5.4.1l An explanation of a program helps people understand the functionality and purpose of it.
EK 5.4.1m The functionality of a program is often described by how a user interacts with it.
EK 5.4.1N The functionality of a program is best described at a high level by what the program does, not at the lower level of how the program statements work to accomplish this.
[CR2e]EU 5.5 Programming uses mathematical and logical concepts.
LO 5.5.1 Employ appropriate mathematical and logical concepts in programming. [P1][CR1a]
EK 5.5.1A Numbers and numerical concepts are fundamental to programming.
Integers
Real numbers (floating-point)
Arithmetic operators
Logical concepts
Boolean algebra
Syntax
EK 5.5.1B Integers may be constrained in the maximum and minimum values that can be represented in a program because of storage limitations. EXCLUSION STATEMENT (for EK 5.5.1B): Speci c range limitations of all programming languages are beyond the scope of this course and the AP Exam.
EK 5.5.1C Real numbers are approximated by oating-point representations that do not necessarily have in nite precision. EXCLUSION STATEMENT (for EK 5.5.1C): Speci c sets of values that cannot be exactly represented by oating-point numbers are beyond the scope of this course and the AP Exam.
EK 5.5.1D Mathematical expressions using arithmetic operators are part of most programming languages.
EK 5.5.1E Logical concepts and Boolean algebra are fundamental to programming.
EK 5.5.1F Compound expressions using and, or, and not are part of most programming languages.
EK 5.5.1G Intuitive and formal reasoning about program components using Boolean concepts helps in developing correct programs.
EK 5.5.1H Computational methods may use lists and collections to solve problems.
EK 5.5.1I Lists and other collections can be treated as abstract data types (ADTs) in developing programs.
EK 5.5.1J Basic operations on collections include adding elements, removing elements, iterating over all elements, and determining whether an element is in a collection.
×
Essential Questions: ▶ What is the Internet? How is it built? How does it function?
▶ What aspects of the Internet’s design and development have helped it scale and flourish?
▶ How is cybersecurity impacting the ever-increasing number of Internet users?
Crash Course Video Series: Computer Networks: Crash Course Computer Science #28
The Internet: Crash Course Computer Science #29
The World Wide Web: Crash Course Computer Science #30
Cybersecurity: Crash Course Computer Science #31
Code.org resources: CSP Unit 1 - The Internet
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words: Sample Activities:
Sources
[CR2f]EU 6.1 The Internet is a network of autonomous systems.
LO 6.1.1 Explain the abstractions in the Internet and how the Internet functions. [P3][CR1c] EXCLUSION STATEMENT (for LO 6.1.1): Speci c devices used to implement the abstractions in the Internet are beyond the scope of this course and the AP Exam.
EK 6.1.1A The Internet connects devices and networks all over the world.
The Internet
End-to-end architecture
Devices
Network(s)
Internet Protocol (IP)
Domain Name Systemsee also 6.3.1B
IP address(es)
IPv6
HTTP/HTTPS
SMTP
IETF
Encrypted messages will be created by each student in Caesar cipher format and then decrypted by other students. In addition, examples from World War II and the Enigma machine provide a rich crosscurricular lesson in ethics, innovation, and algorithms. Finally, the Alice and Bob video examples can be used to discuss and analyze public key encryption. LO 6.3.1[P1] [CR1a] [CR2f]
EK 6.1.1B An end-to-end architecture facilitates connecting new devices and networks on the Internet.
EK 6.1.1C Devices and networks that make up the Internet are connected and communicate using addresses and protocols.
EK 6.1.1D The Internet and the systems built on it facilitate collaboration.
EK 6.1.1E Connecting new devices to the Internet is enabled by assignment of an Internet protocol (IP) address.
EK 6.1.1F The Internet is built on evolving standards, including those for addresses and names. EXCLUSION STATEMENT (for EK 6.1.1F): Speci c details of any particular standard for addresses are beyond the scope of this course and the AP Exam.
EK 6.1.1G The domain name system (DNS) translates domain names to IP addresses.
EK 6.1.1H The number of devices that could use an IP address has grown so fast that a new protocol (IPv6) has been established to handle routing of many more devices.
EK 6.1.1I Standards such as hypertext transfer protocol (HTTP), IP, and simple mail transfer protocol (SMTP) are developed and overseen by the Internet EngineeringTask Force (IETF).
[CR2f]EU 6.2 Characteristics of the Internet in uence the systems built on it.
LO 6.2.1 Explain characteristics of the Internet and the systems built on it. [P5][CR1e]
EK 6.2.1A The Internet and the systems built on it are hierarchical and redundant.
Hierarchy
Redundancy
Doman name syntax
Routing
Students will be introduced to block programming in Snap! and will be guided to create a Maze project during the first four days of the unit. Students may work individually or paired with a classmate. After the four-day teacher introduction and overview of the interface, students can work collaboratively or independently to create additional levels to the game. Students may wish to develop a theme for their maze game such as kitten finding yarn or princess finding frog to kiss. The ideas of student decisionmaking and time management will be introduced along with use of prior concepts of flowcharting, use of efficient algorithms, and abstraction development in programming. Students will present their final projects on Days 9-10 of the project. LO 2.2.1[P2], LO 2.2.2[P3], LO 4.2.4[P4], LO 5.1.1[P2], LO 5.1.2[P2], LO 5.3.1[P3] [CR1b] [CR1c] [CR1d] [CR2b] [CR2d] [CR2e]
EK 6.2.1B The domain name syntax is hierarchical.
EK 6.2.1C IP addresses are hierarchical.
EK 6.2.1D Routing on the Internet is fault tolerant and redundant.
LO 6.2.2 Explain how the characteristics of the Internet in uence the systems built on it. [P4][CR1d]
EK 6.2.2A Hierarchy and redundancy help systems scale.
Scalability
Redundancy of routing
Protocols (include TCP/IP)
Interfaces
Open Standards
Packet switching
TCP/IP
Browser(s)
Web server
SSL/TLS
Bandwidth
Latency
Students will be challenged to consider the Internet impact; what does access allow one to do or know when compared to those without access or without skills to utilize the Internet effectively? Students consider socioeconomic impact and global impact of access to technology. LO 7.4.1[P1] [CR1a] [CR2g]
EK 6.2.2B The redundancy of routing (i.e., more than one way to route data) between two points on the Internet increases the reliability of the Internet and helps it scale to more devices and more people.
EK 6.2.2C Hierarchy in the DNS helps that system scale.
EK 6.2.2D Interfaces and protocols enable widespread use of the Internet.
EK 6.2.2E Open standards fuel the growth of the Internet.
EK 6.2.2F The Internet is a packet-switched system through which digital data is sent by breaking the data into blocks of bits called packets, which contain both the data being transmitted and control information for routing the data. EXCLUSION STATEMENT (for EK 6.2.2F): Speci c details of any particular packet-switching system are beyond the scope of this course and the AP Exam.
EK 6.2.2G Standards for packets and routing include transmission control protocol/Internet protocol (TCP/IP). EXCLUSION STATEMENT (for EK 6.2.2G): Speci c technical details of howTCP/IP works are beyond the scope of this course and the AP Exam.
EK 6.2.2H Standards for sharing information and communicating between browsers and servers on the Web include HTTP and secure sockets layer/transport layer security (SSL/TLS). EXCLUSION STATEMENT (for EK 6.2.2H): Understanding the technical aspects of how SSL/TLS works is beyond the scope of this course and the AP Exam.
EK 6.2.2I The size and speed of systems affect their use.
EK 6.2.2J The bandwidth of a system is a measure of bit rate — the amount of data (measured in bits) that can be sent in a xed amount of time.
EK 6.2.2k The latency of a system is the time elapsed between the transmission and the receipt of a request.
[CR2f]EU 6.3 Cybersecurity is an important concern for the Internet and the systems built on it.
LO 6.3.1 Identify existing cybersecurity concerns and potential options to address these issues with the Internet and the systems built on it. [P1][CR1a]
EK 6.3.1A The trust model of the Internet involves trade-offs.
Trust model
Cybersecurity
Cyber warfare; cybercrime
DDoS
Phishing
Viruses
Antivirus software
Firewall
Cryptography
Open standards
Symmetric encryption
Public key encryption
Certificate authorities
Digital certificate
EK 6.3.1B The DNS was not designed to be completely secure.
EK 6.3.1C Implementing cybersecurity has software, hardware, and human components.
EK 6.3.1D Cyberwarfare and cybercrime have widespread and potentially devastating effects.
EK 6.3.1E Distributed denial-of-service attacks (DDoS) compromise a target by ooding it with requests from multiple systems.
EK 6.3.1F Phishing, viruses, and other attacks have human and software components.
EK 6.3.1G Antivirus software and rewalls can help prevent unauthorized access to private data.
EK 6.3.1H Cryptography is essential to many models of cybersecurity.
EK 6.3.1I Cryptography has a mathematical foundation. EXCLUSION STATEMENT (for EK 6.3.1I): Speci c mathematical functions used in cryptography are beyond the scope of this course and the AP Exam.
EK 6.3.1J Open standards help ensure cryptography is secure.
EK 6.3.1k Symmetric encryption is a method of encryption involving one key for encryption and decryption. EXCLUSION STATEMENT (for EK 6.3.1k):The methods used in encryption are beyond the scope of this course and the AP Exam.
EK 6.3.1l Public key encryption, which is not symmetric, is an encryption method that is widely used because of the functionality it provides. EXCLUSION STATEMENT (for EK 6.3.1l):The mathematical methods used in public key cryptography are beyond the scope of this course and the AP Exam.
EK 6.3.1m Certi cate authorities (CAs) issue digital certi cates that validate the ownership of encrypted keys used in secured communications and are based on a trust model. EXCLUSION STATEMENT (for EK 6.3.1m):The technical details of the process CAs follow are beyond the scope of this course and the AP Exam.
×
Essential Questions: ▶ How does computing enhance human communication, interaction, and cognition?
▶ How does computing enable innovation?
▶ What are some potential bene cial and harmful effects of computing?
▶ How do economic, social, and cultural contexts in uence innovation and the use of computing?
Crash Course Video Series: Hackers & Cyber Attacks: Crash Course Computer Science #32
Cryptography: Crash Course Computer Science #33
Machine Learning & Artificial Intelligence: Crash Course Computer Science #34
Computer Vision: Crash Course Computer Science #35
Natural Language Processing: Crash Course Computer Science #36
Robots: Crash Course Computer Science #37
Psychology of Computing: Crash Course Computer Science #38
Educational Technology: Crash Course Computer Science #39
The Singularity, Skynet, and the Future of Computing: Crash Course Computer Science #40
Code.org resources: CSP Unit 4 - Big Data and Privacy
Enduring Understandings (Students will understand that ...)
OBJECTIVES
Learning Objectives (Students will be able to ...) Essential Knowledge
(Students will know that ...)
General and Domain Specific Vocabulary Words: Sample Activities:
Sources
[CR2g]EU 7.1 Computing enhances communication, interaction, and cognition.
LO 7.1.1 Explain how computing innovations affect communication, interaction, and cognition. [P4][CR1d]
EK 7.1.1A Email, SMS, and chat have fostered new ways to communicate and collaborate.
Computing innovation(s) – see CED p.74
Email; SMS; chat
Video conferencing; video chat
Social media see also 7.1.1H
Cloud computing
Dissemination see also 7.1.1H
Public data
GPS (global positioning system)
Sensor networks
“Smart” technologies
Internet vs. WWW
e-commerce
Productivity
Students will work as a whole-class group and two-to-three person teams to create a Mock Explore PT. A teacher-given topic will be used to allow students to work through the performance task components while experiencing the expectation of the project. Emphasis will be placed on student understanding of the PT prompts and deliverable components. Each student small team will be assigned one prompt to write after whole class research and discussion. Additionally each team will create a one-minute video about the class topic. The teacher will assemble the written submissions into one final PT document. Using the College Board rubric, the class will work collaboratively to “score” the written document while each team completes a self-assessment on their video artifact. This will give students experience with the rubric language and scoring.
EK 7.1.1B Video conferencing and video chat have fostered new ways to communicate and collaborate.
EK 7.1.1C Social media continues to evolve and fosters new ways to communicate.
EXCLUSION STATEMENT (for EK 7.1.1C): Detailed knowledge of any social media site is beyond the scope of this course and the AP Exam.
EK 7.1.1D Cloud computing fosters new ways to communicate and collaborate.
EK 7.1.1E Widespread access to information facilitates the identi cation of problems, development of solutions, and dissemination of results.
EK 7.1.1F Public data provides widespread access and enables solutions to identi ed problems.
EK 7.1.1G Search trends are predictors.
EK 7.1.1H Social media, such as blogs andTwitter, have enhanced dissemination.
EK 7.1.1I Global Positioning System (GPS) and related technologies have changed how humans travel, navigate, and nd information related to geolocation.
EK 7.1.1J Sensor networks facilitate new ways of interacting with the environment and with physical systems.
EK 7.1.1k Smart grids, smart buildings, and smart transportation are changing and facilitating human capabilities.
EK 7.1.1l Computing contributes to many assistive technologies that enhance human capabilities.
EK 7.1.1m The Internet and the Web have enhanced methods of and opportunities for communication and collaboration.
EK 7.1.1N The Internet and the Web have changed many areas, including e-commerce, health care, access to information and entertainment, and online learning.
EK 7.1.1O The Internet and the Web have impacted productivity, positively and negatively, in many areas.
LO 7.1.2 Explain how people participate in a problem- solving process that scales. [P4][CR1d]
EK 7.1.2A Distributed solutions must scale to solve some problems.
Distributed solutions
“Citizen science”
Human computation
Digital collaboration
Crowdsourcing
Mobile computing
Students will complete the Explore Performance Task as outlined. Two class weeks or 10 days of 48 minutes each (total of 480 minutes or 8 hours) will be provided in accordance with the College Board project parameters. During these class lab days, the teacher will ensure that students are progressing toward PT completion and that there is understanding of the PT components using the Mock PT experience as a foundation for comparison. [CR3]
EK 7.1.2B Science has been impacted by using scale and “citizen science” to solve scienti c problems using home computers in scienti c research.
EK 7.1.2C Human computation harnesses contributions from many humans to solve problems related to digital data and the Web.
EK 7.1.2D Human capabilities are enhanced by digitally enabled collaboration.
EK 7.1.2E Some online services use the contributions of many people to bene t both individuals and society.
EK 7.1.2F Crowdsourcing offers new models for collaboration, such as connecting people with jobs and businesses with funding.
EK 7.1.2G The move from desktop computers to a proliferation of always-on mobile computers is leading to new applications.
[CR2g]EU 7.2 Computing enables innovation in nearly every eld.
LO 7.2.1 Explain how computing has impacted innovations in other elds. [P1][CR1a]
EK 7.2.1A Machine learning and data mining have enabled innovation in medicine, business, and science.
Machine learning
Data mining
Scientific computing
Open Access
Creative Commons (CC) license
Moore’s Law
EK 7.2.1B Scienti c computing has enabled innovation in science and business.
EK 7.2.1C Computing enables innovation by providing the ability to access and share information.
EK 7.2.1D Open access and Creative Commons have enabled broad access to digital information.
EK 7.2.1E Open and curated scienti c databases have bene ted scienti c researchers.
EK 7.2.1F Moore’s law has encouraged industries that use computers to effectively plan future research and development based on anticipated increases in computing power.
EK 7.2.1G Advances in computing as an enabling technology have generated and increased the creativity in other elds.
[CR2g]EU 7.3 Computing has global effects — both bene cial and harmful — on people and society.
LO 7.3.1 Analyze the bene cial and harmful effects of computing. [P4][CR1d]
EK 7.3.1A Innovations enabled by computing raise legal and ethical concerns.
Commercial access
Download
Streaming
Peer-to-peer networks
Authenticated access
Anonymous access
Censorship (of digital info)
Open source software
Licensing of software
Aggregation of information
Anonymity
Proxy servers
Exploitation
Curation of information
Targeted advertising
Intellectual property
Copyright
Digital Millennium Copyright Act
EK 7.3.1B Commercial access to music and movie downloads and streaming raises legal and ethical concerns.
EK 7.3.1C Access to digital content via peer-to-peer networks raises legal and ethical concerns.
EK 7.3.1D Both authenticated and anonymous access to digital information raise legal and ethical concerns.
EK 7.3.1E Commercial and governmental censorship of digital information raise legal and ethical concerns.
EK 7.3.1F Open source and licensing of software and content raise legal and ethical concerns.
EK 7.3.1G Privacy and security concerns arise in the development and use of computational systems and artifacts.
EK 7.3.1H Aggregation of information, such as geolocation, cookies, and browsing history, raises privacy and security concerns.
EK 7.3.1I Anonymity in online interactions can be enabled through the use of online anonymity software and proxy servers.
EK 7.3.1J Technology enables the collection, use, and exploitation of information about, by, and for individuals, groups, and institutions.
EK 7.3.1k People can have instant access to vast amounts of information online; accessing this information can enable the collection of both individual and aggregate data that can be used and collected.
EK 7.3.1l Commercial and governmental curation of information may be exploited if privacy and other protections are ignored.
EK 7.3.1m Targeted advertising is used to help individuals, but it can be misused at both individual and aggregate levels.
EK 7.3.1N Widespread access to digitized information raises questions about intellectual property.
EK 7.3.1O Creation of digital audio, video, and textual content by combining existing content has been impacted by copyright concerns.
EK 7.3.1P The Digital Millennium Copyright Act (DMCA) has been a bene t and a challenge in making copyrighted digital material widely available.
EK 7.3.1Q Open source and free software have practical, business, and ethical impacts on widespread access to programs, libraries, and code.
[CR2g]EU 7.4 Computing innovations in uence and are in uenced by the economic, social, and cultural contexts in which they are designed and used.
LO 7.4.1 Explain the connections between computing and real-world contexts, including economic, social, and cultural contexts. [P1][CR1a]
EK 7.4.1A The innovation and impact of social media and online access varies in different countries and in different socioeconomic groups.
Innovation(s)
Wireless
“Digital divide”
Socioeconomic
Infrastructure
Commercial
EK 7.4.1B Mobile, wireless, and networked computing have an impact on innovation throughout the world.
EK 7.4.1C The global distribution of computing resources raises issues of equity, access, and power.
EK 7.4.1D Groups and individuals are affected by the “digital divide” — differing access to computing and the Internet based on socioeconomic or geographic characteristics.
EK 7.4.1E Networks and infrastructure are supported by both commercial and governmental initiatives.
[CR2g]EU 7.5 An investigative process is aided by effective organization and selection of resources. Appropriate technologies and tools facilitate the accessing of information and enable the ability to evaluate the credibility of sources.
LO 7.5.1 Access, manage, and attribute information using effective strategies. [P1][CR1a]
EK 7.5.1A Online databases and libraries catalog and house secondary and some primary sources.
Online databases/libraries
Primary source
Secondary source
Plagiarism
EK 7.5.1B Advance search tools, Boolean logic, and key words can re ne the search focus and/or limit search results based on a variety of factors (e.g., data, peer-review status, type of publication).
EK 7.5.1C Plagiarism is a serious offense that occurs when a person presents another’s ideas or words as his or her own. Plagiarism may be avoided by accurately acknowledging sources.
LO 7.5.2 Evaluate online and print sources for appropriateness and credibility. [P5][CR1e]
EK 7.5.2A Determining the credibility of a source requires considering and evaluating the reputation and credentials of the author(s), publisher(s), site owner(s), and/or sponsor(s).
Credibility of source(s)
EK 7.5.2B Information from a source is considered relevant when it supports an appropriate claim or the purpose of the investigation.
×
Teacher Mr. Erik Wiessmann
Subject Computer Science
Email edwiessmann@philasd.org
Cell Phone 215.900.8742
School Phone 215-351-7618
Google Classroom Code
Course Description This course is designed for all interested students in the field of Computer Science. Students will learn how to use common tools, and how to be responsible with technology. Students will then explore what it is like to create new tools as developers.
Assessments Students will be assessed on a variety of Projects, Written Assessments, and Formal Assessments. Students are required to participate during class time.
School District Grading Policy 10% Homework
20% Classwork (Point Reduction for: Unexcused Absence, Unexcused Late, Disrupt Class, Not Logging Out, Off Task)
30% Performance Based Learning
40% Tests
Period Length (minutes) 55
Materials List Pen or Pencil for Writing
Notebook for Journal Entries, Notes, and Constructive Response Questions
Class Rules: Students must obey the school wide rules of the Academy @ Palumbo at all times.
Tutoring After School Tuesday & Thursday 3:00-6:00 by appointment
Classroom Website: phillycomputerscience.com
×
The Concept Outline
Applied Computer Technology SDP is a Google School District. Google much like Apple, Microsoft and a host of other companies product lines allow their users to get much of their computer tasks done. Most packages include web browsers, word processors, spreadsheets, presentation tools, email, cloud storage, and many other tools. We will explore the google tools most High School students use today as well as look into alternative options and explore into other less known tools.
Internet Safety & Ethics Do you know how to keep yourself safe online? Are you paranoid, or putting too much information about yourself for the world to see? How aware are you that what you do online does matter?
HTML/CSS The past decade has connected people online to a once fictional level of communication. The World Wide Web is a front end to many of our online lives. Learning how to design and put together websites is a skill that all computer users may benifit from. HTML allows developers to write websites and CSS allows developers write beautiful websites.
Javascript Once a developer can represent themselves online with HTML and CSS they may then start writing websites that DO things. Javascript is a light yet powerful tool that may introduce students to the world of programming.
GIMP The Free & Open Source Image Editor
This is the official website of the GNU Image Manipulation Program (GIMP).
GIMP is a cross-platform image editor available for GNU/Linux, OS X, Windows and more operating systems. It is free software, you can change its source code and distribute your changes.
Whether you are a graphic designer, photographer, illustrator, or scientist, GIMP provides you with sophisticated tools to get your job done. You can further enhance your productivity with GIMP thanks to many customization options and 3rd party plugins.
Unity Unity is so much more than the world’s best real-time development platform – it’s also a robust ecosystem designed to enable your success. Join our dynamic community of creators so you can tap into what you need to achieve your vision.
Arduino Arduino is an open-source hardware and software company, project and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its products are licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL),[1] permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially in preassembled form or as do-it-yourself (DIY) kits. (wikipedia)
×
Computational Thinking Practices
Connecting Computing
[CR1a]
Students learn to draw connections between different computing concepts.
Creating computational artifacts
[CR1b]
Students engage in the creative aspects of computing by designing and developing interesting computational artifacts as well as by applying computing techniques to creatively solve problems.
Abstracting
[CR1c]
Students use abstraction to develop models and simulations of natural and artificial phenomena, use them to make predictions about the world, and analyze their efficacy and validity.
Analyzing problems and artifacts
[CR1d]
Students design and produce solutions, models, and artifacts, and they evaluate and analyze their own computational work as well as the computational work others have produced.
Communicating
[CR1e]
Students describe computation and the impact of technology and computation, explain and justify the design and appropriateness of their computational choices, and analyze and describe both computational artifacts and the results or behaviors of those artifacts.
Collaborating
[CR1f]
Students collaborate on a number of activities, including investigation of questions using data sets and in the production of computational artifacts.
×
TOPIC Lesson Assignment
Blockchain https://www.youtube.com/watch?v=hYip_Vuv8J0 Write a one page summary of what blockchiain is. How did the narrator connect with each audience. What level was most helpful for you?
IP Address https://www.youtube.com/watch?v=7_-qWlvQQtY Find two other sources describing ip addresses and reference theses in your paper. Write a one page summary about how private your data is online based on what you have learned by researching ip addresses.
Binary Math https://www.youtube.com/watch?v=XKu_SEDAykw&t=1043s Write a one page summary on the question that the engineer for google had to answer. Explain the problem and the stages of development the interview went over. Why is communication important?
×

Propositional Logic

http://intrologic.stanford.edu/public/index.php

Introduction

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Introduction
We use Logic in just about everything we do. We use the language of Logic to state observations, to define concepts, and to formalize theories. We use logical reasoning to derive conclusions from these bits of information. We use logical proofs to convince others of our conclusions.
Learning Objectives (Students will be able to ...)
Introduction Sorority World Logical Sentences Logical Entailment Logical Proofs Formalization Automation Reading Guide
use the language of Logic to state observations, to define concepts, and to formalize theories. decode logic problems make sentences true from a table make logical conclusions prove conclusions from logical sentences write sentences in the languae of logic process the complexities of logic through machines preview the course
General and Domain Specific Vocabulary Words: Contrapositive, Converse, Inverse Logical Entailment     Abduction, Analogy, Deduction, Induction   Propositional Logic Herbrand Logic, Relational Logic

Propositional Logic

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Propositional Logic
Propositional Logic is the logic of propositions. Symbols in the language represent "conditions" in the world, and complex sentences in the language express interrelationships among these conditions. The primary operators are Boolean connectives, such as and, or, and not.
Learning Objectives (Students will be able to ...)
Introduction Syntax Semantics Evaluation Satisfaction Natural Language Digital Circuits
  write simple and complex logic questions write abstract truth statements evaluate truth statements in the formal language of logic write sentences from truth tables encoding of various English sentences as formal sentences in Propositional Logic. write logical sentences with computer gates.
General and Domain Specific Vocabulary Words: Proposition, Propositional Logic Implication, Biconditional, Conjunction, Implication, Disjunction, Implication, Proposition Constant, Negation, Operator Precedence, Proposition Constant, Propositional Language, Propositional Sentence, Propositional Vocabulary, Propositional Sentence, Negation Implication, Biconditional, Conjunction, Implication, Disjunction, Implication, Negation, Negation, Truth Assignment   Proof, Truth Table    

Propositional Analysis

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Propositional Analysis
Satisfaction is a relationship between specific sentences and specific truth assignments. In Logic, we are usually more interested in properties and relationships of sentences that hold across all truth assignments.
Learning Objectives (Students will be able to ...)
Introduction Logical Properties Logical Equivalence Logical Entailment Logical Consistency Properties and Relationships
  write logical statements following specific rules read sentences and decide if they are equivilant define if a sentence φ logically entails a sentence ψ write a sentence φ that is consistent with a sentence ψ if and only if there is a truth assignment that satisfies both φ and ψ. review statements from the chapter
General and Domain Specific Vocabulary Words:   Validity, Contingency, Falsifiability, Satisfaction, Unsatisfiability Logical Entailment, Logical Equivalence, Satisfaction Satisfaction Logical Consistency Consistency Theorem, Deduction Theorem, Equivalence Theorem, Unsatisfiability Theorem

Propositional Proofs

Propositional Proofs
Checking logical entailment with truth tables has the merit of being conceptually simple. However, it is not always the most practical method. The number of truth assignments of a language grows exponentially with the number of logical constants. When the number of logical constants in a propositional language is large, it may be impossible to process its truth table.
Introduction Linear Reasoning Hypothetical Reasoning Fitch Reasoning Tips Soundness and Completeness
  write out correct rules of inference read and write Structured proofs be able to write proofs using the ten rules of inference be able to write proofs using the ten rules of inference be able to write proofs using the ten rules of inference
  Rule of Inference, Instance, Linear Proof, Rule of Inference, Proof, Rule of Inference, Satisfiability Assumption, Proof, Structured Proof And Elimination, And Introduction, Biconditional Elimination, Biconditional Introduction, Fitch System, Implication Elimination, Implication Introduction, Negation Elimination, Negation Introduction, Or Elimination, Or Introduction   Completeness, Provability, Soundness

Propositional Resolution

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Propositional Resolution
Propositional Resolution is a powerful rule of inference for Propositional Logic. Using Propositional Resolution (without axiom schemata or other rules of inference), it is possible to build a theorem prover that is sound and complete for all of Propositional Logic. What's more, the search space using Propositional Resolution is much smaller than for standard Propositional Logic.
Learning Objectives (Students will be able to ...)
Introduction Clausal Form Resolution Principle Resolution Reasoning
  write statements in their proper forms derive more complecated proofs resolve certain logical thoughts
General and Domain Specific Vocabulary Words:   Schema   Reiteration
×

Relational Logic

http://intrologic.stanford.edu/public/index.php

Relational Logic

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Relational Logic
Relational Logic expands upon Propositional Logic by providing a means for explicitly talking about individual objects and their interrelationships (not just monolithic conditions). In order to do so, we expand our language to include object constants and relation constants, variables and quantifiers.
Learning Objectives (Students will be able to ...)
Introduction Syntax Semantics Evaluation Satisfaction Sorority World Blocks World Modular Arithmetic Logical Properties Logical Entailment Relational Logic and Propositional Logic
  state all of the components of a logical sentence follow the rules when using relational logic evaluate logical structures create and read relational logic truth tables write relational sentences as truth tables, english sentences, logical statements write relational sentences as truth tables, english sentences, logical statements define finite sets of statements recognize valid and invalid statements valididate logical worlds as true or false write relational statemetns as propostiional statements
General and Domain Specific Vocabulary Words: Relational Logic                    

Relational Analysis

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Relational Analysis
In Relational Logic, it is possible to analyze the properties of sentences in much the same way as in Propositional Logic. Given a sentence, we can determine its validity, satisfiability, and so forth by looking at possible truth assignments. And we can confirm logical entailment or logical equivalence of sentences by comparing the truth assignments that satisfy them and those that don't.
Learning Objectives (Students will be able to ...)
Introduction Truth Tables Semantic Trees Boolean Models Non-Boolean Models
  Build a relational logic truth table build several visual elements for a logical world build several visual elements for a logical world build several visual elements for a logical world
General and Domain Specific Vocabulary Words:          

Relational Proofs

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Relational Proofs
As with Propositional Logic, we can demonstrate logical entailment in Relational Logic by writing proofs. As with Propositional Logic, it is possible to show that a set of Relational Logic premises logically entails a Relational Logic conclusion if and only if there is a finite proof of the conclusion from the premises. Moreover, it is possible to find such proofs in a finite time.
Learning Objectives (Students will be able to ...)
Introduction Rules for Universal Quantifiers Rules for Existential Quantifiers Domain Closure Example
  reason from general statements to specific ones write a Skolem term write a proof with Domain Closure write complete relational proofs
General and Domain Specific Vocabulary Words:          
×

Herbrand Logic

http://intrologic.stanford.edu/public/index.php

Herbrand Logic

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Herbrand Logic
  In this lesson, we explore an alternative to Relational Logic, called Herbrand Logic, in which we can name infinitely many objects with a finite vocabulary. The trick is to expand our language to include not just object constants but also complex terms that can be built from object constants in infinitely many ways. By constructing terms in this way, we can get infinitely many names for objects; and, because our vocabulary is still finite, we can finitely axiomatize some things in a way that would not be possible with infinitely many object constants.
Learning Objectives (Students will be able to ...) Introduction Syntax and Semantics Evaluation and Satisfaction Peano Arithmetic Linked Lists Pseudo English Metalevel Logic Undecidability
Essential Knowledge
(Students will know who to ...)
  write a logic statement with the new tools: function constants and functional expressions Using symbolic reasoning proof statements as valid use Peano arithmetic in logic statements traverse and manipulate linked lists write full statements in pseudo english following all rules of the language formalize logic with logic recognize that we can not prove everything with Herbrand logic
General and Domain Specific Vocabulary Words: Herbrand Logic              

Herbrand Proofs

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Herbrand Proofs
  In this lesson, we talk about the non-compactness of Herbrand Logic and the loss of completeness in our proof procedure. In the next lesson, we look at an extension to Fitch, called Induction, that allows us to prove more results in Herbrand Logic.
Learning Objectives (Students will be able to ...) Introduction Non-Compactness and Incompleteness
Essential Knowledge
(Students will know who to ...)
   
General and Domain Specific Vocabulary Words:    

Induction

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Induction
  Herbrand Logic takes us one step further by providing a means for describing worlds with infinitely many objects. The resulting logic is much more powerful than Propositional Logic and Relational Logic. Unfortunately, as we shall see, many of the nice computational properties of the first two logics are lost as a result.
Learning Objectives (Students will be able to ...) Introduction Domain Closure Linear Induction Tree Induction Structural Induction Multidimensional Induction Embedded Induction
Essential Knowledge
(Students will know who to ...)
  solve finite logic problems solve logic proofs using linear induction solve logic proofs using tree induction solve logic proofs using structural induction solve logic proofs using Multidimensional induction solve logic proofs using Embedded Induction
General and Domain Specific Vocabulary Words:              

Resolution

Enduring Understandings (Students will understand that ...)
OBJECTIVES
Resolution
  The Resolution Principle is a rule of inference for Relational Logic analogous to the Propositional Resolution Principle for Propositional Logic. Using the Resolution Principle alone (without axiom schemata or other rules of inference), it is possible to build a reasoning program that is sound and complete for all of Relational Logic. The search space using the Resolution Principle is smaller than the search space for generating Herbrand proofs.
Learning Objectives (Students will be able to ...) Introduction Clausal Form Unification Resolution Principle Resolution Reasoning Unsatisfiability Logical Entailment Answer Extraction Strategies
Essential Knowledge
(Students will know who to ...)
  Write proofs with a few additional rules to deal with the presence of variables and quantifiers. Solve logic proofs by unifying statements Solve logic proofs by unifying statements Use Relational Resolution to derive the clause proove that a statement is unsatisfialbe     use defined strategies to help solve complex logic proofs
General and Domain Specific Vocabulary Words: