Books

Book coverTitle and linkBook coverTitle and link
Teoria della complessità computazionaleTeoria della Complessità Computazionale

Questo volume ha un carattere introduttivo e si propone di presentare al lettore un quadro sistematico dei risultati più significativi ottenuti finora nel campo della teoria della complessità computazionale.
L'approccio seguito consiste nel definire nei capitoli iniziali gli strumenti con i quali affrontare lo studio per poi passare ad esaminare in dettaglio le caratteristiche delle classi di complessità più importanti. Gli ultimi capitoli sono dedicati allo studio di classi di complessità probabilistiche ed a quello della complessità del calcolo parallelo.
Introduction to the Theory of ComplexityIntroduction to the Theory of Complexity

From the beginning of 2006 the authors have decided to get back the rights of the book and to make it freely available on the web. The electronic version is identical to the original printed version (apart, of course, from the cover pages), but it also includes the errata corrige collected since the first printing of the book.
Complexity and approximationComplexity and approximation. Combinatorial optimization problems and their approximability properties

The area concerned with the design of approximation algorithms and with the study of the approximability properties of NP-hard combinatorial optimization problems has been and still is one of the most active in computer science. Its scientific developments have considerably enriched our understanding of problem complexity and our ability to cope with difficult applications. This textbook also features a compendium documenting the results on the approximability of more than 200 problems; thus the book is also a source of reference for professionals applying advanced optimization and approximation techniques in practice.
Gocce di JavaGocce di Java. Un'introduzione alla programmazione procedurale ed orientata agli oggetti

Quando si sceglie il primo linguaggio di programmazione da insegnare ad uno studente, si devono valutare diversi aspetti pedagogici come la semplicità del linguaggio, il supporto fornito a specifici paradigmi di programmazione ed il valore pratico del linguaggio nel mondo reale. Questo volume introduce il lettore al linguaggio di programmazione Java seguendo un approccio "programmazione procedurale prima di programmazione orientata agli oggetti". Il volume utilizza una nuova versione dell'applicazione "Java" che consente agli studenti di familiarizzare con la sintassi Java, senza necessariamente avere nozioni di programmazione orientata agli oggetti, e di svolgere semplici esercizi relativi allo sviluppo di metodi.
Strutture di Dati e AlgoritmiStrutture di dati e algoritmi. Progettazione, analisi e visualizzazione

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.
Problemi, algoritmi e coding. Le magie dell'informatica

Come fa il motore di ricerca a trovare l'informazione che mi serve? E la pay-tv online a propormi un film che con ogni probabilità mi piace davvero? Sembra una magia, in realtà è il risultato di algoritmi che funzionano. Un algoritmo è una ricetta: istruzioni semplici, ma basta seguirle alla lettera, per fare cose ingegnose e complesse. Trovi l'informazione che cercavi o scopri il film che, senza saperlo, desideravi vedere. Ogni algoritmo nasce per risolvere un problema. La sfida degli informatici è trovare soluzioni ingegnose ed efficienti, da esprimere come algoritmi e da tradurre poi in un linguaggio di programmazione. Il coding, «scrivere codice», vuol dire proprio questo: sapere tradurre i passi dell'algoritmo in codice, cioè nei linguaggi che i computer comprendono. E questo è il pensiero computazionale: il processo che va dalla formulazione del problema all'esecuzione del programma, attraverso la definizione dell'algoritmo.