Nuova ricerca

Maurizio VINCINI

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Fondamenti di Informatica II e Lab. - IEI

Ingegneria Informatica (MO) (Offerta formativa 2020)

Obiettivi formativi

Introdurre i concetti di base della programmazione strutturata, gli aspetti metodologici della programmazione la correttezza e la complessità degli algoritmi.

Prerequisiti

Aver frequentato l'insegnamento di Fondamenti di Informatica I e Lab.

Programma del corso

Il corso mira a far acquisire agli studenti i concetti, gli algoritmi e le metodologie della programmazione strutturata nel linguaggio C.
Record di attivazione
Record di attivazione delle funzioni, memoria stack, regole di visibilità e durata delle variabili e delle funzioni, variabili globali e statiche. Allocazione dinamica della memoria.
Organizzazione modulare dei programmi.
Ricorsione
Algoritmi ricorsivi, funzioni ricorsive.
Algoritmi di BackTrack.
Tipi di dato strutturati.
Complessità
Complessità degli algoritmi, comportamento asintotico, valutazione della complessità dei programmi.
Algoritmi Greedy.
Algoritmi di ricerca e ordinamento.
Tipi di dato astratto. Liste, pile, code heap. Alberi binari: inserimento, ricerca, cancellazione.
File
Gestione dei file di testo e binari.
Memorizzazione liste e alberi

Esercitazioni
Il corso prevede esercitazioni in aula ed in laboratorio su tutte le tematiche svolte a lezione. Inoltre, verranno approfonditi gli argomenti riguardanti il progetto e realizzazione di programmi strutturati in linguaggio C mediante esercitazioni assistite presso il laboratorio didattico.

Metodi didattici

La materia viene insegnata attraverso lezionie che verranno svolte a distanza in modo asincrono (registrate) a causa della situazione sanitaria COVID19 e si avvalgono dell’uso di slide rese disponibili agli studenti mediante la piattaforma dolly e di lezioni pratiche in laboratorio. Per ogni argomento trattato vengono inoltre resi disponibili attraverso la piattaforma dolly alcuni esempi di programmi da realizzare in laboratorio.

Testi di riferimento

A. Bellini, A. Guidi, "Linguaggio C", McGraw-Hill, quarta edizione, 2008.
Kerningam, Ritche "Il linguaggio C " seconda edizione. Pearson - Prentice Hall.T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi e strutture dati 2/ed", McGraw-Hill, 2005, ISBN: 9788838662515.

Verifica dell'apprendimento

L’apprendimento viene verificato attraverso una prova scritta ed una pratica di laboratorio. Nella prova scritta lo studente deve risolvere alcuni esercizi aperti che prevedono la definizione di algoritmi in linguaggio C. Nella prova di laboratorio lo studente deve dimostrare la capacità di realizzare un programma funzionante in linguaggio C.

Risultati attesi

1. Conoscenza e comprensione:
Le lezioni frontali forniranno allo studente la capacità di conoscere e comprendere i fondamenti dell'informatica e in particolare della programmazione imperativa e sequenziale.

2. Capacità di applicare conoscenza e comprensione
Tramite le lezioni teoriche e pratiche in laboratorio lo studente saprà definire algoritmi sequenziali e avere la capacità di sviluppare e verificare programmi utilizzando il linguaggio di programmazione C.

3. Autonomia di giudizio
Lo studente sarà in grado di progettare e realizzare un'applicazione informatica complessa in linguaggio C.

4. Abilità comunicative
Lo studente saprà comunicare idee, problemi e soluzioni informatiche complesse.

5. Capacità di apprendimento
Lo studente disporrà di una conoscenza di base tale da permettergli approfondimenti successivi sui temi legati alla programmazione software ed all'analisi delle strutture dati complesse.