American Computer Science League

ACSL, or the American Computer Science League, is an international computer science competition among more than 300 schools. Originally founded in 1978 as the Rhode Island Computer Science League, it then became the New England Computer Science League. With countrywide and worldwide participants, it became the American Computer Science League. It has been in continuous existence since 1978. Each yearly competition consists of four contests. All students at each school may compete but the team score is the sum of the best 3 or 5 top scores. Each contest consists of two parts: a written section (called "shorts") and a programming section. Written topics tested include "what does this program do?", digital electronics, Boolean algebra, computer numbering systems, recursive functions, data structures (primarily dealing with heaps, binary search trees, stacks, and queues), lisp programming, regular expressions and Finite State Automata, bit string flicking, graph theory, assembly programming and prefix/postfix/infix notation.

Divisions
There are five divisions in ACSL: Elementary, Classroom, Junior, Intermediate, and Senior. The Elementary Division is a non-programming competition for grades 3 - 6. It tests one topic per contest. The Classroom Division is a non-programming competition for all grades and consists of a 10 question test on 4 topics each contest. Junior Division is recommended for middle school students (no students above the ninth grade may compete in it). Intermediate and Senior Divisions are for secondary school students, Intermediate being easier and Senior being more difficult. At the All-Star Contest, the Junior teams consist of 5 members each while the Senior and Intermediate teams can consist of 3 or 5 members. Each team competes against other same-sized teams in its division.

Regular season
The Regular Season, in which individual students compete to get their school team qualified for the All-Star Contest, consists of four rounds. These rounds consist of a programming part and a written part. In the programming part, students have 72 hours to complete a program in any computer language to perform the given task. In the written part, students have a total of 30 minutes to answer 5 questions based on given topics. Students then receive a score of up to 10 points (5 for written and 5 for programming). For the Classroom Division, students receive 45 minutes to solve 10 written problems. For the Elementary Division, students have 30 minutes to solve 5 written problems. Prizes are awarded to top scoring teams and students based upon cumulative scores after the fourth contest.

Finals contest
The Finals Contest is held online on the Saturday of Memorial Day weekend each year. Top students are invited to participate in the contest. Students in the Junior, Intermediate, and Senior divisions start in the morning with a 3-hour block in which to solve 2 programming problems. All divisions have a one-hour quiz (20 multiple choice questions) on topics that are covered in the written questions in the Regular Season rounds. The scores of the programming and theory sections are added together to determine the winners in each division.