How do I get started?

Informatics is all about using computational thinking to design fast programs that solve complex problems. To do that, you'll of course need to learn how to code, so you can translate your ideas into programs a computer can execute!

What programming language should I learn?

Python is a good choice. It's one of the most accessible programming languages and if you're interested in getting into programming (whether you're interested in informatics or not) it's a great place to start.

There are a lot of amazing resources (free and paid) that can teach you Python, of which you can find a pretty comprehensive listing here. So many, so overwhelming! I'd suggest asking your programming friends, or your school's IT teacher for recommendations. Schools often have special deals with other institutions that let teachers and students access otherwise paywalled content for free. Ask around!

The second programming language I recommend is C++. It's by far the most popular language when it comes to informatics and competitive programming. The downside is that it's a more difficult language to pick up as it is less forgiving. If you're really dead set on getting into informatics, then I would still recommend C++.

Learn C++ and cplusplus.com are both great C++ tutorials.

The AIO supports both Python and C++, so you'll be able to participate in whichever language you choose.

Do I need to know everything about the language I chose?

No, not at all! For informatics, you only really need to know the basics:

The starter problems available on ORAC will walk you through these concepts, but it will be beneficial to have an external programming tutorial to teach them too.

What coding environment should I use?

To be a programmer, you'll need somewhere to write your code, called an Integrated Development Environment (IDE for short). Setting one up can be a bit tricky, so it's best to get a friend or teacher to help you, or to follow the instructions in the programming tutorial you chose.

It's hard for me to give you useful advice as it depends on many factors, but:

Native IDEs


Visual Studio Code (VSCode) is a great option. It is very feature rich and can look daunting, but don't worry — you won't need any of the advanced features to get started.

If you aren't allowed to install native applications (e.g. a restrictive IT policy on school devices, or you're on a Chromebook), then this isn't an option for you.

In-browser IDEs


Installing an IDE onto your computer can take a bit of time. If you're raring to get started as soon as you can, then an option that requires no installation is to use a browser IDE.

They won't be as powerful as their native counterparts, and many of these services have a limited free-tier, but they still work beautifully as a short-term solution. Replit is one popular service.

Also, if you're learning to code using an online course, they will typically provide you a coding environment, so you can just use that. You'll still want your own IDE for experimenting outside of the course though.

There's also the option of forgoing an IDE altogether, and simply using a text editor to code. Sublime and Atom (and Vim for the truly hardcore) are popular options. You will still need a way to run (and compile, if C++) your code though. OS X users have the built-in Terminal which makes things simple, but for Windows, you'll want to install either Cygwin or WSL. I recommend consulting your local programming club or IT teacher for help.

In summary

ORAC Starter problems

Phew! That was a lot to get through. With that out of the way, you're now ready to start tackling the starter problems. You can find them below: