Also I came across this site http://apcentral.collegeboard.
In this there are some team problems to be solved using computer science,
They are meant to be done by pairs of students during a class period. I tell my students to try to finish by the end of the period; if they can't, they may complete the assignment for homework and turn it in at the beginning of the next class. Each pair of students (or trio, if you have an odd number of students) turns in one solution, although it may contain one or more pages written by each team member. Each problem is worth 15 points and each student on the team gets the same score unless there is evidence that one student did all or most of the work. An overarching goal of all the problems is to give students experience in working with at least one other person to solve a substantial problem (that is, "substantial" for them at that point in the course). The "larger" nature of the problems lends itself to team solution. In some cases, the problem sheet suggests a way that the two students can divide the work.
Here is a list of the problems.
Here is a list of the problems.
- Averaging Numbers: Write an algorithm for averaging
a list of numbers. Focus first on the problem of knowing when the user
is finished entering the numbers.
Objective: To make students think about this standard algorithm before they develop a program for it in subsequent classes or labs
Prerequisite knowledge: How to input and output numbers; For and While loops
- Putting Numbers in Ascending Order: Draw a
flowchart for the problem of arranging three numbers in ascending order.
Then trace the flowchart using a given set of test data.
Objective: To have students develop the if-then-else logic required to solve this standard problem before they write the code for it in subsequent classes or labs
Prerequisite knowledge: How to draw a flowchart with input/output and decision symbols
- String Searches: Apply a "brute-force" method
to determine if a given string is contained in another string. Then
apply the Boyer-Moore algorithm to the same task and note the reduction
in the number of steps.
Objective: To have students apply a search algorithm that is not part of their regular classwork
Prerequisite knowledge: How to use a pointer to move through a string; comparing characters
- Swapless, Pushless Sorting: Develop an algorithm to sort a list of integers into descending order without swapping any values or pushing values up or down.
Objective: To have students create a sort algorithm that is more efficient than the ones they have learned to code (e.g., Shuttle-Interchange, Bubble)
Prerequisite knowledge: At least one sorting algorithm, so as to understand the idea of comparing numbers in a list and swapping those that are out of order
- Dealing Cards: Develop several algorithms for dealing a deck of cards and storing them in the computer's memory.
Objective: To have students develop multiple approaches to a problem that underlies numerous card games, including poker and solitaire
Prerequisite knowledge: How to store data in one- and two-dimensional arrays; random number generation; if-then logic
- File Compression: Apply the LZ algorithm to recreate a file from its condensed version and to condense a given file as much as possible.
Objective: To apply a compression/decompression algorithm to "unzip" and "zip" files
Prerequisite knowledge: Understanding of the concept of file compression and the LZ algorithm
- Seven Segment Display: Apply the techniques of
Boolean algebra to design circuitry to run a seven-segment display for
one digit (as used for calculators, cell phones, etc.).
Objective: To apply Boolean algebra techniques to a "real-world" problem that students are familiar with