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.

## 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. This year, we are coaching our son's Junior Division. We will also coach a new batch of ACSL Elementary Division, if we have time.

## 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.

The 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 5-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 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 Senior Division is the fourth division, mainly for high school students, especially those in AP Computer Science.

The 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.

## 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

- Controllable Christmas Lights using Raspberry Pi & RGB LED Strip
- Working with JSON in Python
- Python script to tweet your Internet speed
- ACSL Junior Division
- Install Visual Studio Code for Python development
- How to Install Python 3.10.7 on the Raspberry Pi
- Nobel prize winner in Economics uses Python

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