Data Types
College Board MC Quiz
Score

Corrections
13)
C is incorrect because {17, 37, 21, 42, 18, 69, 48, 28, 39} would be the result if the code segment in the for loop was changed to numbers[k] = numbers[k] + 3.
A is the correct answer because the values of the loop control variable k starts at 1 and is incremented by 3 as long as k is less than numbers.length. As a result, k will have the values 1, 4, 7 and then when it becomes 10, the loop will end. Only the values in numbers at indexes 1, 4, and 7 will be updated to the value of the sum of the element at the index that is one less than k (the element before the one being updated) and 3. So, numbers[1] will be assigned the value of numbers[0] + 3 or 20, numbers[4] will be assigned the value of numbers[3] + 3 or 45, and numbers[7] will be assigned the value of numbers[6] + 3 or 51. All other values will be unchanged.
18)
E is incorrect because this would be the result if the division used was floating point division instead of integer division and the result was cast to an int, as in (int)(404.0 / 10 * 10 + 1).
D is the correct answer because the first operation that is executed is 404 / 10. Since both 404 and 10 are integers, integer division is used resulting in 40. The value 40 is then multiplied by 10, resulting in 400, and finally 1 is added, meaning 401 is printed.
29)
D is incorrect because the value 1 is only returned when num is a single digit number.
A is the correct answer because each recursive call is made with the value num  / 10. The expression num / 10 uses integer division and evaluates to an integer that is num with the right most digit removed. For example, 258 / 10 = 25. Each time the recursive call is made, what is returned is 1 plus the result of the recursive call. For example, what(258) = 1 + what(25) and what(25) = 1 + what(2) and what(2) = 1. Therefore what(258) = 1 + 1 + 1 or 3, which is the number of digits in 258.
Notes
See weekly notes here
Hacks
Early Seed
- Write a sample binary addition 1 + 1 = 10
 - Have Java Code cell on screen at start of lecture
 
See code here
Small Code Excercises
- Write a Jupyter notebook on the primitive data types. Use 
arrayand methods likesubstringandrandomas applicable:int,double,boolean,char - Next, convert each of the examples to corresponding Wrapper classes, using arrays
 
See code here
Key Concepts
Methods
- A method is a block of code which only runs when it's called
- Parameters, or data can be passed into a method
 
 - Methods are used to perform certain actions. Another word for them is a function
 - See more information on methods here
 
Control Structures
- 
Control structure are blocks of code that can change the path of execution. There are 3 kinds of control structures:
- 
Condiditional Branches - used for choosing between 2+ paths (
if/elsestatements) - 
Loops - used it iterate through multiple values/objects and repeatedly run specific code blocks (
for,while, anddo whileloops) - 
Branching Statements - used to break the flow of control in loops (
breakandcontinue) 
 - 
Condiditional Branches - used for choosing between 2+ paths (
 - See more information on control structures here
 
Teacher's Code Examples
DiverseArray Example 
- Methods?
- Yes, 
DiverseArraydoes contain methods. Examples of methods are:arraySum(),rowSums(), andisDiverse(). 
 - Yes, 
 - Control Structures?
- Yes, 
DiverseArraydoes contain control stuctures. There are examples offorloops andifstatements. 
 - Yes, 
 - Fit data types?
- Yes, 
DiverseArrayhas data types ofintandboolean. It also hasint[]andint[][]. 
 - Yes, 
 
Matrix Example 
- Methods?
- Yes, 
Matrixdoes contain methods. Examples of methods are:toString(),reverse(),keypad(), andnumbers(). 
 - Yes, 
 - Control Structures?
- Yes, 
Matrixdoes contain control structures. There are examples offorloops. 
 - Yes, 
 - Fit data types?
- Yes, 
Matrixhas data types ofint. There are alsoint[][]andString. 
 - Yes, 
 
Number Example 
- 
Math.random()is a static method that returns a floating-point that is ≥ 0 and < 1. - See more information on 
Math.random()here 
DoNothingByValue Example 
- Methods?
- Yes, 
DoNothingByValuedoes contain methods. Examples of methods are:changeIt(),changeIt2(), andchangeIt3(). 
 - Yes, 
 - Control Structures?
- Yes, 
DoNothingByValuedoes contain control structures. There are examples offorloops. 
 - Yes, 
 - Fit data types?
- Yes, 
DoNothingByValuehas data types ofint. There are alsoString,ArrayList, andint[]. 
 - Yes, 
 
IntByReference Example 
- Methods?
- Yes, 
IntByReferencedoes contain methods. Examples of methods are:toString(),swapToLowHighOrder(), andswapper(). 
 - Yes, 
 - Control Structures?
- Yes, 
IntByReferencedoes contain control structures. There are examples ofifstatements. 
 - Yes, 
 - Fit data types?
- Yes, 
IntByReferencehas data types ofint. There are alsoString,ArrayList, andint[]. 
 - Yes, 
 
Menu Example 
- Find a way to make 
Menuwork on a Jupyter Notebook.- View code here
 
 - Are instances of 
MenuRowandRunnabledata types and control structures?- 
MenuRow()represents the constructor for the classMenuRow. In the constructor, all varibles in the class are initalized. - 
Runnablerepresents an object. In the methodgetAction(), the return type isRunnable. 
 - 
 - Does 
Driverhave control structures? If so, list all the control Structures.- Yes, 
Driverhas control structures.- 
whileloop - 
try/catchstatements - 
ifstatements 
 - 
 
 - Yes, 
 
College Board FRQ
- Look at 1 unique FRQ per pair/treo on AP Classroom that goes over Methods and Control Structures
 - Provide teacher a Jupyter Notebook, Video, and/or Code that cover key concepts
- Make this better than AP Classroom, specifically trying to get these reviews to cover key parts in under Five minutes
 - This option could use your PBL project and concepts if they were tailored to Teaching.
 
 - Explore Testing requirements in AP Classroom Video
 - Explore AP FRQ that teaches us about Methods and Control Structures FRQ, 18:10
 - Make sure that code runs completely, complete any portion of FRQ that is undone. Complete FRQs in a Jupyter notebook with markdown description and comments is a requirement
 - Integrate Data Types into the discussion as this is import concept when studying early materials
 - Integrate Definition of Methods and Control Structures in comments and definitions.
 
See FRQ instructions here
See code here
Code
Binary Addition
/*
 * adds two binary numbers
 */
public class BinaryAddition
{
    /*
     * tester method
     */
    public static void main(String[] Args)
    {
        String sum;
        String binary1 = "0110";
        String binary2 = "1011";
        // outputs numbers in binary form
        System.out.printf("number #1 in binary: \t\t%s\n", binary1);
        System.out.printf("number #2 in binary: \t\t%s\n\n", binary2);
        // calls addNums method
        sum = addNums(binary1, binary2);
        // outputs the sum in binary form
        System.out.printf("sum in binary: \t\t\t%s", sum);
    }
    /*
     * takes two binary strings, converts them into ints, and
     * adds the two numbers together
     */
    public static String addNums(String binary1, String binary2)
    {
        // Integer.parseInt() --> String to int
        int num1 = Integer.parseInt(binary1, 2);
        int num2 = Integer.parseInt(binary2, 2);
        int sum = num1 + num2;
        // outputs sum in decimal (number) form
        System.out.printf("number #1 in decimal form: \t%d\n", num1);
        System.out.printf("number #2 in decimal form: \t%d\n", num2);
        System.out.printf("\nsum in decimal form: \t\t%d\n", sum);
        // Integer.toBinaryString(sum); --> add numbers and converts the result to the binary String
        return Integer.toBinaryString(sum);
    }
}
BinaryAddition.main(null);
int[] nums = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// prints every elements in array
for(int i = 0; i < nums.length; i+=2)
{
    System.out.printf("%d\n", nums[i]);
}
int x;
int y;
double casting1;
double casting2;
x = 10;
y = 15;
casting1 = (double) y / x;
casting2 = y / x;
System.out.printf("With casting: \t\t%.2f\nWithout casting: \t%.2f", casting1, casting2);
boolean a = true;
boolean b = false;
boolean c = a && b;
boolean d = !(a || b);
System.out.printf("%b\n", c);
System.out.printf("%b", d);
char[] letters = {'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D'};
// prints every element in array
for(int i = 0; i < letters.length; i++)
{
    System.out.printf("%c", letters[i]);
}
String message = "Hello World";
String newMessage = message.substring(6);
// full message: Hello World
System.out.printf("Before substring: \t%s\n", message);
// separates message and just prints World
System.out.printf("After substring: \t%s", newMessage);
int max = 5;
int min = 0;
int range = max - min + 1;
// creates 5 random ints between 0 and 5
for (int i = 0; i < 5; i++) {
    int rand = (int)(Math.random() * range) + min;
    System.out.printf("#%d: %d\n", i, rand);
}
import java.util.ArrayList;
import java.util.Arrays;
public class FrogSimulation
{
    private int goalDistance; // distance in inches, from the starting position to the goal
    private int maxHops; //  max number of hops allowed to reach the goal
    private ArrayList <Integer> hopDistances;
    // constructor
    public FrogSimulation(int dist, int numHops)
    {
        goalDistance = dist;
        maxHops = numHops;
    }
    public void loadHopDistance(ArrayList <Integer> hopDistances)
    {
        this.hopDistances = new ArrayList <Integer> (hopDistances);
    }
    // number of hops from the frog
    private int hopDistance()
    {
        if(!hopDistances.isEmpty())
        {
            int hopDistance = hopDistances.get(0);
            hopDistances.remove(0);
            return hopDistance;
        }
        return 0;
    }
    // runs frog simulation
    public boolean simulate()
    {
        int hops = 0;
        int currentPosition = 0;
        while((currentPosition < goalDistance)
            && ((hops != maxHops)
            && (currentPosition < goalDistance))
            && (currentPosition >= 0))
        {
            hops++;
            
            currentPosition += hopDistance();
        }
        // if the frog is at the position, return true
        if((currentPosition >= goalDistance))
        {
            return true;
        }
        return false; 
    }
    // part b
    public double runSimulations (int num)
    {
        return 0.0;
    }
   // tester method
    public static void main(String[] Args)
    {
        FrogSimulation sim = new FrogSimulation(24, 5);
        // for testing
        ArrayList <Integer> frogJumps1 = new ArrayList <Integer>(Arrays.asList(5, 7, -2, 8, 6));
        ArrayList <Integer> frogJumps2 = new ArrayList <Integer>(Arrays.asList(6, 7, 6, 6));
        ArrayList <Integer> frogJumps3 = new ArrayList <Integer>(Arrays.asList(6, -6, 31));
        ArrayList <Integer> frogJumps4 = new ArrayList <Integer>(Arrays.asList(4, 2, -8));
        ArrayList <Integer> frogJumps5 = new ArrayList <Integer>(Arrays.asList(5, 4, 2, 4, 3));
        sim.loadHopDistance(frogJumps1);
        boolean goalReached = sim.simulate();
        System.out.printf("𓆏 reached goal? %b.\n", goalReached);
    }
}
FrogSimulation.main(null);