The College Board Advanced Placement™ Computer Science-A Summer Institute: Mr. John Meinzen

 

Home | Day 1 | Day 2 | Day 3 | Day 4 | Day 5 | Handouts

Morning Session I : Teaching the Course [Data Structures & Algorithms]

Key Understanding:

  • Data structures and algorithms that manipulate them are essential to understanding computer science.

 

Explore Algorithms as per Course Description

  • Operations on Data Structures [String, ArrayList, array, 2D-array]

    • Traversals (loops, iterators, for:each)

    • Insertions

    • Deletions

  • Searching

    • Sequential (linear)

    • Binary

  • Sorting

    • Selection

    • Insertion

    • Mergesort

  • Other

    • Counters

    • LCM & GCF

    • Swap

    • BubbleSort & QuickSort

Personal perspectives

  • Understand the Course Description's use of terms: apply, assume, complete (program code), consider, describe (behavior), describe (initial conditions), design, determine (code), determine (value or result), explain how, explain why, identify (errors), implement/write, and use (test-cases).

  • Course description states that students "should be able to USE and IMPLEMENT... algorithms"

  • The MergeSort algorithm is a challenge for many students because it requires multiple recursive calls...hence the "USE and IMPLEMENT" rather than "WRITE, TEST, etc."

Participant Activity [Workshop Binder -> Exam Info tab -> page 200 "Task Verbs..."]

  • Analyze the Course Description's use of terms: apply, assume, complete (program code), consider, describe (behavior), describe (initial conditions), design, determine (code), determine (value or result), explain how, explain why, identify (errors), implement/write, and use (test-cases) for:

    • use standard data structures [int, boolean, double, String, Classes, ArrayList, array (1D & 2D)]

  • Provide an example of sorting algorithms and, in particular, Selection Sort

    • use an array of ints

    • describe (behavior) a method to sort from largest to smallest...on an array of ints...on an array of Cards

Morning Session II : Teaching the Course [2D array using Picture Lab]

Key Understanding:

  • Using the Picture Exemplar Lab encourages student exploration of algorithms and data structures.

 

Participant Activity [Workshop Software : Picture Lab from 2014]

  • Student's Guide & Code

  • Teacher's Guide & Code [do NOT give this to your students as it is now under "secure documents"]

  • Explore the software (Guides & Code) provided. If computers are not available, then view the Sample Student Starter Code linked below.

     

    Picture Lab
    Sample Student Starter Code

    • Picture class
    • beach.jpg
    • ...see page 251 for details about setting up "images" folder and leftArrow.gif & rightArrow.gif files. ...see page 255 for Exercises
    • PictureTester class...for testing 2D matrix manipulation, forEach loops ...from page 262
    • Exercises in Activity 5
      1. grayscale: gr=(r+g+b)/3. Use pixelObj.setColor(new Color(gr , gr , gr))
      2. sepia definition is (112, 66, 20), watch for out-of-bounds conditions (255).
        r = gray*112/255
        g = gray*66/255
        b = gray*20/255
    • Add other pictures
    • Use another Picture Lab Activity (or Exercise in Activity 5)
    • Write a class to complete your selected Activity/Exercise

Afternoon Session I : Assessing Student Progress & Understanding [Previous Exams]

Key Understanding:

  • Examining prior years' Exam information helps to prepare students for their AP CSA Exam at the end of the course.

 

Explore Student Performance using prior Exams

Prior years' Exam Information[https://apcentral.collegeboard.org/courses/ap-computer-science-a/exam]

 

Historical Free Response Questions [what students receive on Exam Day]

 

2021 Free Response Analysis

2021

Specification

Notes

Classes and Methods

 

 

FRQ 1: Methods &
Control Structures

Write two methods that call other specified methods.

 

int scoreGuess(String guess) returns a score based on rules that require a call to substring()

 

String findBetterGuess(String g1, String g2) returns the parameter which has the higher score (or first if tied) based on calls to the scoreGuess() method

String.equals() must be used

WordMatch

WordMatch(String word)

int scoreGuess(String guess)

 

String findBetterGuess(String g1, String g2)

 

 

FRQ 2 : Class Design

Write a class, constructor, 2 methods, and two field variable to implement a restaurant seating which combines 2 SingleTables objects into a CombinedTable with appropriate checks for seating size and desireable view specifications.

 

Declare & initialize private field variable.

 

Declare parameters and assign to field variable.

 

check if CombinedTable can seat all from SingleTable

 

calculate desirability

 

Cast int average properly to double.

SingleTable

int getNumSeats()

int getHeight()

doulbe getViewQuality()

setViewQuality(double)

 

CombinedTable

CombinedTable(SingleTable, SingleTable)

boolean canSeat(int)

double getDesirability()

 

 

FRQ 3 : array or
ArrayList

Given an ArrayList of members, add to the list an array of names and graduation year. Also remove any that have graduated and are not in good standing.

 

void addMembers(String[] names, int gradYear) adds new club members to memberList according to rules.

 

ArrayList<MemberInfo> removeMembers(int year) returns a list of students who have graduated and are in good standing. Also removes from the memberList all who have graduated

Correct instantiation : constructor call with parameters.

Removal from ArrayList while iterating.

MemberInfo

MemberInfo(String, int, boolean)

int getGradYear()

boolean inGoodStanding()

 

ClubMembers

addMembers(String[], int)

ArrayList<MemberInfo> removeMembers(int)

 

 

FRQ 4 : 2D array

Given an ArrayResizer class with a on-specified 2D array of ints as well as a method that identifies the number of non-zero rows, write a static method to identify if any row contains only non-zero elements. Write a 2nd static method that returns a copy of the 2D array of ints with rows that contain only non-zero rows.

 

 

static int numNonZeroRows( int[][] array2D) will return the number of rows that have no zeros as elements.

Use of static

Correctly instantiate the size of a 2D array of ints

ArrayResizer

static boolean isNonZeroRow(int[][] array2D, int r)

static int numNonZeroRows(int[][] array2D)

static int[][] resize(int [][] array2D)

2020 Free Response Analysis

2020

Specification

Notes

Classes and Methods

Covid Year testing was all online : considered highly confidential by College BOard numerous test questions aligned to new CED available in AP Classroom Question bank

2019 Free Response Analysis

2019

Specification

Notes

Classes and Methods

APCalendar

 

FRQ 1: Methods &
Control Structures

Write two methods that call other specified methods.

 

numberOfLeapYears() returns the number of leap years between two given years.

 

dayOfWeek() returns the value of the day of the week with Sunday=0,...,Saturday=6

static used

APCalendar

boolean isLeapYear(int y)

int numberOfLeapYears(int y1, int y2)

int firstDayOfYear(int y)

int dayOfYear(int m, int d, int y)

int dayOfWeek(int m, int d, int y)

StepTracker

 

FRQ 2 : Class Design

Write a class, constructor, 3 methods, and a field variable to implement a fitness tracking system.

 

Declare & initialize private field variable.

 

Declare parameters and assign to field variable.

 

Return updated field variable

 

Cast int to double.

StepTracker

StepTracker(int d)

void addDailySteps(int s)

int activeDays()

double averageSteps()

Delimiter

 

FRQ 3 : array or
ArrayList

Given a Delimiters class with two String field variables, write two methods.

 

ArrayList<String> getDelimitersList(String[] t) returns a list of delimiters from an array of tokens in the order they appear.

 

boolean isBalanced(ArrayList<String> d) returns whether or not the opening and closing delimiters are balanced.

Assumes open and close delimiters are distinct Strings.

 

Use of String.equals(String o)

 

Local variable as accumulator for balancing equal number and sequencing of open & close delimters..

 

Recursive solution possible but few were correct.

Delimiters

private String openDel

private String closeDel

public Delimeters(String o, String c)

 

ArrayList<String> getDelimitersList(String[] t)

 

boolean isBalanced(ArrayList<String> d)

LightBoard

 

FRQ 4 : 2D array

Given a LightBoard class with a 2D array of on/off lights, write a constructor and method to initialize and determine if a light is on or off.

 

LightBoard(int numR, int numC) will initialize a 2D array of booleans with a 40% probability of any light being on.

 

boolean evaluateLight(int r, int c) will return whehter a specified light is on (return true) or off.

Use of Math.random() and assignment/cast of double to boolean.

 

Rules include use of modulus operator to determine if column is even or a multple of 3.

 

Use of an accumulator for number of lights on in 2D array.

LightBoard

private boolean[][] lights

LightBoard(int numR, int numC)

boolean evaluateLight(int r, int c)

Free Response Analysis 2018-2006 : originally provided by Ria Galanos and others

Name

String based

Design / Simulation

array

1D or 2D

ArrayList or List

Interacting Classes

Topics and Notes

Classes and Methods

2018              
FrogSimulation   x       Use of conditionals, loops, method calls FrogSimulation, hopDistance, simulate, runSimulations
WordPair x   x x   Write a constructor and method for a class representing a list of pairs of words WordPair, WordPairList, numMatches
StringChecker x x     x Write two constructors and a method. Check string length within given limits and exclude specified substring StringChecker, isValid, CodeWordChecker
ArrayTester     x/x     Extract a column in a 2D array of integers and Test if 2D array represents a specific criteria ("Latin Square") ArrayTester, getColumn, hasAllValues, containsDuplicates, isLatin
2017              
Digits       x   write a constructor that select digits from an int parameter, %, determine if digits are increasing in value Digits constructor, isStrictlyIncreasing
MultiPractice   x       write a MultiPractice class that implements a given interface StudyPractice, MultPractice, getProblem, nextProblem
Phrase x         write a search for a sub-String and replace at the n-th occurrance Phrase, findNthOccurrence, replaceNthOccurrence, findLastOccurrence, toString
Successor     x   x write 2 static methods: search 2D array of ints to create a new 2D array of Positions Position, findPosition, getSuccessorArray

2016

             
RandomStringChooser   x x     selecting character from String and String from an array of Strings RandomStringChooser, RandomLetterChooser , getSingleLetters
LogMessage x     x x search for String, Lists of interacting objects LogMessage, containsWord, SystemLog , removeMessages
Crossword   x x/x     2D array of objects, identify objects by neighboring object properties Square, Crossword, toBeLabeled
StringFormatter x     x   String and character manipulation and formatting StringFormatter, totalLetters, basicGapWidth, format

2015








Diverse Array     x/x     array manipulation, array of arrays arraySum, rowSums, isDiverse
HiddenWord x x       Design a class to process a String HiddenWord, getHint
SparseArray   x   x x Given class definitions for SparseArrayEntry and SparseArray (i.e. List of objects), manipulate the list based on the entry's location and value. SparseArrayEntry, getRow, getCol, getValue, SparseArray, getNumRows, getNumCols, getValueAt, removeColumn
NumberGroup   x   x x Interface design and implementation including NumberGroup, contains, Range, MultiGroup, contains

2014

Case Study







Scrambler




x


String manipulation, ArrayList processing

scrambledWord, scrambleOrRemove

Director

x

x


x

x

Grid World, write complete class, ArrayList processing

Director, act

Seating Chart



x

x

x

2-D array processing, ArrayList processing

Student, SeatingChart, removeAbsentStudents

Trio


x



x

interface, write a complete class, finding min

MenuItem, Trio, getName, getPrice

2013








Song List




x

x

list processing, equals

DownloadInfo, getDownloadInfo, updateDownloads

Token Pass


x

x



array processing, random, consecutive elements, pre/post

TokenPass, constructor, distributeCurrentPlayerTokens

Jumping Critter

x



x

x

GridWorld, write complete class, ArrayList processing

GridWorldUtilities, getEmptyLocations, JumpingCritt

Sky View



x



2-D array processing (doubles), constructor

SkyView, constructor, getAverage

2012








Climber




x


ArrayList <String>, compareTo, and implicatons of design choices

ClimbInfo, addClimb, distinctPeakNames

Retro Bug

x

x




inheritance, maintaining state, overriding, write complete class

act, restore

Horse Barn



x



array processing (Horses), interface

Horse, HorseBarn, findHorseSpace, consolidate

Gray Image



x



2-D array processing (ints)

GrayImage, countWhitePixels, processImage

2011








Sound



x



array processing

limitAmplitude, trimSilenceFromBeginning

AttractiveCritter

x





Grid World, write complete class, don't violate postConditions

AttractiveCritter

Fuel Depot




x

x

interface, ArrayList <FuelTank>, min

FuelDepot, FuelTank, FuelRobot, nextTankToFill, moveToLocation

Route Cipher



x



2-D array processing (String), string manipulation

RouteCipher, fillBlock, encryptMessage

2010








Cookie Order




x

x

ArrayList, accumulator

getTotalBoxes, removeVariety

APLine


x




write a complete class, integer division

APLine, getSlope, isOnLine

Trail



x



array, consecutive elements

isLevelTrailSegment, isDifficult

GridChecker

x



x

x

GridWorld, ArrayList processing

actorWithMostNeighbors, getOccupiedWithinTwo

2009








Number Cube



x



array processing (int), max/min

NumberCube, getNumTosses, getLongestRun

Stockpile Critter

x

x




Grid World, inheritance, write complete class, no part A/B

StockPileCritter

Battery Charger



x



array processing (int), wrap around, modulus

BatteryCharger, getChargingCost, getChargeStartTime

Tile Game




x


ArrayList <NumberTile> processing, interface

TileGame, getIndexForFit, insertTile

2008








Flight List




x

x

ArrayList processing, max/min

Flight,Trip, getDuration, getShortestLayover

String Coder




x


ArrayList <String> processing, string manipulation

StringCoder, decodeString, encodeString

Opossum Critter

x





Grid World, inheritance

OpossumCritter, processActors, selectMoveLocation

Checker Objects


x




write two classes, interface, indexOf, object instantiation

SubstringChecker, AndChecker, yummyChecker

2007








Self Divisor



x



array processing (int), extracting digits, modulus

SelfDivisor, isSelfDivisor, firstNumSelfDivisors

Pounce Fish (MBS)

x





Marine Biology, inheritance

PounceFish, findFish, act

Answer Sheets




x

x

ArrayList <String> processing, max/min

ScoreSheets, getScore, highestScoringStudent

Game Design


x




inheritance, interface, write entire class + 1 method

GameDriver, RandomPlayer, playGame

2006








Daily Schedule




x

x

ArrayList processing, remove

TimeInterval, Appointment, conflictsWith, clearConflicts, addAppt

Taxable Items


x




inheritance, interface, write class

Item, TaxableItem, purchasePrice, Vehicle

Customer List



x



array processing, merge, compare customers

compareCustomer, prefixMerge

Drop Game

x





Marine Biology like, Connect-4 like drop game, 2-D array

dropLocationForColumn, dropMatchesNeighbors

2005








Hotel Reservation



x

x

x

array and ArrayList processing

Hotel, Reservation, requestRoom, cancelAndReassign

Ticket Sales


x




inheritance,write two complete classes

Ticket, AdvanceTicket, StudentAdvanceTicket

Zig Zag Fish (MBS)

x





Marine Biology, inheritance

ZigZagFish, nextLocation, move

Improve Grades



x



array processing (int), average, compare consecutive elements

average, hasImproved, finalAverage

Scoring Performance and Statistics

2021 Test Question Details and Statistics are coming soon...AP CSA Reading is first half of June 2021

 


2020 Test Question Details and Statistics are not provided by the College Board

 


2019 Test Question Details

Question

Mean

Standard

Deviation

Number of

Possible Points

1

6.18 2.98 9

2

4.90 3.53 9

3

5.56 3.54 9

4

4.82 3.3.8 9

 

2019 Overall Exam Statistics

Exam Score

N

% At

5

18583 26.7

4

15275 21.9

3

14660 21.0

2

8.320 11.9

1

12847 18.4

Number of

Students

69685  

3 or Higher / %

44129 67.8

Mean Score

3.18  

Standard Deviation

1.45  

 


2018 Test Question Details

Question

Mean

Standard

Deviation

Number of

Possible Points

1

5.34 3.14 9

2

4.38 3.53 9

3

5.11 3.61 9

4

4.75 3.62 9

 

2018 Overall Exam Statistics

Exam Score

N

% At

5

16105 24.7

4

13802 21.2

3

14222 21.8

2

7738 11.9

1

13266 20.4

Number of

Students

65133  

3 or Higher / %

44129 67.8

Mean Score

3.18  

Standard Deviation

1.45  

 


2017 Test Question Details

Question

Mean

Standard

Deviation

Number of

Possible Points

1

4.10 3.17 9

2

5.86 3.54 9

3

3.84 3.31 9

4

4.75 3.46 9

 

2017 Overall Exam Statistics

Exam Score

N

% At

5

14623 24.2

4

12650 20.9

3

13271 21.9

2

6970 11.5

1

13005 21.5

Number of

Students

60519  

3 or Higher / %

40544  

Mean Score

3.15 67.0

Standard Deviation

1.46  

 


2016 Test Question Details

Question

Mean

Standard

Deviation

Number of

Possible Points

1

3.42 2.97 9

2

2.94 2.73 9

3

2.59 2.97 9

4

3.29 3.06 9

 

2016 Overall Exam Statistics

Exam Score

N

% At

5

12055 20.8

4

11900 20.5

3

13386 23.1

2

7215 12.5

1

13381 23.1

Number of

Students

57937  

3 or Higher / %

37937  

Mean Score

3.04 64.5

Standard Deviation

1.44  

 


2015 Test Question Details

Question

Mean

Standard

Deviation

Number of

Possible Points

1

5.05 3.36 9

2

4.41 3.4 9

3

3.05 3.4 9

4

3.99 3.19 9

 

2015 Overall Exam Statistics

Exam Score

N

% At

5

11963 24.4

4

12061 24.6

3

7470 15.2

2

3529 7.2

1

13971 28.5

Number of

Students

48994  

3 or Higher / %

31494  

Mean Score

3.09 64.3

Standard Deviation

1.56  

 


2014 Test Question Details

Question

Mean

Standard

Deviation

Number of

Possible Points

1

3.57

2.88

9

2

4.35

3.08

9

3

3.57

2.99

9

4

4.14

3.44

9

 

2014 Overall Exam Statistics

Exam Score

N

% At

5

8,367

21.3

4

9,091

23.1

3

6,588

16.8

2

3,016

7.7

1

12,216

31.1

Number of

Students

39,278

-

3 or Higher / %

24,046

61.2

Mean Score

2.96

-

Standard Deviation

1.55

-

Participant Activity - available practice Assessments

Sample Questions, Practice Exam and Released Exams

find on AP Classroom and Resources: Secure Documents for Teachers

Sample Questions, Practice Exam (Effective Fall 2014), and 2015 Released Exam

I. Sample Questions from AP CSA Course Description pages 19-60

  • Multiple Choice (MC) Questions(25) focus on specific topics and "newer-style" questions:

    • 7 (inheritance),

    • 15 (polymorphism),

    • 16 (recursion),

    • 20 (challenge!),

    • 23 (shuffle--see Elevens lab),

    • 24 (arrays of arrays, 2D),

    • 25 (selectionSort) ...be aware that answers are on the same page

    • Question: 11 derived from older Free Response (FR)

  • Free Response Questions

    • Question 1 - writing methods using Lists

    • Question 2 - String manipulation [see Magpie Lab]

    • Question 3 - Design of Class hiearchy ["is-a", "has-a"]

    • Question 4 - 1D and 2D array/ArrayList manipulatio


II. AP CSA Practice Exam Effective Fall 2014 (must complete course Audit to access secure documents)

  • Don't give to students as this works well as a full 3-hour Mock Exam


III. 2015 Released Exam (must complete course Audit ti access secyre documents)

  • FR & MC Questions available from the Course Audit secure website

  • Score Legend

  • Question overview, scoring guidelines, Canonical solutions, commentary and student handwritten responses

  • Works well as practice scoring student's responses via rubrics (aka AP CSA Reading in June which requires at least 3 years' of AP CSA teaching experience)

  • Full Exam is on College Board website available and is downloaded as a "secure" document available after your Syllabus has been approved via Audit process.

Afternoon Session II : Assessing Student Progress & Understanding [Write MC Question]

Key Understanding:

  • Writing sample multiple choice questions focuses on specific skills that students must have for the AP Exam.

 

Participant Activity [Sample Questions]

  • Focus on specific topics and "newer-style" questions :
  • Questions that can easily be modified (i.e. create-your-own-test): 2, 3, 7, 11, 15
  • Write one MC Question that models:
    • Composition (aka "has a")
    • Inheritance (aka "is a")
    • String, Math, or ArrayList API

 

Daily Checkout Form for Day 3