Mobiele telefoons, pinautomaten, moderne auto’s, televisies, e-readers: geen van deze apparaten zou werken zonder software. Het hart van software wordt gevormd door algoritmes: stap-voor-stap procedures om een bepaalde taak uit te voeren. Algoritmes kunnen uitgevoerd worden door computers maar ook door mensen.
Een voorbeeld: stel, je houdt twintig genummerde kaarten in je hand. Het is jouw taak om die op volgorde op een stapel te leggen: de kaart met het laagste nummer onderop en met het hoogste nummer bovenop. Een eenvoudig algoritme om deze taak uit te voeren ziet er als volgt uit. Loop langs alle kaarten in je hand om de kaart met het laagste nummer te vinden. Leg deze kaart neer als onderste kaart van de stapel. Loop vervolgens langs de overgebleven kaarten in je hand om de kaart met het een-na-laagste nummer vinden en leg deze op de kaart die je daarvoor had neergelegd. Herhaal deze procedure tot alle kaarten op de stapel liggen.
Om een algoritme door een computer uit te laten voeren, is het nodig om het te implementeren in computercode, bijvoorbeeld in een computertaal zoals Java of C++. Als de beschrijving van het algoritme nauwkeurig genoeg is, is het voor een ervaren programmeur niet moeilijk om het te implementeren. Dus, als je een bepaalde taak wil laten uitvoeren door een computer, ligt de uitdaging in het bedenken van een goed algoritme.