Un algoritmo è un metodo esplicito e descrivibile con un numero finito di regole che consente di risolvere un determinato problema. Una buona soluzione algoritmica deve essere eseguibile, non ambigua e terminare in un tempo finito. Ciò significa che chiunque esegue l'algoritmo deve essere in grado di comprendere le istruzioni richieste, il risultato deve essere indipendente dal soggetto che esegue l'algoritmo e l'algoritmo deve terminare dopo un numero finito di operazioni.

Ad esempio, calcolare gli interessi di un prestito del 2% per 5 anni è un esempio di algoritmo, mentre selezionare le immagini più rilassanti tra quelle presenti in una galleria non è un algoritmo, poiché il concetto di "rilassante" può variare da persona a persona.

La complessità algoritmica rappresenta le risorse minime necessarie per risolvere un problema, nel suo caso peggiore. Ciò significa che la complessità algoritmica indica il tempo e lo spazio necessario per risolvere un problema, e può influenzare notevolmente i costi di programmazione. Un programma è una sequenza di istruzioni dettagliate che descrivono le operazioni che un computer deve eseguire per risolvere un particolare problema. Una libreria è un programma già pronto che può essere utilizzato all'interno di un altro programma per svolgere una specifica funzione.