Home page di Marco Liverani

Link e riferimenti bibliografici

In questa pagina ho raccolto un insieme di riferimenti bibliografici e di link a documenti e siti web che per qualche motivo ho reputato interessanti. Potete trovare quindi i riferimenti bibliografici utili agli studenti dei miei corsi ed anche per gli studenti che stanno lavorando ad una tesi di laurea su temi relativi agli algoritmi di ottimizzazione discreta su grafi. Inoltre sono presenti i link alle pagine personali di alcuni amici e colleghi con cui collaboro o con cui ho collaborato in passato.

Riferimenti bibliografici

Testi sugli algoritmi e le strutture dati

T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduzione agli algoritmi, McGraw-Hill, 2005.
È un libro classico sugli algoritmi e le strutture dati e in questa edizione costituisce una revisione del precedente testo (Introduzione agli algoritmi) dei primi tre autori. Lo trovo sufficientemente chiaro e dotato di una impostazione didattica corretta, piuttosto rigorosa, ma leggibile, con molte figure, esempi ed esercizi. Spazia dagli algoritmi di ordinamento (introducendo le tecniche fondamentali di progettazione degli algoritmi e le prime strutture dati), per poi passare alle strutture dati più complesse (alberi, b-alberi, heap, ecc.) e ai grafi. È il testo adottato come riferimento principale per gli studenti del mio corso di Informatica 1 (IN1). [http://www.ateneonline.it/cormen/]
A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data structures and algorithms, Addison-Wesley, 1987.
È uno dei testi fondamentali della teoria degli algoritmi. Tra l'altro, per il modo con cui espone l'argomento, presentando l'algoritmo come uno strumento per operare in modo efficiente su una struttura dati progettata per rappresentare al meglio una determinata informazione, si presta molto bene ad una rilettura in chiave "programmazione ad oggetti" (pur non facendo nessun esplicito riferimento a questa metodologia di programmazione).
R.E. Tarjan, Data Structures and Network Algorithms, SIAM, 1983.
Un libricino tanto compatto quanto denso di informazioni e spunti interessanti a proposito degli algoritmi su grafi e reti di flusso. [http://books.google.it/books?id=m1rAB3uWwBwC&lpg=PP1&hl=it&pg=PP1#v=onepage&q&f=false]
F. Luccio, La struttura degli algoritmi, Bollati Boringhieri, 1982.
È un testo con un taglio "divulgativo", dotato di un rigore che non appesantisce la lettura irrigidendo il discorso. Direi che è un classico la cui lettura deve essere suggerita a chiunque si interessi seriamente allo studio e alla progettazione degli algoritmi con una attenzione sulla loro complessità computazionale. Fabrizio Luccio è il decano degli informatici universitari italiani.
M. Liverani, Qual è il problema? Metodi, strategie risolutive, algoritmi, Mimesis, 2005.
Come ho scritto nell'introduzione di questo libricino dal taglio divulgativo, affrontare la risoluzione di problemi con l'ausilio di un esecutore automatico, per esempio un calcolatore, può riservare sorprese inaspettate e difficoltà impreviste: è necessario non solo operare un cambiamento radicale nell'ottica con cui si analizza il problema, ma anche trovare una strada, necessariamente costruttiva, per giungere alla soluzione del problema in tempi ragionevoli. Il percorso proposto da questo volume prevede un approccio semplice ad alcuni di tali aspetti, approccio che permette al lettore di avvicinarsi ai principi del calcolo della complessità computazionale e a talune tecniche fondamentali per la progettazione di algoritmi. [http://www.quadernoaquadretti.it/quaderno/problema_pres.php]

Programmazione e sistema operativo UNIX

B.W. Kernighan, D.M. Ritchie, Linguaggio C, Addison Wesley, 1989.
Il libro sul C scritto dagli autori del liniguaggio, Brian Kernighan e Dennis Ritchie.
B.W. Kernighan, R. Pike, The UNIX programming environment, Prentice Hall, 1984.
Un testo fondamentale sulla piattaforma UNIX come ambiente di programmazione. Uno di quei libri di base, che per il loro approccio pulito, elegante ed essenziale, resistono al passare degli anni e all'evoluzione della tecnologia informatica. [http://en.wikipedia.org/wiki/The_Unix_Programming_Environment]
B.W. Kernighan, R. Pike, Programmazione nella pratica, Addison-Wesley, 1999.
Un libro molto interessante destinato a chi già conosce i principi della programmazione: il testo propone un insieme di principi pratici che consentono di consolidare le tecniche standard di programmazione con l'obiettivo di minimizzare a priori la possibilità di introdurre bug nel codice e di renderlo comprensibile, manutenibile e portabile. [http://www.cs.bell-labs.com/cm/cs/tpop/]
M.J. Rochkind, Advanced UNIX programming, Addison-Wesley, 2004.
Un classico della programmazione in C in ambiente UNIX. Vengono forniti dettagli sulle chiamate di sistem, input/output avanzato su terminale e su file, comunicazione tra processi, threads, networking. [http://www.basepath.com/aup/toc.htm]
H. Schildt, C - La guida completa, McGraw-Hill, 2000.
Un libro piuttosto completo sul linguaggio C, utile per chi deve iniziare ad utilizzare il linguaggio. [http://www.informatica.mcgraw-hill.it/catLibro.asp?item_id=385]
R. Sedgewick, Algoritmi in C, Addison-Wesley, 2002.
Un libro che affronta lo studio e l'analisi di alcuni algoritmi fondamentali (sorting, searching, algoritmi su grafi) dal punto di vista dell'implementazione e della codifica efficiente in linguaggio C. [http://www.awprofessional.com/title/0201756080]
M. Liverani, Programmare in C, Seconda Edizione, Editrice Esculapio, 2013.
Il libro propone un percorso didattico che, procedendo attraverso esempi, esercizi e problemi di difficoltà crescente, presenta gli elementi fondamentali del linguaggio di programmazione C e al tempo stesso si sofferma ad analizzare gli aspetti algoritmici e di efficienza computazionale che conducono alla progettazione di soluzioni efficaci ed eleganti. Vengono anche presentati alcuni degli algoritmi classici per l'ordinamento di array e la visita di grafi. [http://www.editrice-esculapio.com/liverani-programmare-in-c/]

Teoria dei grafi e matematica discreta

R. Diestel, Graph Theory, Springer, 2000.
Un testo piuttosto aggiornato sulla teoria dei grafi. È disponibile anche una versione elettronica in formato PDF del libro sulla home page di Diestel. [http://www.math.uni-hamburg.de/home/diestel/books/graph.theory/]
A. Brandstädt, Van Bang Le, J.P. Spinrad, Graph classes - A survey, SIAM, 1999.
Una raccolta molto completa di definizioni, proprietà e teoremi relativi a diverse classi di grafi. Un utilissimo manuale di consultazione. [http://www.ec-securehost.com/SIAM/DT03.html]
A. Gibbons, Algorithmic graph theory, Cambridge University Press, 1999.
Un libro che coniuga la presentazione di diversi aspetti della teoria dei grafi con la descrizione di alcuni algoritmi per la soluzione di problemi classici sui grafi. [http://www.cambridge.org/catalogue/catalogue.asp?isbn=0521288819]
O. D'Antona, Introduzione alla Matematica Discreta, Apogeo, 1999.
Un libro molto carino che presenta alcuni aspetti fondamentali della matematica discreta in modo gradevole e comprensibile.

Testi generali e divulgativi

M. Frixione, D. Palladino, Funzioni, macchine, algoritmi, Carocci, 2004.
Un testo fondamentale per chi si interessa di algoritmi, di complessità computazionale e più in generale dei fondamenti dell'informatica e della calcolabilità. Il libro è facilmente accessibile a chi abbia un minimo di dimestichezza con la teoria degli algoritmi e con le notazioni della matematica e della logica. Tratta in modo estremamente piano, ma preciso e non ambiguo, gli aspetti fondamentali della teoria delle funzioni ricorsive e della calcolabilità, le macchine di Turing e la decidibilità di problemi. [http://www.dif.unige.it/epi/hp/frixione/FP.htm]
R. Courant, H. Robbins, Che cos'è la Matematica?, Universale scientifica Boringhieri, 1971.
Fornisce una panoramica anche piuttosto approfondita sui diversi aspetti della Matematica, dalla costruzione degli insiemi numerici all'algebra, dalla geometria alla topologia, dalla teoria delle funzioni fino al calcolo differenziale. D'altra parte Herbert Courant non ha bisogno di presentazioni... [http://www.bollatiboringhieri.it/scheda.php?codice=9788833912004]
G. Spirito, Matematica senza numeri, Newton & Compton Editori, 2004.
Giuliano Spirito è un esperto di didattica della matematica e in questo piccolo libro di taglio divulgativo molto gradevole ed accessibile, fornisce un'introduzione alla teoria degli insiemi, alle basi della logica matematica, alle grammatiche e agli automi.
E. Nagel, J.R. Newman, La prova di Gödel, Universale Bollati Boringhieri, 2000.
Una presentazione di taglio divulgativo, ma rigorosa, della dimostrazione dei teoremi di Kurt Gödel. [http://www.bollatiboringhieri.it/scheda.php?codice=9788833903095]
J.L. Casti, W. DePauli, Gödel - L'eccentrica vita di un genio, Raffaello Cortina Editore, 2001.
Una biografia su Kurt Gödel e una introduzione divulgativa alle sue teorie. [http://www.raffaellocortina.it/catalogo_scheda.asp?idlibro=715]
K. Devlin, I problemi del millennio. I sette enigmi matematici irrisolti del nostro tempo, Longanesi, 2004.
Descrizione di taglio divulgativo dei problemi sulla cui soluzione il Clay Mathematics Institute ha posto una "taglia" di un milione di dollari. [http://www.stanford.edu/~kdevlin/]
A. Doxiadis, Zio Petros e la congettura di Goldbach, Bompiani, 2001.
Un romanzo straordinario, una specie di thriller matematico, molto appassionante e forse in grado di avvicinare i non matematici ad alcune delle emozioni (e delle frustrazioni) di cui spesso vivono i matematici. [http://www2.polito.it/didattica/polymath/htmlS/info/BIBLIOID/Doxiadis.htm]
P. Gritzmann, R. Brandenberg, Alla ricerca della via più breve - Un'avventura matematica, Springer, 2005.
Con la scusa di un dialogo tra una giovanissima ragazza alle prese con lo studio della matematica ed un sorprendente sistema esperto installato sul suo PC, Gritzmann e Brandenberg innescano un percorso appassionante ed affascinante su alcuni dei temi più avvincenti della teoria dei grafi, della matematica discreta e della teoria degli algoritmi. Il libro, pur con una modalità di scrittura un po' naif e a tratti discutibile, presenta una serie di argomenti fondamentali in modo rigoroso, ma al tempo stesso accessibile e comprensibile per chiunque, con moltissime figure, esempi, riferimenti a risorse disponibili su Internet. Anche chi ha già una buona competenza su questi temi potrà trovare nella lettura di questo testo alcuni spunti interessanti per proporre in modo più efficace ed accattivante gli stessi argomenti nelle lezioni di un corso scolastico o universitario. [http://www.springer.com/math/book/978-88-470-1088-8]
R. Young, How computers work, Second Edition, Lotontech, 2009.
Sembrerà una domanda banale, ma quanti si sono chiesti come funzionano effettivamente i computer digitali? Ossia, al di là delle competenze di programmazione, della conoscenza delle funzionalità di un sistema operativo, scendendo più in basso, verso i transistor e i relay, ossia dentro ai “chip” che popolano l'hardware dei nostri PC e dei server più potenti, come funzionano le cose effettivamente? Questo libricino (in vendita per meno di 5 Euro, oppure disponibile on-line gratuitamente) fornisce una risposta a queste domande, in termini estremamente elementari, quasi ingenui direi, ma assai efficaci. [http://www.fastchip.net/howcomputerswork/bookbpdf.pdf]

Link e risorse disponibili sul web

Informatica e programmazione

Funzioni di libreria del linguaggio C
Una guida di riferimento alle funzioni di libreria del linguaggio C.
The GNU Operating System
La home page del progetto GNU.
GCC - GNU Compiler Collection
Home page ufficiale della suite di compilatori GNU per i linguaggi C, C++, Objective C, Java, Fortran e ADA.

Sviluppo in ambiente web

W3C - World Wide Web Consortium
La home page dell'organizzazione incaricata di coordinare la definizione degli standard per le tecnologie di base del web.
Guide to Cascading Style Sheets
Guide e riferimenti utili ai fogli di stile CSS (Cascading Style Sheets) per caratterizzare lo stile di documenti HTML.
Starting with HTML + CSS
Una introduzione "passo-passo" all'uso dei fogli di stile CSS con diversi esempi.

Pagine personali

Aurora Morgana
È la persona cui cui ho la collaborazione scientifica più duratura e proficua. Si occupa di algoritmi, strutture dati, teoria dei grafi e complessità computazionale.
Celia P. de Mello
È docente presso l'Istituto de Computacao dell'Università di Campinas (Brasile) e, insieme ad Aurora Morgana, abbiamo collaborato ad alcuni lavori sul comportamento di grafi sottoposti all'azione iterata dell'operatore clique.
Bruno Simeone
Bruno Simeone è stato uno dei massimi esperti italiani nel campo della Ricerca Operativa e degli algoritmi di ottimizzazione su grafi. Ho avuto l'opportunità di collaborare con Bruno diversi anni fa, lavorando insieme alla soluzione di un problema di partizionamento su grafi che "resisteva" da diversi anni. Bruno ci ha lasciato improvvisamente il 10/10/2010.
Marco Pedicini
Un altro "informatico" del corso di laurea in Matematica dell'Università Roma Tre. È stato ricercatore all'Istituto per le Applicazioni del Calcolo del CNR ed oggi è Professore Associato di Informatica presso il Dipartimento di Matematica e Fisica dell'Università Roma Tre.
Paolo Caressa
Matematico, informatico, studioso di filosofia, di fantascienza, di egittologia, ma soprattutto un mio grande amico e per diversi anni compagno di studi e collega di lavoro. Il suo è un sito ricco di appunti, spunti e riferimenti interessantissimi.
Natascia Piroso
Prima è stata una mia studentessa, poi una mia laureanda, poi ha collaborato con me per le esercitazioni del corso di Informatica 1 e nel frattempo ha spiccato il volo ed è andata a fare il dottorato in Informatica alla Sapienza... e ora?

Tutto il resto

Intervista a Mario Fiorentini
Un'intervista di Pietro Nastasi a Mario Fiorentini, matematico ed esponente di primo piano della Resistenza.
Author: Marco Liverani - Last modified: Friday June 05, 2015 - URI: http://www.mat.uniroma3.it/users/liverani/link.shtml