Ahh,
ACSL. Essentially, it's a
computer programming competition for those
high school comp sci students who don't
think 100 lines is a lot of code. While the individual portion of the
contest mostly consists of writing little
algorithms to replace numbers with other numbers and multiplying in
binary, the team portion -- called "
All-Stars" -- is deceptively tricky and a great experience for any beginning
programmer.
What?
ACSL is a
computer programming competition for
high school and
middle school students. There are three divisions,
Junior,
Senior, and
Intermediate, each with its own set of programs that must be completed and its own short-answer problems. On the Senior and Intermediate levels, schools may have either three or five students on their team. On Junior, there must be five students on the team. Each school may only have one team per level.
Junior level is for more experienced middle school students, and high school
freshmen. Nobody beyond
9th grade can compete on this level. From personal experience, the junior division is never very difficult, even as a freshman. The programs are straightforward, as are the short answer problems. The Intermediate division is for high school
sophomores and
juniors, as well as more advanced younger students. Once again speaking from experience, Intermediate does not usually have many tricks to it, although it is certainly more difficult than Junior. The programs for Intermediate can usually be completed in one of two ways: the
brute force way, or the
elegant way. It is on Senior level (any high school student may compete) when the programs begin to require finesse to avoid running out of memory or other fun problems. The Senior programs are most frequently identical to the Intermediate programs, with a few words or a sentence added (usually along the lines of "print out all of the possibilities, not just the correct one").
The first half of the competition is conducted throughout the school year in the
classroom. There are four competitions, in
December,
February,
March, and
April. Each competition consists of one program to be completed within 72 hours and five short answer
computer science questions to be done within 45 minutes. These competitions are each worth ten points: five for each of five correct test inputs for the program, and one for each short answer question. This gives a total of 40 points for a
perfect student score at the end of the year, and either 120 or 200 for a perfect school score. The programs are usually fun to do but with no real use; there are a lot of
board game simulations, character counters, and
binary trees being stuffed into
one-dimensional arrays. The short answer questions have covered the following topics in the past few years:
- "What Does this Program Do": Strictly for Junior division; a short program where the student has to determine the output given the input.
- Number Systems: Converting back and forth between binary, octal, decimal, and hexadecimal, and doing arithmetic and simple algebra in them.
- Recursion: Given a recursive function and an initial x, determine f(x).
- Boolean: Boolean algebra, using and, not, or, and xor.
- Lisp: CAR, CDR, sets, and arithmetic operators in Lisp.
- Bit Strings: Bit string flicking and algebra with bit strings, usually five or so digits long, occasionally needing to be converted into binary from octal or hex.
- Digital Electronics: Diagrams of simple electronic systems with and and or gates; determine output given input.
- Prefix/Postfix: Converting from prefix and postfix to infix, and vice versa.
- Data Structures: Usually binary trees -- internal path length, number of children.
Each school reports the scores of its top three or five students in each division. These scores are added to determine the school scores. The schools with the top scores in each division get to travel to the
All-Star competition, which is a daylong event held at a participating high school somewhere in the
United States. On this day, each team (the top three or five students from each school) has to complete five programs within three hours, for a total of 40 points (more points for the more difficult programs), and each student works 8 difficult
short answer problems within an hour to determine their individual scores. Individual scores for a team are added to the team score to determine the total score, which is used to determine the
winner.
At the culmination of the All-Star competition, there is an
awards ceremony, with awards for the top student per team division per geographical division, for the top-scoring teams of the day, and for the top student scores. The top three teams get trophies, the highest scoring students of the year get plaques, and the top individual scores of the day get
programming books. Last year I got "Preparing for the
AP Exam in
Java" and "
Java in a Nutshell"; some of my teammates got books on
game programming,
internet stuff, and
C++. There are some special awards, mostly
computer games. After winning one of those, our school's senior team spent the evening installing it on all our laptops and setting up the wireless network to work on the ride home.
Spiffy.
The
ACSL competition was first held in the 1978-79 school year, in the form of the "
Rhode Island Computer Science League". It is now in its twenty-fifth year. Each year it publishes four online newsletters, corresponding to the four contests, documenting
challenges over the correct answers and exceptional scores. Last year, I remember, they wrote in one
newsletter that two
fifth graders had achieved perfect scores on the Junior competition. What is the world coming to...
Overall, ACSL is a fairly incredible experience. The programs are fun and challenging, and it inspired a lot of teamwork in our
computer science classes. It had its moments of
drama ("Hey, why isn't it
working... wait for it... YES!") and
nuttiness (our teacher chaperone yelling "
Trogdor" in the middle of the awards ceremony). And we got to go to
Disney Land!
Who?
Currently, twenty-four states and several
Canadian provinces participate in the ACSL competitions. There is also the occasional team from places like
Japan,
Romania (be warned: they're
really good), and
Croatia. They are divided up into geographical divisions based on the level at which they are competing:
junior,
intermediate, and
senior; and the number of students per team, three or five. These divisions (for the 2003-2004
school year) are as follows:
Eastern
Senior 5:
CR,
MA,
NC,
NH,
NJ,
ON,
RO
Southern
Junior:
GA,
MD,
NC,
VA
Intermediate 3:
CA,
FL,
KY,
OK,
TX
Intermediate 5:
AL,
CA,
FL,
MD,
NC,
SC,
VA
Senior 3:
FL,
KY,
MD,
SC,
TN,
VA
Senior 5:
AL,
CA,
TX,
SC,
FL
Northern
Junior:
CR,
IL,
NJ,
NY,
ON,
PA,
RO
Intermediate 3:
CR,
ON,
QC,
RO,
OR
Intermediate 5:
CR,
MA,
NH,
ON,
RO,
VT
Senior 3:
CR,
MA,
ME,
NH,
ON,
RI,
RO
Western
Senior 3:
CA,
TX,
NE,
OK
Metro
Intermediate 3:
NJ,
NY,
PA
Intermediate 5:
NJ,
NY,
PA
Senior 3:
NJ,
NY
Central
Intermediate 3:
IL,
IN,
MD,
MI,
OH,
WI
Intermediate 5:
IL,
OH,
TX
Senior 3:
IL,
IN,
MI,
OH,
PA
Senior 5:
IL,
MD,
PA,
VA
Patriot
Intermediate 3:
CT,
MA,
ME,
NH,
RI,
VT
Some of these states are represented by only one
school, while others have several. This year, there are over 200 schools competing in total.
Sources: acsl.org; personal experience.