Nuova ricerca

ELISA FICARRA

Professore Ordinario
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Fondamenti di Informatica

Ingegneria elettronica (Offerta formativa 2023)

Obiettivi formativi

L’insegnamento si propone da un lato di introdurre gli studenti alle problematiche legate all’informatica sia dal punto di vista “culturale” che da quello tecnologico. Presenta quindi allo studente gli aspetti fondamentali dell'informatica (algoritmi, linguaggi, programmi, struttura di massima dei calcolatori) e impartisce nozioni sui fondamenti della teoria dell'informazione e dell'architettura dei calcolatori.
Inoltre si propone di insegnare i fondamenti della programmazione e l’uso di un linguaggio di programmazione per un elaboratore, il linguaggio C, quale strumento per la soluzione di problemi reali.

Prerequisiti

Nessuno

Programma del corso

ALGORITMI, PROGRAMMI, CALCOLATORI (0,5 CFU)
• IL CONCETTO DI ALGORITMO.
• DIAGRAMMI DI FLUSSO
• ESECUZIONE DEL PROGRAMMA SUL CALCOLATORE ELETTRONICO
• STRUTTURA FUNZIONALE DELLA MACCHINA HARDWARE
• CICLO DI ESECUZIONE DI UNA ISTRUZIONE
• PROGRAMMAZIONE STRUTTURATA
• COMPILAZIONE/INTERPRETAZIONE
• GRAMMATICHE E LINGUAGGI, SINTASSI E SEMANTICA

RAPPRESENTAZIONE DELL’INFORMAZIONE (0,5 CFU)
• SISTEMI DI NUMERAZIONE POSIZIONALI
• CONVERSIONE FRA BASI
• RAPPRESENTAZIONE BINARIA DI NUMERI INTERI
• RAPPRESENTAZIONE DI NUMERI REALI IN VIRGOLA MOBILE

STRUTTURA ED ELEMENTI BASE DI UN PROGRAMMA C (0,5 CFU)
• STRUTTURA DI UN PROGRAMMA C
• TIPI DI DATO E RAPPRESENTAZIONI
• COSTANTI E VARIABILI
• DEFINIZIONE E CONVERSIONE DI TIPO
• OPERATORI ARITMETICI, RELAZIONALI E LOGICI
• ESPRESSIONI E ASSEGNAMENTO

STRUTTURE DI CONTROLLO (1,5 CFU)
• ISTRUZIONE SEMPLICE E COMPOSTA
• ISTRUZIONI DI CONTROLLO : IF e SWITHC, BREAK e CONTINUE
• ISTRUZIONI RIPETITIVE : WHILE, DO WHILE e FOR
• RIPETIZIONI INNESTATE

FUNZIONI (0,5 CFU)
• ASTRAZIONE DI OPERAZIONI E PROGRAMMAZIONE PER RAFFINAMENTI
• DICHIARAZIONE, DEFINIZIONE E CHIAMATA DI FUNZIONI
• PASSAGGIO DEI PARAMETRI: PER VALORE
• VISIBILITÀ E TEMPO DI VITA DEGLI IDENTIFICATORI
• INPUT E OUTPUT
• FUNZIONI MATEMATICHE E FUNZIONI SUI CARATTERI

LA NOZIONE DI PUNTATORE (1 CFU)
• IL COSTRUTTORE PUNTATORE
• OPERAZIONI SULLE VARIABILI DI TIPO PUNTATORE
• FUNZIONI: PASSAGGIO DEI PARAMETRI PER RIFERIMENTO

I DATI STRUTTURATI (3,5 CFU)
• VETTORI E MATRICI : IL COSTRUTTORE ARRAY
• ARRAY DINAMICI : ALLOCAZIONE E DEALLOCAZIONE DI MEMORIA
• RICERCA LINEARE
• ORDINAMENTO DI UN VETTORE e RICERCA DICOTOMICA
• STRINGHE E VETTORI DI STRINGHE

LA PERSISTENZA DEI DATI (0,5 CFU)
• LA NOZIONE DI FILE
• FILE DI TESTO E FILE BINARI
• ACCESSO SEQUENZIALE E ACCESSO DIRETTO AL FILE

I DATI STRUTTURATI (0,5 CFU)
• RECORD (strutture)
• COMPOSIZIONE DI TIPI STRUTTURATI


Il corso è organizzato con una parte di laboratorio che introduce gli studenti all'uso del computer e di un sistema di sviluppo e compilazione per semplici programmi in C.

Metodi didattici

Il corso sarà erogato in presenza. Se tuttavia ci saranno delle restrizioni dovute ad emergenze sanitarie la modalità di erogazione potrà essere anche in remoto o in modalità ibrida a seconda delle direttive di ateneo.
Il corso è obbligatorio, ma la frequenza è facoltativa. L’insegnamento è erogato in italiano.
L’insegnamento avverrà attraverso lezioni frontali, esercitazioni pratiche, attività pratiche di laboratorio.
Verranno forniti strumenti di comunicazione tramite social media per condividere con i docenti e con gli studenti dubbi, domande e risposte.

Testi di riferimento

- Beneventano D, Bergamaschi S., Sartori C., Lezioni di Fondamenti di Informatica - Linguaggio di Riferimento C, Progetto Leonardo, ed. Esculapio Bologna
- Nocco S., Quer S., Guida alla programmazione in linguaggio C, Clut, 2009 (esercizi)
- Deitel Paul J., Deitel Harvey M., C. Corso completo di programmazione (4° edizione), Apogeo, 2010 (linguaggio di programmazione)
- Kernighan Brian W., Ritchie  Dennis M., Il linguaggio C. Principi di programmazione e manuale di riferimento, Prentice Hall, 2004

Verifica dell'apprendimento

L'apprendimento viene verificato attraverso una prova scritta (3 ore, con peso 9 CFU).

La prova scritta è composta da
- domande aperte per verificare gli argomenti di teoria visti nel corso. Questa parte incide circa il 15% sulla valutazione complessiva della prova scritta;
- domande in ciascuna delle quali viene richiesto all'esaminando di scrivere funzioni in linguaggio C per risolvere problemi dati; questa parte lascia all’esaminando la libertà di scegliere la soluzione che più ritiene idonea per rispondere ai requisiti dei problemi proposti consentendo quindi di verificare la capacità dello studente di applicare conoscenza e comprensione della progettazione e implementazione di un algoritmo.
- domande nelle quali vengono forniti programmi in linguaggio C. L'esaminando deve descriverne l'esecuzione passo-passo ed il risultato prodotto; Questa parte consente di verificare la capacità di comprendere programmi scritti in linguaggio C.
Queste ultime due serie di domande incidono per l’85% della valutazione complessiva della prova scritta.

Per la prova scritta non è possibile consultare appunti o altro materiale didattico di alcun tipo. Tuttavia è possibile consultare i prototipi delle funzioni C che descrivono il funzionamento delle funzioni di libreria fornite dal linguaggio. La prova verrà svolta al PC utilizzando una piattaforma fornita dal docente ed illustrata durante il corso.

La modalità di restituzione dei risultati avviene ovviamente tramite pubblicazione sul sistema esse3, in un tempo massimo previsto che non supera i 10 giorni.
L'esame si intende superato con un voto pari almeno a 18/30.

La prova scritta è sostituibile da due prove intermedie: la prima viene svolta al metà del I SEMESTRE di lezioni mentre la seconda prova viene svolta alla fine del I SEMESTRE di lezioni (Sessione d’Esame Gennaio-Febbraio). Nel caso in cui la prova scritta sia sostituita dalle due prove intermedie, la prova scritta si intende superata se entrambe le prove intermedie hanno un voto pari almeno a 16/30. Il voto della prova scritta è la media pesata dei voti delle due prove (1/3 la prima, 2/3 la seconda).

Risultati attesi

Conoscenza e capacità di comprensione: Tramite lezioni in aula, lo studente avrà solide conoscenze e capacità di comprensione degli aspetti fondamentali dell'informatica (algoritmi, linguaggi, programmi, struttura di massima dei calcolatori) e della programmazione in linguaggio ANSI C.

Capacità di applicare conoscenza e comprensione: Tramite esercitazioni in aula ed esercitazioni pratiche al computer, lo studente sarò in grado di utilizzare le funzionalità di base del linguaggio ANSI C e di applicare le conoscenze acquisite nella soluzione di classici problemi dell’informatica di base.

Autonomia di giudizio: Grazie alla risoluzione di esercizi individuali ed esercizi pratici in laboratorio, lo studente sarà in grado di valutare criticamente le scelte progettuali e implementative adottate e i risultati ottenuti.