Algie
TDD-based algorithm training exercices

Motivations behind the project

Teach someone algorithmic I needed to teach a student algorithm and best practices, and I found that a simple Github project is the perfect tool. He/she can ask for a Pull Request per function, that teacher can then review and comment. That's a classic, but efficient workflow for teaching.

Daily training for everybody I tried to create a very easy onboarding for junior developers. No subscription, zero tool required. If you know how to open a web page in a browser and write some standard JS function, that's enough. However, experienced developers should find it interesting enough : exercices are sorted into difficulty order, so just skip the first exercices if it's too easy, and code where it begins to be interesting.

Wild examples... Most of the time, exercices are extracted from encountered situations on real web project. Sometimes, spec are left a litlle bit ambiguous to encourage the student to justify and specify weird cases by himself/herself, as it happen in the wild.

...but standard problems There is nothing related to JavaScript traps or tricks, all problems mostly deal with standard types you will find in most langages (String, Hash, Array, etc), that can be solved by classic primitives (map, reduce, filter, etc). Thus, you can reuse the specs to train in other langages.

How to use

  1. Download or clone repository
  2. Open spec.html
  3. Modify spec/AlgieSpec.js
  4. Refresh spec.html in the browser
  5. Repeat from step 2 until all tests pass

How to solve algorithmic problems

About practice

Everyday practice is a good thing. (From codekata.com)

What makes a good practice session? You need time without interruptions, and a simple thing you want to try. You need to try it as many times as it takes, and be comfortable making mistakes. You need to look for feedback each time so you can work to improve. There needs to be no pressure: this is why it is hard to practice in a project environment. it helps to keep it fun: make small steps forward when you can. Finally, you’ll recognize a good practice session because you’ll came out of it knowing more than when you went in.