Skip to main content
Subgoals
Contents
Search Book
close
Search Results:
No results.
Prev
Up
Next
Scratch ActiveCode
Profile
Course Home
Assignments
Practice
Peer Instruction (Instructor)
Peer Instruction (Student)
Change Course
Instructor's Page
Progress Page
Edit Profile
Change Password
Log Out
1
Expression Statements
1.1
Worked Example: Declaration and Initialization
1.1.1
1.1.2
SG1: Determine resultant data type of expression
1.1.3
SG2: Update variable for pre-increment or pre-decrement operators based on side effect
1.1.4
SG3: Evaluate arithmetic expression according to operator precedence
1.1.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.1.6
SG5: Update variable for post-increment or post-decrement operators based on side effect
1.2
Expressions-WE1-P1
1.2.1
1.2.1
Exercises
1.3
Expressions-WE1-P2
1.3.1
1.3.1
Exercises
1.4
Worked Example: Basic Knowledge
1.4.1
1.4.2
SG1 : Determine resultant data type of expression
1.4.3
SG2: Update variable for pre-increment or pre-decrement operators (side effect)
1.4.4
SG3: Evaluate arithmetic expression according to operator precedence
1.4.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.4.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.4.7
Questions to check understanding
1.5
Expressions-WE2-P1
1.5.1
1.5.1
Exercises
1.6
Expressions-WE2-P2
1.6.1
1.6.1
Exercises
1.7
Worked Example: Basic Operation Precedence
1.7.1
1.7.2
SG1 : Determine resultant data type of expression
1.7.3
SG2: Update variable for pre-increment or pre-decrement operators (side effect)
1.7.4
SG3: Evaluate arithmetic expression according to operator precedence
1.7.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.7.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.7.7
Questions to check understanding
1.8
Expressions-WE3-P1
1.8.1
1.8.1
Exercises
1.9
Expressions-WE3-P2
1.9.1
1.9.1
Exercises
1.10
Worked Example: Operation Precedence
1.10.1
1.10.2
SG1 : Determine resultant data type of expression
1.10.3
SG2: Update variable for pre-increment or pre-decrement operators (side effect)
1.10.4
SG3: Evaluate arithmetic expression according to operator precedence
1.10.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.10.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.10.7
Questions to check understanding
1.11
Expressions-WE4-P1
1.11.1
1.11.1
Exercises
1.12
Expressions-WE4-P2
1.12.1
1.12.1
Exercises
1.13
Assessment: Operation Precedence
1.13
Exercises
1.14
Worked Example: Compound Operators
1.14.1
1.14.2
SG1 : Determine resultant data type of expression
1.14.3
SG2: Update variable for pre-increment or pre-decrement operators (side effect)
1.14.4
SG3: Evaluate arithmetic expression according to operator precedence
1.14.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.14.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.14.7
Questions to check understanding
1.15
Expressions-WE5-P1
1.15.1
1.15.1
Exercises
1.16
Expressions-WE5-P2
1.16.1
1.16.1
Exercises
1.17
Worked Example: Prefix Operators
1.17.1
1.17.2
SG1 : Determine resultant data type of expression
1.17.3
SG2: Update variables for any pre-increment or pre-decrement operators (side effects)
1.17.4
SG3: Evaluate arithmetic expression according to operator precedence
1.17.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.17.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.17.7
Questions to check and extend understanding
1.18
Expressions-WE6-P1
1.18.1
1.18.1
Exercises
1.19
Worked Example: Prefix and Postfix Operators
1.19.1
1.19.2
SG1 : Determine resultant data type of expression
1.19.3
SG2: Update variables for any pre-increment or pre-decrement operators (side effects)
1.19.4
SG3: Evaluate arithmetic expression according to operator precedence
1.19.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.19.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.19.7
Questions to check and extend understanding
1.20
Expressions-WE7-P1
1.20.1
1.20.1
Exercises
1.21
Expressions-WE7-P2
1.21.1
1.21.1
Exercises
1.22
Assessment: Pre/Post Operators
1.22
Exercises
1.23
Worked Example: Assigning Booleans
1.23.1
1.23.2
SG1 : Determine resultant data type of expression
1.23.3
SG2: Update variables for any pre-increment or pre-decrement operators (side effects)
1.23.4
SG3: Evaluate arithmetic expression according to operator precedence
1.23.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.23.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.24
Expressions-WE8-P1
1.24.1
1.24.1
Exercises
1.25
Assessment: Boolean Relational Operators
1.25
Exercises
1.26
Worked Example: Boolean Relations
1.26.1
1.26.2
SG1 : Determine resultant data type of expression
1.26.3
SG2: Update variables for any pre-increment or pre-decrement operators (side effects)
1.26.4
SG3: Evaluate arithmetic expression according to operator precedence
1.26.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.26.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.27
Expressions-WE9-P1
1.27.1
1.27.1
Exercises
1.28
Assessment: Boolean Logical Operators
1.28
Exercises
1.29
Worked Example: Swap
1.29.1
1.30
Expressions-WE10-P1
1.30.1
1.30.1
Exercises
1.31
Assessment: Swap
1.31
Exercises
1.32
Worked Example: Method Calls
1.32.1
1.32.2
SG1 : Determine resultant data type of expression
1.32.3
SG2: Update variables for any pre-increment or pre-decrement operators (side effects)
1.32.4
SG3: Evaluate arithmetic expression according to operator precedence
1.32.5
SG4: If an assignment statement (=), is Left Hand Side (LHS) a variable? Check data type of value against data type of variable.
1.32.6
SG5: Update variable for post-increment or post-decrement operators (side effect)
1.33
Expressions-WE11-P1
1.33.1
1.33.1
Exercises
1.34
Expressions-WE11-P2
1.34.1
1.34.1
Exercises
2
Write Expression Statements
2.1
Writing Expression Statements
3
Object Usage
3.1
Worked Example: Create Instance of Scanner
3.1.1
3.1.2
SG1: Declare variable of appropriate class datatype.
3.1.3
SG2: Assign to variable: keyword new, followed by class name, followed by ().
3.1.4
SG3: Determine whether parameter(s) are appropriate (API)
3.2
ObjUse-WE1-P1
3.2.1
3.2.1
Exercises
3.3
Worked Example: Create Instance of Random
3.3.1
3.3.2
SG1: Declare variable of appropriate class datatype.
3.3.3
SG2: Assign to variable: keyword new, followed by class name, followed by ().
3.3.4
SG3: Determine whether parameter(s) are appropriate (API)
3.4
ObjUse-WE2-P1
3.4.1
3.4.1
Exercises
3.5
Worked Example: Create Instance of Widget
3.5.1
3.5.2
Custom Classes
3.5.3
SG1: Declare variable of appropriate class datatype.
3.5.4
SG2: Assign to variable: keyword new, followed by class name, followed by ().
3.5.5
SG3: Determine whether parameter(s) are appropriate (API)
3.6
ObjUse-WE3-P1
3.6.1
3.6.1
Exercises
3.7
Assessment: Construct A Scanner
3.7
Exercises
3.8
Worked Example: Call a method of Scanner
3.8.1
3.8.2
Problem Statement
3.8.3
SG1: Classify method as static method or instance method
3.8.4
SG2: Write (instance / class) dot method name and ( )
3.8.5
SG3: Determine whether parameter(s) are appropriate
3.8.6
SG4: Determine what the method will return (if anything: data type, void, print, change state of object) and where it will be stored (nowhere, somewhere)
3.8.7
SG5: Evaluate right hand side (RHS) of assignment (if there is one). Value is dependent on method’s purpose
3.9
ObjUse-WE4-P1
3.9.1
3.9.1
Exercises
3.10
Worked Example: Call a method of Random
3.10.1
3.10.2
Problem Statement
3.10.3
SG1: Classify method as static method or instance method
3.10.4
SG2: Write (instance / class) dot method name and ( )
3.10.5
SG3: Determine whether parameter(s) are appropriate
3.10.6
SG4: Determine what the method will return (if anything: data type, void, print, change state of object) and where it will be stored (nowhere, somewhere)
3.10.7
SG5: Evaluate right hand side (RHS) of assignment (if there is one). Value is dependent on method’s purpose
3.11
ObjUse-WE5-P1
3.11.1
3.11.1
Exercises
3.12
Worked Example: Call a method of Math
3.12.1
3.12.2
Problem Statement 1
3.12.3
SG1: Classify method as static method or instance method
3.12.4
SG2: Write (instance / class) dot method name and ( )
3.12.5
SG3: Determine whether parameter(s) are appropriate
3.12.6
SG4: Determine what the method will return (if anything: data type, void, print, change state of object) and where it will be stored (nowhere, somewhere)
3.12.7
SG5: Evaluate right hand side (RHS) of assignment (if there is one). Value is dependent on method’s purpose
3.12.8
Problem Statement 2
3.12.9
SG1: Classify method as static method or instance method
3.12.10
SG2: Write (instance / class) dot method name and ( )
3.12.11
SG3: Determine whether parameter(s) are appropriate
3.12.12
SG4: Determine what the method will return (if anything: data type, void, print, change state of object) and where it will be stored (nowhere, somewhere)
3.12.13
SG5: Evaluate right hand side (RHS) of assignment (if there is one). Value is dependent on method’s purpose
3.13
ObjUse-WE6-P1
3.13.1
3.13.1
Exercises
3.14
Assessment: Call a Method of Random
3.14
Exercises
4
Selection
4.1
Worked Example: If Statements
4.1.1
4.1.2
SG1: Diagram which statements go together.
4.1.3
SG2: For if statement, determine whether true or false
4.1.4
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.2
Selection-WE1-P1
4.2.1
4.2.1
Exercises
4.3
Worked Example: If-Else Statements
4.3.1
4.3.2
SG1: Diagram which statements go together.
4.3.3
SG2: For if statement, determine whether true or false
4.3.4
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.4
Selection-WE2-P1
4.4.1
4.4.1
Exercises
4.5
Worked Example: Sequential If Statements
4.5.1
4.5.2
SG1: Diagram which statements go together.
4.5.3
SG2: For if statement, determine whether true or false
4.5.4
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.5.5
SG2: For if statement, determine whether true or false
4.5.6
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.6
Selection-WE3-P1
4.6.1
4.6.1
Exercises
4.7
Worked Example: Sequential If-Else Statements
4.7.1
4.7.2
SG1: Diagram which statements go together.
4.7.3
SG2: For if statement, determine whether true or false
4.7.4
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.7.5
SG2: For if statement, determine whether true or false
4.7.6
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.8
Selection-WE4-P1
4.8.1
4.8.1
Exercises
4.9
Assessment: Sequential If-Statements
4.9
Exercises
4.10
Worked Example: Nested If Statements
4.10.1
4.10.2
SG1: Diagram which statements go together.
4.10.3
SG2: For if statement, determine whether true or false
4.10.4
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.10.5
SG2: For if statement, determine whether true or false
4.10.6
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.10.7
SG2: For if statement, determine whether true or false
4.10.8
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.11
Selection-WE5-P1
4.11.1
4.11.1
Exercises
4.12
Worked Example: Nested If-Else Statements
4.12.1
4.12.2
SG1: Diagram which statements go together.
4.12.3
SG2: For if statement, determine whether true or false
4.12.4
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.12.5
SG2: For if statement, determine whether true or false
4.12.6
SG3: If true, follow true branch. If false, follow else branch (OR do nothing if there is no else branch).
4.12.7
Practice Pages
4.13
Selection-WE6-P1
4.13.1
4.13.1
Exercises
5
Write Selection Statements
5.1
Review: Write Relational Expressions
5.2
WriteSelection-WE1-P1
5.2.1
Write Relational Expressions
5.2.2
5.2.2
Exercises
5.3
Assessment: Relational Expressions
5.3.1
Write Relational Expressions
5.3.2
Exercises
5.4
Worked Example: Write Selection Statements
5.4.1
5.4.2
SG1: Define how many mutually exclusive paths are needed
5.4.3
SG2: Order from most restrictive/selective group to least restrictive
5.4.4
SG3: Write if statement with Boolean expression
5.4.5
SG4: Follow with true bracket including action
5.4.6
SG5 : Follow with else bracket
5.4.7
SG6: Repeat until all groups and actions are accounted for
5.4.8
Equivalent solution using the other ordering of the range/case groups.
5.5
WriteSelection-WE2-P1
5.5.1
5.5.1
Exercises
5.6
Worked Example: Write Switch Statements
5.6.1
5.6.2
SG1: Determine variable / expression for mutually exclusive ranges
5.6.3
SG2: Write switch statement based on variable / expression
5.6.4
SG3: Each range is a ‘case’
5.6.5
SG4: Include break statements and default case if needed
5.6.6
SG1: Define how many mutually exclusive paths are needed
5.6.7
SG2: Order from most restrictive/selective group to least restrictive
5.6.8
SG3: Write if statement with Boolean expression
5.6.9
SG4: Follow with true bracket including action
5.6.10
SG5: Follow with else bracket
5.6.11
SG6: Repeat until all groups and actions are accounted for
5.6.12
Equivalent Switch Statement:
5.7
WriteSelection-WE3-P1
5.7.1
5.7.1
Exercises
6
Evaluating Loops
6.1
Worked Example: While Loops - Counter
6.1.1
6.1.2
SG1: Diagram which statements go together.
6.1.3
SG2: Define and initialize variables
6.1.4
SG3: Trace the loop
6.2
Loops-WE1-P1
6.2.1
6.2.1
Exercises
6.3
Worked Example: For Loops - Counter
6.3.1
6.3.2
SG1: Diagram which statements go together.
6.3.3
SG2: Define and initialize variables
6.3.4
SG3: Trace the loop
6.4
Loops-WE2-P1
6.4.1
6.4.1
Exercises
6.5
Worked Example: Complex Conditional
6.5.1
6.5.2
SG1: Diagram which statements go together.
6.5.3
SG2: Define and initialize variables
6.5.4
SG3: Trace the loop
6.6
Loops-WE3-P1
6.6.1
6.6.1
Exercises
6.7
Worked Example: While Loops - Sentinel
6.7.1
6.7.2
SG1: Diagram which statements go together.
6.7.3
SG2: Define and initialize variables
6.7.4
SG3: Trace the loop
6.8
Loops-WE4-P1
6.8.1
6.8.1
Exercises
6.9
Worked Example: For Loops - Sentinel
6.9.1
6.9.2
SG1: Diagram which statements go together.
6.9.3
SG2: Define and initialize variables
6.9.4
SG3: Trace the loop
6.10
Loops-WE5-P1
6.10.1
6.10.1
Exercises
6.11
Assessment: While and For Loops
6.11
Exercises
6.12
Worked Example: Nested Loops
6.12.1
6.12.2
SG1: Diagram which statements go together.
6.12.3
SG2: Define and initialize variables
6.12.4
SG3: Trace the loop
6.12.5
SG1: Diagram which statements go together.
6.12.6
SG2: Define and initialize variables
6.12.7
SG3: Trace the loop
6.13
Loops-WE6-P1
6.13.1
6.13.1
Exercises
6.14
Assessment: Nested Loops
6.14
Exercises
7
Writing Loops
7.1
Worked Example: Writing Loops
7.1.1
7.1.2
SG1: Determine purpose of loop
7.1.3
SG2: Define and initialize variables
7.1.4
SG3: Define termination condition invert to continuation condition
7.1.5
SG4a: Update condition (LCV) to reach termination
7.1.6
SG4: Write loop body
7.1.7
SG1: Determine purpose of loop
7.1.8
SG2: Define and initialize variables
7.1.9
SG3: Define termination condition invert to continuation condition
7.1.10
SG4: Write loop body
7.2
WriteLoops-WE5-P1
7.2.1
7.2.1
Exercises
7.3
Assessment: Writing Loops
7.3
Exercises
8
Writing Methods
8.1
Worked Example: Writing Method Headers
8.1.1
8.1.2
8.1.3
Practice Pages
8.2
Write-Methods-WE1-P1
8.2.1
8.2.1
Exercises
8.3
Write-Methods-WE1-P2
8.3.1
8.3.1
Exercises
8.4
Worked Example: Writing Method Headers 2
8.4.1
8.4.2
Practice Pages
8.5
Write-Methods-WE2-P1
8.5.1
8.5.1
Exercises
8.6
Write-Methods-WE2-P2
8.6.1
8.6.1
Exercises
8.7
Worked Example: Writing Methods
8.7.1
8.7.2
SG1: Define method header based on problem
8.7.3
SG2: Define return statement at the end
8.7.4
SG3: Define method body/logic
8.7.5
Practice Pages
8.8
Write-Methods-WE3-P1
8.8.1
8.8.1
Exercises
8.9
Assessment: Writing Methods
8.9
Exercises
9
Writing Classes
9.1
Worked Example: Writing Classes - Attributes
9.1.1
9.1.2
SG1: Name it
9.1.3
SG2: Differentiate class-level (static) vs. instance/object-level variables
9.1.4
SG3: Differentiate class-level (static) vs. instance/object behaviors/methods
9.1.5
SG4: Define class variables (static) as needed
9.1.6
SG5: Define instance variables (that you want to be interrelated)
9.2
WrClasses-WE1-P1
9.2.1
9.2.1
Exercises
9.3
Worked Example: Writing Classes - Constructors
9.3.1
9.3.2
SG6: Create constructor (behavior) that creates initial state of object
9.3.3
9.4
WrClasses-WE2-P1
9.4.1
9.4.1
Exercises
9.5
WrClasses-WE2-P2
9.5.1
9.5.1
Exercises
9.6
Worked Example: Writing Classes - Getters and Setters
9.6.1
9.6.2
SG7: Create 1 accessor and 1 mutator behaviors per attribute
9.6.3
9.7
WrClasses-WE3-P1
9.7.1
Classes-WE3-P1
9.7.1
Exercises
9.8
Assessment: Writing Classes 1
9.8
Exercises
9.9
Worked Example: Writing Classes - Overrides and Other
9.9.1
9.9.2
SG8: Write toString method
9.9.3
SG9: Write equals method
9.9.4
SG10: Write other methods
9.9.5
9.10
WrClasses-WE4-P1
9.10.1
9.10.1
Exercises
9.11
WrClasses-WE4-P2
9.11.1
9.11.1
Exercises
9.12
Assessment: Writing Classes 2
9.12
Exercises
10
Evaluate Arrays
10.1
Worked Example: Arrays - Instantiate and Alter
10.1.1
10.1.2
SG1: Set up array from 0 to size-1
10.1.3
SG2: Evaluate data type of statements against array
10.1.4
SG3: Trace statements, updating slots as you go
10.1.5
Practice Pages
10.2
Arrays-WE1-P1
10.2.1
10.2.1
Exercises
10.3
Worked Example: Arrays - Traverse
10.3.1
10.3.2
SG1: Set up array from 0 to size-1
10.3.3
SG2: Evaluate data type of statements against array
10.3.4
SG3: Trace statements, updating slots as you go
10.3.5
Practice Pages
10.4
Arrays-WE2-P1
10.4.1
10.4.1
Exercises
10.5
Arrays-WE2-P2
10.5.1
10.5.1
Exercises
10.6
Arrays-WE2-P3
10.6.1
10.6.1
Exercises
10.7
Arrays-WE2-P4
10.7.1
10.7.1
Exercises
10.8
Worked Example: Arrays - Initializer List and Reverse Traverse
10.8.1
10.8.2
SG1: Set up array from 0 to size-1
10.8.3
SG2: Evaluate data type of statements against array
10.8.4
SG3: Trace statements, updating slots as you go
10.8.5
Practice Pages
10.9
Arrays-WE3-P1
10.9.1
10.9.1
Exercises
10.10
Assessment: Arrays 1
10.10
Exercises
10.11
Worked Example: Arrays - Sum
10.11.1
10.11.2
SG1: Set up array from 0 to size-1
10.11.3
SG2: Evaluate data type of statements against array
10.11.4
SG3: Trace statements, updating slots as you go
10.11.5
Practice Pages
10.12
Arrays-WE4-P1
10.12.1
10.12.1
Exercises
10.13
Worked Example: Arrays - Minimum Value
10.13.1
10.13.2
SG1: Set up array from 0 to size-1
10.13.3
SG2: Evaluate data type of statements against array
10.13.4
SG3: Trace statements, updating slots as you go
10.13.5
Practice Pages
10.14
Arrays-WE5-P1
10.14.1
10.14.1
Exercises
10.15
Worked Example: Arrays - Average
10.15.1
10.15.2
SG1: Set up array from 0 to size-1
10.15.3
SG2: Evaluate data type of statements against array
10.15.4
SG3: Trace statements, updating slots as you go
10.15.5
Practice Pages
10.16
Arrays-WE6-P1
10.16.1
10.16.1
Exercises
10.17
Assessment: Arrays 2
10.17
Exercises
10.18
Worked Example: Arrays - Find Value
10.18.1
10.18.2
SG1: Set up array from 0 to size-1
10.18.3
SG2: Evaluate data type of statements against array
10.18.4
SG3: Trace statements, updating slots as you go
10.18.5
Practice Pages
10.19
Arrays-WE7-P1
10.19.1
10.19.1
Exercises
10.20
Worked Example: Arrays - Shift
10.20.1
10.20.2
SG1: Set up array from 0 to size-1
10.20.3
SG2: Evaluate data type of statements against array
10.20.4
SG3: Trace statements, updating slots as you go
10.20.5
Practice Pages
10.21
Arrays-WE8-P1
10.21.1
10.21.1
Exercises
10.22
Worked Example: Arrays - Write a Reversing Algorithm
10.22.1
10.22.2
Solution 1 – copy to new array with reverse traverse
10.22.3
Solution 2 – same array with swaps
10.22.4
Practice Pages
10.23
Arrays-WE9-P1
10.23.1
10.23.1
Exercises
10.24
Assessment: Arrays 3
10.24
Exercises
11
Write Arrays
11.1
Writing Arrays
12
Evaluate 2D Arrays
12.1
Evaluating 2D Arrays
13
Write 2D Arrays
13.1
Writing 2D Arrays
14
Evaluate Array Lists
14.1
Evaluating Array Lists
15
Write Array List
15.1
Writing Array Lists
🔗
Section
5.1
Review: Write Relational Expressions
Past Lessons on Relational Epressions.
🔗
To effectively write selection statements, it is useful to review Boolean expressions.
🔗
Worked Example: Assigning Booleans
Expressions-WE8-P1
Worked Example: Boolean Relations
Expressions-WE9-P1
🔗
Practice Pages.
🔗
WriteSelection-WE1-P1
You have attempted
of
activities on this page.