American Computer Science League (ACSL) is an international computer science competition with more than 300 schools participating. It is the first CS school club and was founded in 1978. There are hundreds of teams registered with ACSL all over the United States, and now over the globe as well. Mr. Jerry Tebrow and other ACSL board members have done a great job in organizing the overall structure with syllabus.

**UPDATE:** As of 2024, the Short Problems contests consist of **6 questions**, instead of 5 questions, to be answered in 30 minutes.

## Coaching our ACSL Clubs

We started by coaching our daughter's ACSL Elementary Division club in 2019. We started off by volunteering in our daughter's school PTA, and subsequently formed our own independent teams by directly registering with ACSL. The following year, we coached our daughter's ACSL Junior Division. The year after that, we coached our daughter's ACSL Intermediate Division and our son's ACSL Elementary Division. Since then, we have coached our son's ACSL Junior Division club every year.

This year, we are again coaching our son's Junior Division. Our son and his friends are in the team. They range from grades 6 through 9.

## Five ACSL Divisions

The ACSL club is run as an after-school club with five different divisions. The Elementary Division is the beginner division for grades 3 through 6.

The ACSL Elementary Division consists of four non-programming contests. They are Number Systems, Prefix/Infix/Postfix Notations, Boolean Algebra and Graph Theory. Students write a 30-minute exam for each contest at the end of the month. As of 2024, there are **6 questions** to be answered in 30 minutes.

The ACSL Junior Division is the next higher division, which includes students grades 4 through 9. This division also introduces programming. We teach Python at elementary level with a grasp on the important concepts -- essentially what technical interviewers refer to as "core Python". In addition to including everything in the Elementary Division, there is also Recursive Functions, Bit-String Flicking, Data Structures, Digital Electronics and a whole bunch of pseudocode topics, which include branching, looping, arrays and strings. Students write a 6-question exam in 30 minutes, known as Short Problems Contest. They also get to work on a 72-hour programming exam, known as Programming Problem Contest. Our students use Python 3 to complete this exam.

The ACSL Intermediate Division is the third division, mainly for high school students, though they allow advanced middle school students as well. This division includes everything in the Junior Division, plus LISP, FSAs and Regular Expressions, Assembly Language and more. The questions are much harder than those in earlier divisions.

The ACSL Senior Division is the fourth division, mainly for high school students, especially those in AP Computer Science.

The ACSL Classroom Division is for all age groups, and includes everything in Senior Division, except the programming part. This is best for those taking AP Computer Science and other Computer Science classes. At the end of each topic is a 10-question exam to be answered in 50 minutes.

## Preparing for ACSL Elementary Division

Since the ACSL Elementary Division does not involve programming, and only involves the four core topics, this is relatively the easiest.

Learning the concepts followed by a lot of practice is mandatory. In my opinion, working for at least 2-3 hours a week spread over 2 days should be good.

There should be lots of writing on paper. This should be a good checklist before every class:

- Pencils or Pens
- Composite Notebook only for ACSL
- Highlighter Pens of different colors
- Ruler (will be useful for truth tables)

If you are a coach, please assign homework. You can either prepare your own homework or buy my books listed down in this blog post.

A good time frame to start your ACSL club would be in August or September, even though many schools and PTAs start in late October / November. This will give the students a good head start.

## Preparing for ACSL Junior Division

If a student wants to join an ACSL Junior Division club, they should have done ACSL Elementary Division, or be prepared to catch up. If the student does not know any programming language yet, they should be prepared to spend a few hours every week learning a new programming language. I highly recommend Python because it is simple, intuitive and easy to learn.

You can read more in our ACSL Junior Division blog post.

## Preparing for ACSL Intermediate Division

If a student wants to join an ACSL Intermediate Division club, they should have at least done ACSL Junior Division, or be prepared to catch up. If the student does not know any programming language, things can get difficult and demoralizing as well, if they don't dedicate enough hours to learning the new programming language of their choice. The quality of programming that will be done at this level is much higher, and the problems will be more difficult than in ACSL Junior Division.

The best time to learn a new language (Python, Java or C++) would be during the the summer vacation.

You can read more in our ACSL Intermediate Division blog post.

## Number Systems

Number Systems is a core topic. In the Number Systems topic, students learn the different numbers systems including binary, octal, hexadecimal and of course, the decimal number system. They learn the 12 types of conversions between these. There are also questions related to converting RGB hexadecimal values to decimal, and so on.

Sample questions for practice would be:

- Convert 10111101
_{2}to octal - Convert 1357
_{8}to hexadecimal - Convert ABDDFF
_{16}to octal - What is the decimal component of green in the RGB hex code #A4C639?

We have released a book on Number Systems for practice. This book is available on Amazon.

## Prefix/Postfix/Infix

In the Prefix/Postfix Notation topic, students learn about the various notations related to expressions. Postfix uses the stack notation. Lisp (including Emacs el files) and Clojure use the prefix notation. The regular everyday math expressions we use follow infix notation. This topic involves conversion between notations and evaluation of values in prefix and postfix notations.

Students get to convert between prefix, postfix and infix notations.

Sample questions for practice would be:

- Convert 1 + 2
_{3}/ 4 to prefix notation - Convert / ^ 1 3 + 5 7
_{8}to postfix notation - Evaluate the prefix expression
`+ * 1 2 5`

## Boolean Algebra

In the Boolean Algebra topic, students learn the various Boolean laws. Some of these are associative laws, distributive law, commutative law, DeMorgan law and absorptive law. Kids also learn to use truth tables and simplify boolean expressions. It's a great way to introduce kids to logic and basics of electronics.

Sample questions for practice would be:

- Simplify the boolean expression A + AB * (A + B)
- Which ordered pairs make the boolean expression A + ~AB false?
- Draw truth tables for the boolean expression AB + A~B

## Graph Theory

The last contest is Graph Theory. Kids learn about vertices, edges and various types of graphs. Other areas include Euler's graph, trees, connected/disconnected graphs, undirected/directed graphs, graph traversals, etc. In one of my classes, the kids used graph theory to study the effects of quarantine to prevent the spread of coronavirus using adjacency matrix and adjacency lists.

Sample questions for practice would be:

- Draw a complete graph with 5 edges.
- How many paths are there from A to E (with a graph drawn)?
- What is the longest path from A to E?
- Which vertex has the highest degree?
- If we remove node B from the graph, what will be the longest length from A to E?

## Work Smart AND Work Hard

We say **Work Smart AND Work Hard** for best results. If a student is labeled in the Gifted and Talented category, but does not put in enough hard work, he or she may get overwhelmed by the Contests.

A lot of things can be achieved by hard work, regardless of where the student is placed academically. ACSL is one of them.

## Practice Exams and Homework

The ACSL Contests are really not very difficult, but some of the questions can be tricky. And, a lot of practice beforehand will be great.

If you have a club, assign weekly homework and regular tests. Our students get to do weekly homework (math part and Python code).

We also create and let our students write at least two practice exams before every ACSL Contest. This lets them get used to the difficulty level of the exam.

We created an online practice exam website for our class. If there is enough interest, we can release a version for public use (with a login, coaches' portal, etc).

## Our ACSL Books

We released the first edition of our ACSL Elementary Study Guide on Amazon in 2020. You may buy it by clicking on this link below:

And the Number Systems Practice Exercises book you saw earlier can be bought by clicking on this link below:

We are writing a book on Python for school children. Stay tuned and let us know if you have any suggestions or comments. Thank you. đ

## Conclusion

We like to use everyday topics and try to relate practical applications in our class so that it doesn't get too monotonic. We encourage active participation in our class.

If you have taught ACSL or something similar in your child's after-school clubs, what methods do you use to get your students to be active participants? Do you give homework or projects to your students? Let us know. Thank you.

## Related Posts

If you have any questions, please contact me at arulbOsutkNiqlzziyties@gNqmaizl.bkcom. You can also post questions in our Facebook group. Thank you.