The American Computer Science League, generally referred to as ACSL, is a league offering computer science and programming competitions to K-12 students. ACSL contests have been running continuously since 1977 and have gained in popularity in recent years. Students from across the world participate in these contests which are organized into different divisions/levels. Their official webpage is https://www.acsl.org.

What are the different divisions in ACSL?

There are five divisions in ACSL. They are: Elementary, Classroom, Junior, Intermediate, and Senior. Each division is aimed at students of a certain age group (described below) and covers certain topics. The Elementary and Classroom divisions test only technical and conceptual understanding, whereas the Junior, Intermediate, and Senior divisions test both conceptual understanding and programming proficiency.

Who should register with ACSL - the school or the student?

A school or organization (e.g., after-school program) should register with ACSL. A school can register for multiple divisions and within each division can have any number of students. A given student can participate in only one division, so make your selection carefully! If the student’s full-time school has an ACSL team, then that student can only be on the team from the full-time school.

Are ACSL contests individual or team-based?

ACSL contests are to be done individually. All work must be done independently by the student. After scoring, the best 3 or best 5 scores in each (school, division) are used to compute a team score and rank the best performing teams. For the programming contests, ACSL has developed algorithms to compare code submissions across students to test for plagiarism and/or collaboration. Students found to be collaborating will score 0 points for that test and might be disqualified.

Are ACSL competitions conducted over the whole year or do they happen once a year?

Once a student registers for an ACSL division (e.g., elementary), he or she will take multiple tests (typically 4) spread out through the academic year. Each test covers a specific topic or set of topics. At the end of the year, high-scoring students and high-scoring teams in all divisions will be invited to an end-of-year all-star international competition.

How are the topics distributed across the ACSL divisions?

ACSL has a rich set of topics spanning all their divisions. Some topics occur in multiple divisions but the level of difficulty will be accordingly adjusted (e.g., a Graph Theory question in the Elementary Division will be less complicated than a Graph Theory question in the Junior Division, for instance). In more detail, the topics are:

Elementary Division (4 topics): Computer Number Systems, Prefix/Infix/Postfix Notation, Boolean Algebra, and Graph Theory.

Classroom Division (12 topics): Computer Number Systems, Recursive Functions, What Does This Program Do? Prefix/Infix/Postfix Notation, Bit-String Flicking LISP, Boolean Algebra, Data Structures, Finite State Automata and Regular Expressions, Graph Theory, Digital Electronics, and Assembly Language.

Junior Division (12 topics): Computer Number Systems, Recursive Functions, What Does This Program Do? - Branching, Prefix/Infix/Postfix Notation, Bit-String Flicking, What Does This Program Do? - Looping, Boolean Algebra, Data Structures, What Does This Program Do? - Arrays, Graph Theory, Digital Electronics, and What Does This Program Do? - Strings.

Senior and Intermediate Divisions (12 topics): Computer Number Systems, Recursive Functions, What Does This Program Do?, Prefix/Infix/Postfix Notation, Bit-String Flicking, LISP, Boolean Algebra, Data Structures, Finite State Automata and Regular Expressions, Graph Theory, Digital Electronics, and Assembly Language.

Do ACSL competitions test technical understanding of computer science or programming proficiency?

As stated above, depending on the division you register for, the answer to this question changes. If you are registered for the Elementary or Classroom division, the competitions test technical understanding. If you register for the other divisions, the competitions test both technical understanding and programming proficiency.

How should I choose which ACSL division I should participate in?

You can only participate in one division in a given year. First, you should decide if you are comfortable with programming problems or only conceptual/technical questions. If you are in elementary school, the Elementary division is a natural fit. Recall that the Elementary division does not have programming problems. The Junior division is ideal for middle school students. The Intermediate and Senior divisions are geared toward high school students. The Classroom division is open to all grades but likely more suited for upper middle and high school students, especially those who might be taking AP Computer Science Principles, and other computer science classes without a major programming component.

Which programming languages are used in ACSL?

The ACSL programming competitions are done using an online platform like HackerRank. Students typically have a choice in their programming language: Python, Java, or C++. In some divisions, the conceptual questions use other languages, like LISP, Assembly Language, or a pseudo-language developed by the ACSL organizers (called ACSL Programming Language). But note that these questions do not actually require you to code, but rather might give you code and ask you to explain what the program does or will do under certain conditions.

Are ACSL tests timed?

Yes, ACSL tests are timed. Except for the Classroom Division, the time limit for the short answer tests is 30 minutes. The time limit for Classroom Division is 50 minutes. The programming problems are also timed. The time limit there is 72 hours (3 days). Students may logout and login again multiple times during the 72 hours but once the programming test is begun, the clock keeps running (there is no way to “pause” the clock).

How much is the registration fee?

The registration fee is paid by the team organizer/advisor, not by the individual students. The fee is per division and does not vary based on the number of students. The Elementary division registration fee is $75. The registration fees for Classroom, Junior, Intermediate, and Senior divisions is $125. (Note: these are subject to change.)

How are students selected for the internationals?

The Finals competition, like the other contests, is individual-based. Top students from all schools will be invited. For 2021, students in the Classroom, Junior, Intermediate, and Senior Divisions must have scored 24 points or more. The cutoff for students in the Elementary Division is 12 or more. In 2021, Kodeclik-er Anant from Northern Virginia brought home the International Gold. He scored a perfect score in each of the four elementary division contests and scored a perfect score in the final as well.

What are examples of questions that are asked on the ACSL?

As stated earlier, because there are such a rich variety of topics covered, it is not possible to cover all of them in this blog post. Below are some examples of questions.

Here’s an example of a digital electronics question (Senior Division; courtesy ACSL Sample Questions):

Heres an example of an assembly language question (also Senior Division; courtesy ACSL Sample Questions):

Here’s a program comprehension question (from the Classroom Division; courtesy ACSL Sample Questions):

Here’s a regular expression question (also from Classroom Division; courtesy ACSL Sample Questions):

Finally, here’s an example of a graph theory question from the Elementary Division (courtesy ACSL Sample Questions):

As you can see, ACSL contests cover a rich variety of topics and will keep you occupied throughout your school years!

How can I prepare for the ACSL?

Kodeclik’s ACSL Training Programs are field-tested. Our programs cover instruction, sample questions, problem solving strategies, and practice tests. Checkout our online computer science classes page for more details.

Kodeclik is an online coding academy for kids and teens to learn real world programming. Kids are introduced to coding in a fun and exciting way and are challeged to higher levels with engaging, high quality content.