AP Computer Science Challenge Program List


Computer Science I: No more than 3 people per program. Program 1, however, can be split into 3 different programs. A Furman University programming contest problem can be used as a challenge program.

Computer Science II: May do any of the programs marked with *. All programs must contain classes and should contain as many other features unique to Comp Sci II as possible. Two Furman University programming contest problem can be used as a substitute for a challenge program.



This program asks the user for a frequency and an amplitude of a wave. It then points out 8 values of the wave evenly distributed over one cycle for either a square, saw tooth, or triangular wave.

The programmer is required to demonstrate the output by plotting the three wave forms.


All output is to be lined up in a table format.

1) A Wave's period.

2) A Wave's amplitude.

3) A time.

1) 8 values of the wave evenly distributed along 2 cycles of the wave. These are to be hand plotted for one case.

2) Print the value calculated from the inputted time.

2) Coding/Decoding Program

Write two programs. The first will encode a five character word based on an algorithm which uses two integer keys. The encoded word must be made up of lower case letters. 

The second program will take the 5 letter encoded word and and decode it.

Requirements: Each program is to have an input function and an output function. The encoding is to be done with an algorithm.


MISSILE: An aircraft in a dogfight travels at a velocity = V1 and fires a missile at a distance X miles away from an enemy aircraft traveling at a velocity = V2 in the same direction. The missile has a constant thrust force = F1 of 8200 Newtons and a mass = m of 85kg , 50kg of which is fuel. The fuel burns at a constant rate and is consumed in 20 seconds.

EQUATIONS: (all values should be in SI units)
A=(F1 - F2)/m
X= Vo*t + 1/2*A*t*t
F2 = 0.008 V*V
t = time, Vo = starting velocity
F2 = air resistance force
1) Lift on the missile's winglets is equal to the force of gravity.
2) Accuracy: The missile must be within plus or minus 1 meter making contact.
3) F2, m, and A are constant during the iteration interval in your program.
Use iteration and at least 2 functions.

a) V1 and V2 in miles per hour

b) X in miles

 a) The time to catchup in seconds.

b) The final distance between the missile and enemy plane in meters.

c) The total distance the missile traveled in miles.

d) a Warning message if the enemy aircraft is out of range.


AREA OF THE NORMAL DISTRIBUTION: This program will find the area under the normal distribution between two values from negative to positive infinity. These two values are typically referred to as Z scores. The area between them is generally associated with the probability of finding a data point in this region.



N_distribution = K*exp(-X*X/2)

K = 1/(sqrt(2*PI))

a) An upper Z score

b) A lower Z score

 a) The area under the curve between the Z scores.
5)*  Word Processor: Design a word processing program on paper and actually implement two parts of the program as described below. Increase the array size in program 13 from 80 to 800 characters. Add a function to check for capitalization and correct or ignore problems based on user input. Also add a function which will search for and change words based on user input.  See Description.  See Description.
6)  Combination Lock: You overhear a locker room conversation in which someone states that his combination consists of 3 prime numbers in desending order. While you would never consider comiting an act of theft, you can't help but wonder how long it would take to find the combination. List all the possible 3 number combinations in a file, one combination to a line. Output to the screen the maximum number of combinations which would be needed to open the lock and your time estimate to do so.  none


1) Maximum number of combinations.

2) Time estimate to open the lock.



1) All possible combinations.


 Series solver: Write a program which prints any number of elements of the following series requested by the user. Print one element of the series per line.


1, 11, 21, 1211, 111221, 312211, 13112221.....

REQUIREMENTS: Use AP classes where applicable.

 1) the number of elements the user wants to see.  2) The elements of the series, one per line.
8)*  Hexadecimal Calculator: Write a calculator program using a modified bigint which adds and subtracts numbers in hexadecimal.

1) The first number to be addded or subtracted.

2) Whether a number is to be added or subtracted.

3) The second number to be addded or subtracted.

 1) The result.
9)* Bigint Division: Write a function which can be added to bigint which will support division and irregardless of the sizes of the numerator and denominator.    
10)* Furman Mini Palindrome Program: Write the program for mini Palindromes (see Furman contest programs).    
11) The Game of Life: Program the game of life (see handout).
12)* Factoring Program: Write a program which given an integer of indeterminate size will return its factors. Use bigint and your prime number program as needed.