--- id: prereqs title: Prerequisites author: Nathan Wang --- Here's what you should learn before reading these resources. These resources do **not** teach you how to code. We recommend you learn roughly the first half of AP Computer Science A before continuing. If you do not meet these prerequisites, you can go to the resources below to get started. Familiarity with [competition math](https://github.com/bqi343/USACO/blob/master/Resources/Competition%20Math.md) (ex. AIME qualification) is helpful but not required. ## Expected Knowledge - Variables - Data types - Reading Input - Writing Output - Loops - If/else - Logical operators - Functions - Basic Recursion (a function calling itself) - Arrays - Multidimensional Arrays ## Resources for Learning How to Code [Sololearn](https://www.sololearn.com/) has courses on C++, Java, and Python. You don't have to complete the full course. - For C++, we recommend you finish Sololearn up to (but not including) "More on Classes." [[info | Pro Tip]] | You do not need to learn pointers (for now). Knowledge of structs and classes is useful but not required. ### Resources for Getting Started - [CodeSignal](https://codesignal.com/) - good place to practice basics - [IOI: Getting Started](https://ioinformatics.org/page/getting-started/14) - [Philippines OI: Prepare](https://noi.ph/prepare/) - [Schedule for Beginners](https://www.quora.com/What-is-a-good-schedule-to-follow-for-becoming-better-at-competitive-programming-for-beginners) - [E869120 Tutorial](http://codeforces.com/blog/entry/53341)