L’obiettivo del corso è familiarizzare lo studente con la progettazione e l'implementazione di algoritmi e strutture dati. In particolare si vuole dare allo studente la capacità di produrre codice chiaro, modulare ed efficiente attraverso i seguenti passi: Analisi del problema, Individuazione di una soluzione efficiente, Stesura del codice, Documentazione delle scelte effettuate e del codice prodotto.
Dopo una breve introduzione al linguaggio di programmazione C, si procederà all'implementazione di alcune strutture dati fondamentali quali alberi, heap, code con priorità, di alcuni algoritmi di ordinamento e di alcune strutture dati avanzate come i grafi. Particolare enfasi sarà posto sull'uso dei puntatori in C, sulla diversità dell'approccio iterativo da quello ricorsivo, sull'efficienza degli algoritmi implementati.
Le lezioni sono basate su lezioni frontali ed esercitazioni pratiche in laboratorio.
1. Introduzione al Corso - Il Linguaggio C (I parte)
2. Linguaggio C – Seconda Parte
3. Ordinamento, Ricorsione e Code di Priorità
4. Esercitazione su Ricorsione e Code di Priorità
5. Stack e Code
6. Esercitazione di Laboratorio su Stack e Code
7. Implementazioni di Liste puntate
8. Esercitazione di laboratorio su Liste Puntate Semplici
9. Implementazioni di Liste Doppiamente Puntate e Circolari
10. Esercitazione di laboratorio su Liste Doppiamente puntate
12. Esercitazione di laboratorio su Alberi Binari di Ricerca
13. Alberi Binari di Ricerca. Cancellazione di un nodo
14. Esercizio di Laboratorio. Gioco su alberi
15. Grafi: Implementazione ed operazioni di base
16. Esercitazione di laboratorio: Implementazione operazioni di bas...
17. Grafi: Inserimento e Cancellazione di un nodo. Visite in ampiez...
18. Esercitazione di laboratorio: Problema del venditore Prima part...
19. Componenti fortemente connesse e alberi minimi di copertura
20. Esercitazione di laboratorio: Problema del venditore Seconda pa...
E’ ricercatore universitario in Informatica dal 2005 presso la Sezione di Informatica del Dipartimento di Scienze Fisiche dell’Università “Federico II”. L’attività di ricerca riguarda i linguaggi formali, gli aspetti formali di specifica e verifica di sistemi hardware e software, il model checking, la verifica di sistemi aperti, la teoria dei giochi, la teoria degli automi, le logiche temporali sia discrete che in tempo denso. Consegue la laurea in Scienze dell’Informazione con voto di 110/110 con lode nel 1997, presso l’Univ. di Salerno. Presso la stessa università consegue, nel Maggio 1999, il Master in Metodologie Telematico-Multimediali con il voto di 100/100 e, nel Febbraio 2003, il dottorato di Ricerca in Informatica, discutendo una tesi sulla teoria dei giochi. Durante il dottorato, Aniello Murano è Visiting Scholar presso la Rice University di Houston (TX-USA) per un anno, sotto la supervisione della Prof. M. Y. Vardi. Dal 2003 al 2004 è post-doc presso la Hebrew University di Gerusalemme sotto la supervisione della Prof. O. Kupferman. È supervisore scientifico di studenti di dottorato e di master. È autore di circa 40 lavori scientifici.
Curriculum completo