The most popular languages that USACO supports are [C++11](https://en.wikipedia.org/wiki/C%2B%2B), [Java](https://en.wikipedia.org/wiki/Java_(programming_language)), and [Python 3](https://en.wikipedia.org/wiki/Python_(programming_language)). In general, we recommend the following:
- If you already know one of these languages, just use it.
- If you know multiple languages, we recommend you pick C++ over Java, and Java over Python.
- For Bronze, any language will do.
- For Silver, Gold, and Platinum, Python is not recommended.
Keep in mind that it's easy to switch languages down the road. Don't get caught up on which language to choose. Just pick the one you feel most comfortable with!
### Language References
All of these are provided at the IOI aside from the additional C++ reference.
- [C++](https://en.cppreference.com/w/)
- [Additional C++ Reference](http://www.cplusplus.com/)
- If you do not meet these prerequisites, see the links 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.
<resourcesource="CodeSignal"title="CodeSignal"url="https://codesignal.com/">can practice basics with "Arcade," "Interview Practice"</resource>
<resourcesource="Philippines OI"title="Prepare"url="https://noi.ph/prepare/">lots of links!</resource>
<resourcesource="IOI"title="Getting Started"url="https://ioinformatics.org/page/getting-started/14">not so up to date</resource>
<resourcesource="Quora"title="Joshua Pan - Schedule for Beginners"url="https://www.quora.com/What-is-a-good-schedule-to-follow-for-becoming-better-at-competitive-programming-for-beginners">generally good, although CSES (see resources) is definitely a better place to start than USACO Training or Codechef</resource>