Focus on building your vocabulary. You may already know how to ask questions, but learning to evaluate the answers takes practice.
From September to December, keep your head down and build solid fundamentals to avoid getting overwhelmed. You can start with CS50x, or follow this opinionated roadmap:
Start learning the programming language, C. Go through Beej's Guide to C, it's excellent. Some chapters might not be necessary at this level, but understanding loops, conditions, functions, memory management and basic input/output are a MUST.
Next, learn what happens behind the scenes from the moment you power on your computer to when your program prints "Hello World." Read cpu.land (fun fact: the author was 17 when she wrote it). Take notes as you read.
At this point, you know how to interact with a computer. Since computers exist to automate time-consuming tasks, you must learn to translate human problems into code. Solve the first 10 problems on Project Euler. These are mathematical challenges that you will convert into programs. Use references if needed, but aim to write the solutions without relying on AI generation.
You will notice that unoptimized programs can take a long time to finish. Software performance mainly centers on two bottlenecks: memory and compute. Structuring your data effectively (Data Structures) and organizing your logic efficiently (Algorithms) allows your code to run dramatically faster. Use Open Data Structures as a reference, and practice on CSES or the NeetCode 150 problem set.
With these foundations in place, you are ready to specialize. Want to compete in ICPC? Practice on Codeforces. Target engineering roles at companies like NVIDIA? Build hardware-adjacent projects while learning C++ and CUDA.
Special mention: Bottom Up CS, a dense, deep dive for those looking for a rigorous challenge.