CdSFISICA
Codice366BB
CFU6
PeriodoSecondo semestre
LinguaItaliano
Moduli | Settore/i | Tipo | Ore | Docente/i | |
INFORMATICA CON LABORATORIO | FIS/01 | LEZIONI | 48 |
|
Introdurre algoritmi (base) e strutture dati per risolvere problemi efficienti in tempo e/o spazio. Saranno trattate anche tecniche per valutare la complessita' degli algoritmi e dei problemi. Infine, queste tecniche saranno sperimentate mediante implementazione nel linguaggio C++ e altre esperienze di laboratorio.
The goal is to introduce (basic) algorithms and data structures to solve problems in efficient time and/or space. We will also deal with techniques for evaluating the complexity of algorithms and problems. Finally, we will experiment these algorithmic techniques by implementing some of them using the C++ language and other hands-on in the laboratory.
Le capacità acquisite dallo studente sui temi trattati durante il corso e sulla loro implementazione verranno valutate mediante:
- Esame orale finale
- Esame scritto finale
- Prova pratica di laboratorio
The student will be assessed on her/his demonstrated ability to discuss and put into practice the main topics presented during the course.
Methods:
- Final oral exam
- Final written exam
- Final laboratory practical demonstration
Capacità di base sull'utilizzo di strutture dati, e sulla comprensione e lo sviluppo di algoritmi efficienti in tempo e/o spazio.
Basic skills on algorithm and data structure design and time/space complexity evaluation.
Esame scritto e orale.
Via project and oral exams.
Gli studenti saranno in grado di valutare l'efficienze degli algoritmi prima della loro implementazione, direttamente dalla loro progettazione. Conoscenza di alcuni problemi difficili, la cui progettazione può impattare sulla implamentazione.
Students will be able to evaluate performance of basic algorithms before their implementation, directly from their design. Know some difficult problems and which algorithmic design choices can impact positively or negatively the algorithm implementation.
Esame scritto e orale.
Via project and oral exams.
Basi di matematica.
Basics of Mathematics.
Lezioni frontali.
Attivita' di apprendimento:
- partecipare alle lezioni
- partecipare alle discussioni
- studio individuale
- lavoro in laboratorio
Frequenza consigliata.
Metodi di insegnamento:
- Lezioni
- Laboratorio
Delivery: face to face
Learning activities:
- attending lectures
- participation in discussions
- individual study
- laboratory work
Attendance: Advised
Teaching methods:
- Lectures
- Laboratory
Lezioni frontali:
Modello di calcolo di von Neumann e relazione con i sistemi moderni; rappresentazione dei dati; progettazione di software e complessità di calcolo in tale modello. Algoritmi di ordinamento e metodologia divide et impera (ricorsiva) per moltiplicazione veloce e coppia di punti più vicina. Strutture di dati per la ricerca (hashing e alberi binari di ricerca). Grafi: modellazione dei dati e risoluzione di problemi computazionali. Grandi moli di dati: rassegna di alcuni cenni su algoritmi paralleli, distribuiti e per memoria esterna. NP-completezza e limiti alla calcolabilità. Altre tipologie di algoritmi.
Laboratorio:
Installazione Linux. Strumenti lato utente: bash shell, file system, compilatore g++ (debugger?), git. Introduzione alla programmazione in C/C++. Tecniche di risoluzione per problemi computazionali visti a lezione. Descrizione del progetto finale da portare all’esame.
Lectures:
Von Neumann computing model and its relationship with modern systems; data representation; software design and computational complexity in this model. Sorting algorithms and divide and conquer methodology (recursive) for fast multiplication and closest pair of points. Data structures for search (hashing and binary search trees). Graphs: data modeling and computational problem solving. Big data: overview of some notes on parallel, distributed, and external memory algorithms NP-completeness and limits to computability. Other types of algorithms.
Laboratory:
Linux Installation. User-side tools: bash shell, file system, g++ compiler (debugger?), git. Introduction to programming in C/C++. Problem-solving techniques for computational problems seen in class. Description of the final project to be presented at the exam.
da definire
to be announced