Este cunoscut faptul ca rezolvarea unei probleme presupune in principal trei etape: I. Analiza problemei, II. Proiectarea solutiei si III. Implementarea si testarea solutiei in practica. In functie de gradul de generalitate a analizei efectuate, in a doua etapa se intilnesc doua situatii: proiectarea unei solutii particulare, valabila doar pentru acea problema, si proiectarea unei solutii generale, valabila pentru orice instantiere a acelei probleme (solutia generalizata).
In timp ce solutia particulara este valabila doar pentru o instanta a problemei, solutia generala este independenta de parametrii problemei si ofera o metoda generala de rezolvare a problemei. Astfel, solutionarea imediata a ecuatiei x3+1=0 este particulara fata de solutionarea ecuatiei generalizate ax3+bx2+c=0.
Notiunea de algoritm si cea de program. Atunci cind metoda generala de rezolvare a unei probleme este prezentata precis, pe pasi ce se efectueaza intr-o ordine bine precizata si care conduc in timp finit la solutia oricarei instantieri a problemei, vorbim de algoritmul de rezolvare a problemei. De exemplu, algoritmul de determinare a unei solutii reale a ecuatiei polinomiale P(x)=0, cu o aproximare ? data, prin metoda tangentei.
Avantajul major al proiectarii unui algoritm de solutionare a problemei este dat de faptul ca efortul de rezolvare poate fi transferat unei masini automate (calculator) sub forma programului executabil ce implementeaza algoritmul general de solutionare.
Implementarea algoritmului general de solutionare a problemei intr-un program pe calculator permite o importanta economie prin faptul ca efortul major de analiza si proiectare a solutiei a fost efectuat o singura data iar rezolvarea problemei se reduce la efortul foarte redus de executare (rulare) a programului cu ajutorul calculatorului pentru fiecare instanta diferita a problemei.