Program to zestaw instrukcji, które mówią komputerowi, jak coś zrobić. Podstawą każdego programu jest wskazanie, w jaki sposób komputer będzie odbierał dane wejściowe i zwracał dane wyjściowe.
Program rozwiązuje problemy. Jednak programy są bardzo dosłowne. To jak zawieranie umowy z dżinem. Dżin (czyli program) da ci dokładnie to, o co prosisz. Dokładnie. Błędy pojawiają się, gdy programista czyni założenia dotyczące tego, co powinno się wydarzyć, zamiast precyzyjnie opisać, jakie dane wejściowe mogą zostać odebrane i jakie dane wyjściowe zostaną uzyskane.