Resources: Learning to Code
Authors: Brian Dean, Nathan Wang, Benjamin Qi
Resources for learning how to code.
Computational Problem-Solving Before Learning to Code
Even before you have mastered coding, there are good resources out there for learning about algorithms and computational problem-solving. An excellent example is the Bebras contest, with questions that make you think algorithmically but with no coding required. This contest has been highly successful overseas (with hundreds of thousands of students participating), and a USA version has recently been established. Also see CS unplugged for another set of resources that teaches computing concepts but without programming.
Learning to Code - General
There are now quite a few high-quality on-line resources available for helping you get started with coding in general (not necessarily with the same algorithmic focus as USACO). Good general lists of resources are maintained by code.org, Facebook, and IT-ology. Some of the most popular novice programming environments are graphical "block-based" languages like Scratch and AppInventor (for coding Android cell phone apps), where you write programs by dragging blocks together. Other prominent sites that help teach introductory programming are Codecademy and Khan Academy.
Learning to Code - USACO
Let us know what works (or doesn't) for you.
General
Resources | |||
---|---|---|---|
free courses for C++, Java, Python | |||
free courses for C++, Java, Python 2, some features require upgrading to pro | |||
generally ok, although CSES problemset (see "Resources") is probably a better place to start than USACO Training or Codechef |
Language references: C++, Java, Python 3.
C++
C++
Use one of the resources above or below (or find your own) to learn C++. If you use Sololearn, you don't have to complete the full course; we recommend you finish everything up to (and including) "Functions."
Resources | |||
---|---|---|---|
CPP | Good introduction. | ||
LCPP | More in-depth than the above. Detailed instructions for Visual Studio Community (Windows) and Code::Blocks (Windows, Linux) setup. | ||
PAPS | Visual Studio Code setup (Windows, Linux, Mac), examples, Kattis exercises |
Pro Tip
Pointers aren't necessary for earlier divisions. Knowledge of structs and classes is useful but not required.
Java
Python