Semplicità e chiarezza nella presentazione dei contenuti si uniscono, in questo libro, al rigore scientifico della trattazione, per dare vita a un manuale che fonde in modo sinergico l'approccio formale con quello pratico. Partendo da problemi reali, lo studente viene guidato a individuare gli schemi programmativi più adatti; una volta sviluppato il codice, ne vengono analizzate le proprietà con un taglio più astratto e matematico, al fine di distillare l'algoritmo corrispondente e studiarne la complessità computazionale. L'approccio scelto risulta inoltre estremamente motivante per gli studenti, che hanno bisogno di sperimentare per capire, e di visualizzare per padroneggiare al meglio i nuovi contenuti appena appresi.