Il corso presenta una introduzione agli algoritmi, ed alle strutture dati basilari per un informatico. Fornisce le metodologie generali e gli strumenti per permettere la corretta progettazione di un algoritmo, e per stimarne la sua complessità computazionale. Il corso fornisce anche i concetti basilari di automi e di linguaggi. Il corso contiene un’introduzione al linguaggio di C++, utilizzato per l’implementazione software degli algoritmi nelle attività di Laboratorio che sono parte integrante del corso.
Conoscenza e capacità di comprensione: Lo studente deve dimostrare di conoscere e saper comprendere i fondamenti degli algoritmi e la struttura, con particolare riguardo alla loro complessità computazionale. Lo studente deve inoltre mostrare di conoscere il linguaggio di programmazione C++.
Capacità di applicare conoscenza e comprensione: Lo studente deve dimostrare di saper utilizzare la propria conoscenza acquisita per poter progettare implementare efficacemente gli algoritmi e le tecniche di programmazione studiati. Altresì, dovrà essere in grado di stimare correttamente la complessità computazionale, sia in spazio che in tempo degli algoritmi implementati.
Autonomia di giudizio: Lo studente deve essere in grado di sapere valutare in maniera autonoma le
prestazioni e l’efficacia di un algoritmo.
Abilità comunicative: Le abilità comunicative dello studente saranno sviluppate nel modo seguente. Lo studente dovrà redigere una relazione di presentazione del progetto d’esame. Altresì, dovrà essere in grado di illustrare efficacemente il lavoro svolto, in sede di esame orale.
Capacità di apprendimento: Lo studente deve essere in grado di aggiornarsi e approfondire in modo autonomo argomenti di algoritmi e strutture dati, anche accedendo ai testi disponibili nella biblioteca, o utilizzando altre modalità messe a disposizione dalla rete.