Python
Python is a high-level, general-purpose and a very popular programming language. Python programming language (latest Python 3) is being used in web development, Machine Learning applications, along with all cutting edge technology in Software Industry. Python Programming Language is very well suited for Beginners.
American Computer Science League (ACSL)
American Computer Science League (ACSL) organizes computer programming and computer science contests for K-12 schools, organizations and local groups. In 2021-2022, over 700 teams in the United States, Canada, Europe, and Asia participated. The ACSL is widely considered to be one of the most accessible computer science competitions for beginners.
ACSL offers multiple divisions, providing an appropriate challenge for students of varying ages and abilities. An unlimited number of students may compete in each contest.
Each season is divided into four contests, testing students on fundamental concepts in computer science, ranging from Number Systems to Boolean Algebra to Digital Electronics. In the upper divisions, each contest also includes a problem to solve by programming using Python, C++ or Java. Students take all four tests. Certificates are awarded to top scoring teams and top scoring individual students in each US state and each non-US country based upon cumulative scores after the 4th contest.
Which programming language should my child start with?

Middle/High School Programming Roadmap
ACSL Curriculum

Contest Format
Each ACSL contest consist of two parts: five short questions and one coding challenge. The short questions test students the basic knowledge of CS theory. Topics include Number Systems, Boolean Algebra, and Graph. The coding challenge requires a good understanding of strings, arrays and file IO.
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 time limit for all programming problems is 72 hours. That is running time. Students may logout and login again multiple times, but the time keeps running.
Momentum Learning will participate in Junior, Intermediate, and Senior Division. For the longer Junior Division and Intermediate Division contest prep courses, we will use Python. For the shorter courses, students can use Python, Java, or C++.
Python ACSL Curriculum Summary
| Name | Topics | Pre-Requisite | Language | Length |
| ACSL Elementary Division PY100 |
Computer Number Systems, Pre/Post/Infix Notation, Boolean Algebra, Graph Theory | Grades 4 – 6 | NA | 24 Weeks (2 semesters) |
| Intro to Python B PY102 |
Arithmetic Operations, While loops, Lists | Completion of PY101 | Python | 12 Weeks (1 semester) |
| ACSL Junior Division Long Course PY201L |
Computer Number System, Recursive functions, Prefix/infix/postfix Notation, Bit-string-flicking, Boolean Algebra, Data Structures, Graph Theory, and Digital Electronics | Grade 9 and under and Completion of PY102 | Python | 24 Weeks (2 semesters) |
| ACSL Junior Division Short Course PY201S |
Computer Number System, Recursive Functions, Prefix/infix/postfix Notation, Bit-string-flicking, Boolean Algebra, Data Structures, Graph Theory, and Digital Electronics | Grade 9 and under and Students should be enrolled in Intermediate Java concurrently | Python, or Java or C++ | 8 Weeks |
| ACSL Intermediate Division Long Course PY301L |
Computer Number Systems, Recursive Functions, Prefix/infix/postfix Notation, Bit-string-flicking, LISP, Boolean Algebra, Aata structures, FSAs and Regular Expressions, Graph Theory, Digital Electronics, and Assembly language |
Completion of PY201L | Python | 24 Weeks (2 semesters) |
| ACSL Intermediate Division Short Course PY301S |
Computer Number Systems, Recursive Functions, Prefix/infix/postfix Notation, Bit-string-flicking, LISP, Boolean Algebra, Data Structures, FSAs and Regular Expressions, Graph Theory, Digital Electronics, and Assembly Language | Students should be enrolled in USACO Bronze classes concurrently | Python, or Java or C++ | 8 Weeks |
| ACSL Senior Division Short Course PY401S |
Computer Number Systems, Recursive Functions, Prefix/infix/postfix Notation, Bit-string-flicking, LISP, Boolean Algebra, Data Structures, FSAs and Regular Expressions, Graph Theory, Digital Electronics, and Assembly Language | Students should be enrolled in USACO Silver classes concurrently. | Python, or Java or C++ | 8 Weeks |
Dr. Ming Zhang received an undergraduate degree in math from University of Science and Technology of China and obtained his Ph.D. from Rice University in Computer Science.
He has worked as an assistant professor at M.D. Anderson Cancer Center and a financial advisor at Morgan Stanley. With over 25 years of algorithm development and investment experience, Dr. Zhang now enjoys teaching students in mathematics and computer science.
In last 2-3 years, more than 50 of his students have been promoted to USACO Gold and Platinum (including the USACO Training Camp). Many of them are currently attending colleges such as Caltech, MIT, Harvard, Stanford, and Princeton. Congratulations to these amazing accomplishments.


