Get really good at programming.

Develop fluency in 74 programming languages with our unique blend of learning, practice and mentoring. Exercism is fun, effective and 100% free, forever.

Exercism

is an independent, community funded, not-for-profit organisation.

Learn more

Over 6,857 coding exercises.
From "Allergies" to "Zebra Puzzle".


Learn by doing. Get better at programming through fun coding exercises that build your understanding of concepts.

Allergies

Allergies

Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.

Python TypeScript C++
+40 more
Queen Attack

Queen Attack

Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other

Python C Java
+60 more
Zebra Puzzle

Zebra Puzzle

Which of the residents drinks water? Who owns the zebra? Can you solve the Zebra Puzzle with code?

PHP C++ Bash
+70 more

Write code locally, in your own space

Exercism is primarily built as a CLI-first tool. Download and submit exercises right from your terminal.

Use the Exercism in-browser editor

Don't spend hours installing a language locally just to try it out. We support all 74 of our programming languages in our in-browser editor.

Get automated analysis on your code

Not quite sure how well you've done? We run automatic analysis on your solutions to give you quick feedback and points of improvement.

Deepen your knowledge with human mentoring, for free.


Discover new and exciting ways to approach an exercise by getting mentored on it. Become more familiar with the conventions, idioms and opinions of a particular programming language.

Why mentoring?


You don't know what you don't know

When learning a new language, the hardest part is not being aware of the gaps in your knowledge. Our mentors can look at your code and immediately see the ideas you're not familiar with and give you a level-up by unlocking new knowledge.

Learn language-specific conventions

Becoming fluent in a language is more than being able to write code in it - it's about being able to think in that language. Our mentors will help guide you to how to reshape your thinking to write idiomatic code.

Learning with others is fun

Getting feedback from real people is an amazingly exciting way to learn. And becoming a mentor and giving feedback yourself is an even bigger step forward. So complete the circle - be mentored and mentor 🎉