PrevNext

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
CPPGood introduction.
LCPPMore in-depth than the above. Detailed instructions for Visual Studio Community (Windows) and Code::Blocks (Windows, Linux) setup.
PAPSVisual 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

Give Us Feedback on Resources: Learning to Code!

Module Progress:

PrevNext