ACP / ELM / 01
Scratch coding
Logic for grades 3 to 6.
Open the syllabusUnited States · Grades 3 to 12 · Four contests a season
The American Computer Science League runs four computer science contests across the school year, with an invitational Finals in May. Unlike most coding contests, half of each ACSL test is pencil-and-paper computer science: number bases, Boolean algebra, graphs, recursion traced by hand. This guide is built from the league’s own 2026-27 pages and gives the divisions, the contest windows, the topics in each contest, how HackerRank scores the programming problem, a practice set we wrote ourselves with answers, and a 13-week plan.
Live teaching since 2020 · 10,000+ students · computer science taught by hand and by code
In short
ACSL, the American Computer Science League, is a team contest for K-12 students run in four online contests each season. Every contest has a short answer test on computer science topics, and the Junior, Intermediate and Senior divisions add a programming problem in Python, C++ or Java solved within 72 hours. For 2026-27, Contest #1 opens October 19, 2026, team registration closes December 31, 2026, and the Finals are on May 29, 2027. Modern Age Coders teaches this live online for US students, in a batch or one to one, and the first class is free.
Prepare with a teacher
ACSL rewards students who can reason about code without running it, then write a clean function under a time limit. These courses build both halves.

ACP / 01
Ages 13 to 18. Contest problems against hidden tests.
Open the syllabus →
ACP / 02
Ages 13 to 18. Stacks, trees and graphs, the ACSL core.
Open the syllabus →
ACP / 03
Ages 13 to 18. One of the three ACSL languages, AP friendly.
Open the syllabus →The league
A long-running league organised through schools and clubs, scored by team and by individual.
| Point | What ACSL publishes |
|---|---|
| Who runs contests for | K-12 schools, organizations and local groups |
| History | The 2026-27 season is its "49th year of continuous operation" |
| Reach last season | "over 7,000 students from 21 countries on 6 continents" in the regular season |
| Contests | Four per season, then an online invitational Finals |
| Programming | Upper divisions solve a problem "using Python, C++ or Java" |
| Who registers | An advisor: "any teacher, parent or other adult with CS experience" |
| Summer | A separate Summer Programming Challenge |
ACSL tests computer science, not only coding speed. A student who has never written a line of Java can still score on number systems and Boolean algebra, which makes it a gentle first contest for a curious middle schooler.
Advisors pick when to run each contest within a long window, so a school can fit it around exams and holidays instead of a single national test day.
USACO is individual and almost entirely programming. ACSL is team based, half theory, and spread over four contests with short tests.
A student can do both in one year: ACSL builds the theory and hand tracing, and that discipline helps in any contest that uses hidden test data.
Source: acsl.org and its Advisor Guide, read 17 October 2026. The league sets its own rules and fees; Modern Age Coders is independent of ACSL and teaches the skills only.
Five divisions
Topics are similar across divisions; detail and difficulty rise with each one. Schools may enter more than one division.
| Division | Who it suits (our summary of the ACSL page) | Each contest |
|---|---|---|
| Senior | Experienced high school coders; ACSL singles out students in AP Computer Science | Six short answers in 30 minutes, then one programming task with a 72-hour window |
| Intermediate | High school beginners in programming, plus strong younger students | The Senior format with gentler problems |
| Junior | Middle and junior high students who are learning to code; capped at grade 9 | The same two parts, on Junior topics |
| Classroom | Any grade; a natural fit for AP CS Principles and theory-heavy classes | Ten short answers in 50 minutes, nothing to program |
| Elementary | Grades 3 to 6 | Six non-programming questions in 30 minutes, one topic per contest |
The Divisions page is firm that "No student beyond grade 9 may compete in the Junior Division." A 9th grader new to programming can choose Junior; a confident 8th grader who already writes Python functions may get more from Intermediate.
The short problems in Intermediate and Senior share the same topics, so a student who moves up a division next year is not starting over.
A team counts either its top 5 scores or its top 3 in each contest. A 5-score team has up to 10 students on its roster, a 3-score team up to 6, and a school may register several teams in one division.
A student belongs to one team only, and after Contest #1 cannot switch. Plan rosters before October so nobody is stuck in the wrong division.
The calendar
Each contest is open on HackerRank for weeks, and the advisor chooses when students sit it. These are the 2026-27 windows as published.
| 2026-27 season | Window on HackerRank (closing at 11:59 p.m. Eastern) |
|---|---|
| Contest #1 | From October 19, 2026 until Sunday, January 10, 2027 |
| Contest #2 | From January 4, 2027 until Sunday, February 28, 2027 |
| Contest #3 | From February 1, 2027 until Sunday, April 11, 2027 |
| Contest #4 | From March 1, 2027 until Sunday, May 23, 2027 |
| Registering teams | Deadline December 31, 2026 |
| Finals invitations | Emailed between May 1 and May 28, 2027 |
| Invitational Finals | Online on Saturday, May 29, 2027, Memorial Day weekend |
Contest #2 opens before Contest #1 closes, and the same is true down the list. That gives advisors room, but it also tempts teams to leave everything until the last weeks.
Our advice is to sit each contest early in its window, once the topics have been taught, and keep the spare weeks for anyone who was sick on the planned day.
Because registration runs to December 31, 2026 and the Contest #1 window to January 10, 2027, a team that forms in December can still take all four contests this season.
The topics for each contest are published in advance, so a late team can study Contest #1 topics over the winter break and sit it in early January.
The syllabus
Each short answer test draws on three topics, two problems from each. The list below is the official one for the Intermediate and Senior divisions, with the Junior and Elementary differences.
| Contest | Intermediate and Senior | Junior differs | Elementary |
|---|---|---|---|
| 1 | Computer Number Systems; Recursive Functions; What Does This Program Do? | Program tracing focused on branching | Elementary Computer Number Systems |
| 2 | Prefix/Infix/Postfix Notation; Bit-String Flicking; LISP | Looping replaces LISP | Elementary Prefix/Infix/Postfix |
| 3 | Boolean Algebra; Data Structures; FSAs and Regular Expressions | Arrays replace FSAs and Regular Expressions | Elementary Boolean Algebra |
| 4 | Graph Theory; Digital Electronics; Assembly Language | Strings replace Assembly Language | Elementary Graph Theory |
The topics school rarely covers, bit-string flicking, LISP and assembly language, are the ones a student is least likely to have met before. Each is learnable in a few lessons, but only with drill, because the notation is unfamiliar.
Recursive functions and What Does This Program Do? reward careful tracing on paper. Students who try to do them in their head under a 30-minute limit make small slips.
Each topic on the Study Materials page links to the ACSL Wiki with explanations, videos and sample problems, and there is a full sample contest from a past year for every division.
ACSL also sells downloadable collections of previous contests to advisors. Past papers are the strongest practice there is, because the style of question repeats.
Contest day
Every contest is taken online through links HackerRank emails to each student. The Student Guide explains the details that change how you should work.
Passing the six visible cases proves very little. Hidden cases often probe edges: an empty string, a zero, the largest input allowed. We teach students to write three extra test inputs of their own before they press run.
The return format is checked exactly. A space too many or a missing leading zero fails a case that the logic got right.
Seventy-two hours is generous, and that is the trap: students start late and rush. A better rhythm is to read the problem on day one, write a solution on day two, and test edge cases on day three.
Try the HackerRank Sample Test before Contest #1 so the editor is familiar on the day that counts.
Practice set
We wrote these to match the official topic list. They are not ACSL problems, and the answers below are our own working.
| # | Topic | Problem | Answer |
|---|---|---|---|
| 1 | Computer Number Systems | Convert 2A3 (base 16) to base 10, then to base 8. | 675; 1243 in base 8 |
| 2 | Prefix/Infix/Postfix | Evaluate the postfix expression 6 2 3 + * 4 - | 26 |
| 3 | Prefix/Infix/Postfix | Evaluate the prefix expression - * 6 + 2 3 4 | 26, the same expression as #2 |
| 4 | Recursive Functions | f(x) = f(x - 3) + 2 when x > 5, otherwise x * x. Find f(11). | 29, since f(11) = f(8) + 2 = f(5) + 4 = 25 + 4 |
| 5 | Bit-String Flicking | Find 10110 AND 01100, then 10110 XOR 01100. | 00100; 11010 |
| 6 | Boolean Algebra | Simplify A·B + A·(NOT B). | A, because B + NOT B is always 1 |
# bases.py (ours): check a number-systems answer by machine
def to_base(n, base):
digits = "0123456789ABCDEF"
if n == 0:
return "0"
out = ""
while n > 0:
out = digits[n % base] + out
n //= base
return out
value = int("2A3", 16) # hexadecimal to decimal
print(value) # 675
print(to_base(value, 8)) # 1243
print(to_base(value, 2)) # 1010100011The habit we teach: solve by hand first, then let a short program confirm it. Python’s int() reads a string in any base from 2 to 36; to_base() goes the other way by repeated division.
# postfix.py (ours): evaluate postfix with a stack
def eval_postfix(expr):
stack = []
for token in expr.split():
if token in ("+", "-", "*", "/"):
right = stack.pop()
left = stack.pop()
if token == "+":
stack.append(left + right)
elif token == "-":
stack.append(left - right)
elif token == "*":
stack.append(left * right)
else:
stack.append(left / right)
else:
stack.append(int(token))
return stack.pop()
print(eval_postfix("6 2 3 + * 4 -")) # 26Postfix evaluation is a stack: push numbers, and on each operator pop two, apply it, push the result. The order of the two pops matters, since 30 - 4 and 4 - 30 differ. Writing this once also prepares students for the Data Structures topic in Contest #3.
Why both by hand and by machine? In the contest there is no time to write a program for a short answer question, and in the programming problem there is no partial credit for a correct idea with a wrong return format. Students need the speed of the first and the precision of the second.
Thirteen weeks
Our plan for a student starting in mid October 2026 who wants to sit Contest #1 in December and Contest #2 in February. It assumes one live class and about two hours of practice a week.
| Weeks | Focus | Finished when |
|---|---|---|
| 1 to 2 | Computer Number Systems | Any base 2, 8, 10 or 16 converted by hand in under two minutes |
| 3 to 4 | Recursive Functions | A recursion traced to its base case on paper, every call written down |
| 5 to 6 | What Does This Program Do? | Short programs traced line by line with a variables table |
| 7 | Programming practice | One past programming problem solved with three edge cases of our own |
| 8 | Sit Contest #1 | Taken early in December 2026, well before the January 10 close |
| 9 to 10 | Prefix/Infix/Postfix | Conversions both ways and stack evaluation by hand |
| 11 | Bit-String Flicking | Shifts, circulates and AND, OR, XOR on strings |
| 12 | LISP (or Looping for Junior) | Nested list functions evaluated from the inside out |
| 13 | Sit Contest #2 | Taken in February 2027, ahead of the February 28 close |
One topic per contest, so two weeks per topic is plenty. Short daily drills beat long weekend sessions at this age.
Tracing programs by hand is the core skill. Classroom students skip programming and spend that time on past short problems.
Split time evenly between theory and programming, and treat every programming practice as a hidden-test exercise.
The Finals
High scorers from the regular season are invited to an online Finals. Its rules are stricter than the season’s.
| Point | Rule |
|---|---|
| Invitation | Scores of at least 28 points (Junior, Intermediate, Senior), 24 (Classroom) or 14 (Elementary) |
| Programming test | Two problems, 20 points in total, a 3-hour limit from the moment the student starts |
| Short problems | One hour; "Each test will have 20 questions." from every topic of the year |
| Secure Mode | Full screen, tab-switch alerts, no copy and paste, single monitor, webcam image checks |
| Awards | "There are no team awards." Prizes go by individual score |
| Timing | Upper divisions start with a livestream at 10 a.m. EDT (7 a.m. on the West Coast); Elementary and Classroom at 2 p.m. EDT |
The Finals page also says plainly that the event tests a student’s own coding skills, not whether they can get an answer from AI, friends, parents or the internet. We agree, and our lessons work the same way: the teacher explains, the student solves. A per-student registration fee applies to the Finals and is paid through the invitation email.
Readiness
Four stages we see in ACSL students, whatever their division.
| Stage | The student can |
|---|---|
| 1. Starter | Answer number system questions with time to spare |
| 2. Tracer | Trace recursion and short programs on paper without slips |
| 3. Coder | Pass visible and their own edge-case tests in the programming problem |
| 4. Finalist | Cover every topic of the year in timed conditions |
An advisor must register the team, and ACSL allows that to be a parent with computer science experience, so homeschool groups can take part.
Steady practice across the season matters more than a burst in May, because Finals invitations are based on scores from the regular season.
Keep a notebook of every mistake by topic. The pattern shows you which two topics to drill next.
Always write down the answer format before you code. Hidden tests check it exactly.
The catalogue
Taught live online by a regular teacher, grouped by the ACSL divisions they suit best.
ACP / ELM / 01
Logic for grades 3 to 6.
Open the syllabusACP / ELM / 02
Bases and Boolean in code.
Open the syllabusACP / ELM / 03
Fits the Classroom division.
Open the syllabusACP / JR / 01
Ages 9 to 12, first functions.
Open the syllabusACP / JR / 02
Ages 9 to 12, typed and strict.
Open the syllabusACP / JR / 03
Blocks to real code.
Open the syllabusACP / SR / 01
Java and the AP exam.
Open the syllabusACP / SR / 02
STL and fast solutions.
Open the syllabusACP / SR / 03
Clean functions, clear output.
Open the syllabusLesson times
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
Weekdays
An evening class after school, Eastern to Pacific.
Weekends
Timed practice papers on Saturday or Sunday.
1-on-1
Drill the exact topics a student keeps missing.
Each ACSL topic, until it is quick.
Variables tables, on paper.
Edge cases before every run.
Timed, then reviewed line by line.
Python, Java or C++.
Fifteen to twenty, or one to one.
Student work
Contest skills grow into real projects. A few are below, and the student labs page has the rest.

AI and ML
An AI nutrition coach that reads what you eat and works you toward a target.

AI and ML
A chatbot that answers mathematics and programming questions, built and deployed by a student.

AI and ML
An assistant that helps a young person recognise unsafe situations online.

Web app
A weather forecasting site with live conditions for any location.
Fees
ACSL sets its own fees: the advisor pays per team, and Finals invitees pay a per-student fee through the invitation email. Our classes are separate and billed month by month in US dollars, so a student can study through the season and pause in summer.
Free first class
USD 0
no card required
Group batch
USD 100
a month, billed in US dollars
One to one
USD 150
a month, billed in US dollars
What families say
Google reviews from parents, quoted exactly.
★★★★★
"The one step solution for my son. Modern Age Coders make learning coding so simple that kids love it. The teachers explain complex concepts clearly with practical exercises and interactive content."
Ria Mukherjee
Parent
★★★★★
"Modern Age Coders has been a game-changer for me. I struggled to grasp IT concepts and coding before joining, but their classes transformed everything. I can now confidently write complex programs with ease."
Samriddha Mondal
Student
★★★★★
"One of the most wonderful education centres out there. Education is not limited to school syllabus but focuses on skill development."
Vansh Agarwal
Student
★★★★★
"My child Dhairya is really enjoying the Modern Age Coders classes. This is his first online class and he eagerly looks forward to it. I can already see his improvement, and the teachers are very cooperative."
Sonam Oswal
Parent of Dhairya
★★★★★
"Modern Age Coders have wonderful teachers who teach in a clear, easy and practical way. The teacher boosts students' confidence and inspires them to learn without hesitation."
Sonu Goyal
Parent
★★★★★
"I highly recommend this computer coding class! The teachers are incredibly knowledgeable and passionate about coding."
Ritu Kedia
Parent
Questions from families
The American Computer Science League organises computer science and programming contests for K-12 schools, organizations and local groups. The 2026-27 season is its 49th year of continuous operation.
Its window runs from October 19, 2026 to 11:59 p.m. Eastern on Sunday, January 10, 2027, and the advisor picks the day students take it.
Elementary is for grades 3 to 6, Junior for middle school students up to grade 9, Intermediate for high schoolers newer to programming, Senior for experienced programmers, and Classroom for any grade without much programming.
The official home page says the upper divisions solve a problem using Python, C++ or Java.
Students compete on teams registered by an adult advisor, and the Advisor Guide allows a parent with computer science experience to take that role, so a club or homeschool group can form a team.
The Registration page gives December 31, 2026 as the deadline for registering teams for the 2026-27 season.
There are up to 12 test cases and the last 6 are hidden. Each hidden case passed is worth one point, and the last run before time ends is the score.
Invitations are based on regular-season scores: at least 28 points in the Junior, Intermediate and Senior divisions, 24 in Classroom or 14 in Elementary. The 2027 Finals are online on Saturday, May 29, 2027.
No. Students must work independently, collaboration scores 0 for that test, and the Finals run in a secure mode with full-screen and webcam checks.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
A regular teacher works through the official topics in contest order, drills hand tracing, practises programming problems against hidden-style tests and reviews timed past papers. We never help during a live contest.
Elsewhere on this site
More for US students who enjoy contests and computer science.
The individual programming olympiad.
Java, the Senior division favourite.
A good match for Classroom division.
Where ACSL fits among other options.
Team building against the clock.
Every page we have for US families.
picoCTF, now CyLab Security Academy, for US beginners aged 13 and up.
CyberPatriot 19 (2026-27) explained from the official pages, with a practice plan.
Technovation Girls and the 2026-27 Technovation Challenge, from the official pages.
Start here
Tell us the division and the next contest window. The teacher starts with a short topic check so the plan begins where your student actually is.
Want to see how lessons run first? Read how we teach, or open the course list for full syllabuses.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
Lessons are live by video from our teachers in India, timed for US evenings and weekends. Message us on WhatsApp for the fastest answer.
A priority demo is a full class of about 45 to 60 minutes. After the class the mentor sends a written skill report and a personal learning roadmap on WhatsApp. If you enrol, the demo fee is adjusted against your first month's fee. Share your demo Order ID with us on WhatsApp and we take it off.
Book a priority demo