The Ultimate Guide to the American Computer Science League
If you’re a high school student who is passionate about computer science, then you know the importance of staying up-to-date! Coding and programming require engaging practice, and there’s no better way to do that than to compete with peers.
Many schools have active computer science clubs, through which you can build foundational skills in computer science. Here are some other great computer science activities to help you build your computer science skills! If your school does have a computer science club, then one excellent option to consider is the American Computer Science League.
What is the American Computer Science League?
The American Computer Science League (ACSL) is a non-profit organization that has been promoting computer science education and programming skills among students in the United States and abroad since 1978, through its programming competition.
The ACSL (pronounced ‘Axle’) competitions have been running for around 46 years now and cover a comprehensive range of computer science topics. These topics include, but are not limited to, programming, algorithms, data structures, and computer organization.
Over the years, ACSL has expanded its reach to some 300 competing schools across the US, Canada, Europe, and Asia. If you’re looking to develop critical thinking and problem-solving skills, while also testing your knowledge of computer science and programming, then read on to learn more about the ACSL.
Who Can Participate in ACSL?
There are multiple divisions in the ACSL, for which you must meet the following eligibility criteria:
1. Elementary Division: open to students in grades 3-5
2. Junior Division: you should be a junior or middle school student not beyond grade 9
3. Intermediate Division: you should be a high school or advanced junior high student with little to no programming experience
4. Senior Division: you should ideally be taking AP Computer Science and possess programming experience
5. Classroom Division: this is a special division open to students of all grades, and best suited for those taking AP Computer Science Principles or other computer science classes without a major programming component.
You need to be enrolled in public, private, or home school in the United States or abroad to be eligible to participate.
Is ACSL prestigious?
Last year, about 8,000 students from the United States, Canada, Europe, and Asia participated in the regular season competitions at ACSL. Of these, about two-thirds or less make it to the finals, depending on how many meet the cut-off score. If you reach the top 20% of individual scorers, or you receive a perfect score on 2 of 4 contests, or if your team is in the top 35%, it can be a significant boost to your profile to highlight your programming skills and computer science knowledge. Given the reach of ACSL and the level of competition, we’d say that it is pretty prestigious, albeit not as prestigious as the USA Computing Olympiad (USACO) or International Olympiad in Informatics (IOI).
How are the ACSL Competitions Structured?
There are a few moving parts you’ll need to understand individually in order to get an overall sense of the competition structure - the categories, the seasons, the types of questions, the topics, the team size, and the scoring. We’ll go through each of these!
A) Competition categories and questions
The contests are divided into ‘divisions’ by age or experience (we’ve covered it above in the eligibility section).
Note: There are two different leagues intended for high school - intermediate and senior. The senior division is harder and more suitable for experienced students who have solid programming experience in Python. There is the classroom division which is a blend of a lot of different grades.
The ACSL competitions consist of four ‘seasons’, each season lasting for about two months with 1 contest per season. The contests are conducted online and taken on a platform called HackerRank.
The contest deadline is listed on the Schedule page of the ACSL website. Typically, the contests are spaced as follows:
- Contest 1: available Nov. 1, 2023; closes Sunday January 14, 2024 @ 11:59pm ES
- Contest 2: available Jan. 2, 2024; closes Sunday March 3, 2024 @ 11:59pm EST
- Contest 3: available Feb. 5, 2024; closes Sunday April 7, 2024 @ 11:59pm EDT
- Contest 4: available March 11, 2024; closes Sunday May 12, 2024 @ 11:59pm EDT
Assuming your cumulative score from the four contests is 24 or higher, you will then be invited for the online finals competition. The final round used to be held in person, but it is now online since the COVID pandemic.
The Classroom division is open for all grades. It also has no online programming problem, only a 50-minute, 10-question short answer test based on non-programming questions from the Junior/Intermediate/Senior divisions.
Note: The Elementary Division is not super relevant for high school students so we’re skipping it!
While you will be participating in a team of 3-5 students, you will be giving each test individually, and the scores will also be calculated individually for the purposes of admission to the finals.
For Senior, Intermediate and Junior Divisions, the contests themselves are structured as follows:
1. Part 1 (written section) - Online, 30-minute, 5-question short answer test that is multiple choice and is math and computer science based.
2. Part 2 (programming section) - The online programming problem is 1 question with a 72-hour running time limit. You’ll need to know Python to complete the question and will have a number of ‘test cases’ you’ll need to solve. You will be given a set of prompts and will need to get the correct output. You can test your code as you write it, so don’t worry about syntax!
Note: The programming section is not included in the elementary division.
B) The topics for the written contest
The topics for the contests are the same every year! However, each contest is different from the other contests - there is no overlap between them. For example, every year contest 1 covers number systems, recursive functions, reading code, etc., while contest 2 covers prefix/postfix/infix notation, and bit string operations.Similarly, you’ll have a list for contest 3 and context 4. Here’s the list!
Some topics are common across all divisions, but they get harder with each division. There are some topics which are exclusive to the middle and high school divisions.
For all divisions with progressive levels of difficulty:
1. Number systems: Binary numbers will come readily handy in coding, among other things.
2. Prefix/postfix/infix notation and converting between prefix and postfix: This is mostly order of operations and is pretty key in some programming languages like LISP)
3. Boolean Algebra: When you code, you’ll be using this a lot to think through your logic.
4. Graph Theory: This has very wide application and mastering graph theory can make you pretty adept at creative solutions in programming. It is useful for representing networks.
Some topics that are covered for middle school and high school that you should be familiar with:
1. Recursive functions: These are functions that reference themselves. This is useful in higher-level programming
2. Bit string operations: This is relevant for understanding AND, OR, NOT operations as part of low-level programming
3. Reading code: You’ll have to read the code and say what it does. It is a good skill to have
4. Data structures and algorithms: Think of stacks, queues, binary search trees, how to store and remove data. This has applications in software engineering.
5. Digital electronics: This is also known as logic gates and is applicable for hardware design.
Here are some topics that are exclusive to high school that you should practice:
1. LISP programming language: Really helpful for writing AI programs.
2. Regular expressions: Useful for matching strings, searching in a database.
3. Assembly programming language: Useful for machine code. This is considered more low-level coding and is helpful in understanding, conceptually, how computers process code.
Generally, across all divisions, you can expect to use python and expect algorithm questions. You’ll see a lot of applications around for loops, while loops, strings, lists and data types.You will typically have input/output questions, number transformation questions.
C) Team size and scoring
1. Each team can have a maximum of 12 students and a school can choose to compete in the 5-score or 3-score division.
2. The team scores are the sum of the top 3 or 5 scores (depending on the team structure, whether it is a team of 3 or 5).
3. The awards are given for team and individual scores. Top students from all schools will be invited. Students in the Classroom, Junior, Intermediate, and Senior Divisions must score 24 points or more. The cutoff for students in the Elementary Division is 12 or more.
4. The final round is entirely based on individual performance. This means that if your team does well but you do not, you won’t qualify for finals (sorry!).
Prizes you can win at ACSL
When the season ends, ACSL will send a certificate to the top scoring students in each division in each state or country, and to the top scoring teams in each division in each state or country.For Finalists, the top scoring students in each division will get a prize and a certificate.
Are there any costs associated with participating in ACSL?
The ACSL charges the below listed fee to register teams, which must be done by the team mentor:
- First team in a Division is $150 ($100 for the Elementary Division).
- Additional teams in a Division are $75 each ($50 each for the Elementary Division).
Beyond this, the ACSL also offers a paid collection of previous year’s contests, complete season books for 2019-2020 and 2020-2021, as well as an online course containing previous years’ problems. These offerings are all optional and may be purchased at the discretion of your mentor. You can check the details through the links here.
Should You Participate in ACSL? The Pros & Cons
If you’re on the fence about participating in the ACSL, consider the following pros and cons while making your decision:
Pros -
1. You will hone your programming and problem-solving skills: Programming is something, as with most other skills, you will only improve as you practice. And you will be practicing a lot for ACSL contests! The broad and diverse core computer science concepts you will be working on will serve as an excellent foundation for a future career in any of the multiple fields of computer science. The programming challenges will each have 10 test cases to test your program, providing a rigorous challenge to develop your coding skills.
2. You will enhance your profile for college applications: Over the last few years, nearly 2000 students have participated in ACSL competitions. Being able to reach the top of your division or even win the Finals showcases your personal drive and interest in the field of computer science, greatly improving the strength of your college applications.
3. You will network with motivated peers: Since you can only participate in the ACSL in a team, you will necessarily interact with fellow coders and programming enthusiasts during practice and after contests. You will also be working closely with your mentor, solving challenges together with your team, and working on the best programming solutions. Aside from the great peer learning itself, you will likely also be able to leverage your work with your mentor into a college recommendation letter later on.
4. It will help you prepare for other competitions: The ACSL contests serve as an excellent preparation ground for other programming competitions, such as the International Olympiad in Informatics (IOI) or the USA Computing Olympiad (USACO). Using the robust support network and resources provided by the ACSL as well as the practice of the contests themselves, you will be in a better position to use your newly-honed skills to participate in other national and international competitions.
5. You’ll have more than one shot at growing and progressing in the contests: Since there are four contests, each widely spaced, and the final score tally only occurs at the end, there is a good opportunity for you to learn and improve dramatically as the competition goes on. With each practice session and contest iteration you will stand a far better chance of scoring good on the next one, especially if you’re working on your weaknesses with your team and mentor. This applies exponentially if you choose to participate year on year (and you should).
Cons -
1. You need to find a team: While the peer learning from teamwork is a strong pro, at the same time, if your school does not have an active computer science club or sufficient interested students, it can become virtually impossible for you to participate in the ACSL.
2. You won’t be competing for a large prize pool: Beyond the prestige of winning the competition, there is no monetary draw.
3. Your learning is highly dependent on your mentor: The ACSL provides mentors with plenty of resources to upskill their teams, so you will have to ensure that you work religiously with your mentor to be able to derive the maximum possible benefit.
4. You won’t be able to compete or network in-person: The fully online nature of the ACSL limits the potential networking benefits of participating in such a competition.
Tips to prepare effectively for and to win the ACSL
To excel in the ACSL, it is imperative to prepare thoroughly and strategically. Here are some tips to help you succeed in the competition -
Big picture things:
- Pick your/ your team’s division strategically based on your strengths: If your math is great but your programming isn’t as strong, try to stick to a lower division. For instance, if you are in high school and this rings true, stick to the intermediate division instead of gunning for the senior division. You can think through this with your mentor as well.
- Check with your school to see if there are other participants across divisions that you may not know about!
- Understand what topics you will need to cover in the written and programming questions: Once you’ve figured out which division you qualify for, focus on understanding the topics and the competition structures. ACSL has a pretty solid overview here so that you can familiarize yourself with the topics and types of questions.
- Go through ACSL’s student guides: This is low hanging fruit you shouldn’t miss out on. It will declutter and simplify your approach. Here is the student guide.
- Do not limit yourself only to the ACSL study material: The information they share is good, but sparse in many respects. Try to look up clubs that mentor students through the ACSL process.
- Don’t lose sight of the balance between team and individual performance: Remember that your team is there to supplement, support and encourage you, as you do the same for them - at the end it is individual performance that will win you the contests. Dedicate solo practice time and identify strengths and weaknesses to work on, whether alone or with the help of your team or mentor.
Prep advice:
- Practice regularly: The key to improving your programming skills is consistent practice. Utilize the practice problems and resources provided by the ACSL and work on solving as many problems as possible. The more you practice, the more adept you will become at identifying patterns and solving problems efficiently.
- Written questions: Work on your math, especially algebra! You might be able to sail through some topics if you are weaker in algebra, but you’ll definitely hit a wall when it comes to a bunch of other topics (take, for example, boolean algebra). Also take a look at the ACSL Wiki.
- Programming:
1. Practice coding in Python. (We have you covered here!)
2. Work specifically on for loops, while loops, strings, lists and data types.
3. See practice questions because these programming questions can be pretty tricky. Seeing past questions will help you develop an eye for what to look out for. (Afterall, there are only so many ways to trick someone within the rules of the contest!)
- Pay close attention to what other languages will be required (in smaller doses than Python): Some programming questions can have solutions in Java, or C++. In some divisions, the Short Answer questions use other languages: ACSL Programming Language, LISP, and Assembly Language.
- The details matter: Remember, your code will deal with 10 test cases provided by the testing program. You need to make it as efficient and clean as possible while ensuring you get the syntax, variables and formatting right if you want to get the maximum possible score in each contest.
- Work with your mentor and team: Your mentor has access to plenty of ACSL resources that they will do their best to teach you, and you’ll need to work hard with them to master those concepts. The contests span a variety of topics and it will be critical for you to work with your mentor to establish a strict lesson plan with plenty of group work and cross-checking. You should also be proactive in sharing this advisor guide with your mentor. They’ll appreciate the help!
- Keep cool and keep trying: On the contest days, it will just be you and your computer and your skills. Programming competitions can be stressful, but it is important to stay calm and focused. Take deep breaths, stay positive, and remember that you have prepared for this moment. Headspace has a few quick and easy exercises you can try to steady yourself in the moment.
Since the topics in each contest do not change year on year, if you keep participating, you’ll likely do better because of the experience you have under your belt. This happens pretty routinely in ACSL!
Our Review of ACSL
You should think of the American Computer Science League (ACSL) as a contest-oriented ecosystem. What this really means is that while the end point is competing, it is much more than that. It is pretty involved in terms of prep work and means you’ll collaborate quite a bit with your teammates and coach. What’s great is that you can compete through the years and grow within this ecosystem, while balancing out individual and team performance. ACSL tests you on key foundational topics in math and computer science, so the prep work won’t go to waste even if you do not win. It’ll make you a better thinker. Here’s a pretty good review and scoring analysis by a participant.
By understanding the competition structure, preparing thoroughly, and utilizing the tips mentioned above, you can maximize your chances of success in the ACSL. Remember, consistent practice, strategic preparation, and a positive mindset are key to excelling in any competition. Good luck!
If you’re looking to build unique projects in the field of AI/ML, consider applying to Veritas AI!
Veritas AI was founded by Harvard graduate students, and through the programs, you get a chance to learn the fundamentals of AI and computer science while collaborating on real-world projects. You can also work 1-1 with mentors from universities like Harvard, Stanford, MIT, and more to create unique, personalized projects. In the past year, we had over 1000 students learn data science and AI with us. You can apply here!
Image Source: ACSL Logo