Nuova ricerca

Domenico BENEVENTANO

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Fondamenti di Informatica e Laboratorio

Ingegneria elettronica (Offerta formativa 2021)

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

Programma del corso

-----------------PRIMO SEMESTRE (6 CFU)---------------------------
ALGORITMI, PROGRAMMI, CALCOLATORI (1 CFU)
• CONCETTO DI ALGORITMO
• DIAGRAMMI DI FLUSSO
• MACCHINA DI VON NEUMANN
• 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

STRUTTURA ED ELEMENTI BASE DI UN PROGRAMMA C (1 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
• INPUT E OUTPUT

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

I DATI STRUTTURATI (1 + 1 CFU)
• VETTORI E MATRICI : IL COSTRUTTORE ARRAY
• RICERCA LINEARE
• STRINGHE

--------------------------------- SECONDO SEMESTRE (6 CFU)
• ORDINAMENTO DI UN VETTORE e RICERCA DICOTOMICA
• RECORD (strutture)
• COMPOSIZIONE DI TIPI STRUTTURATI

FUNZIONI (2 CFU)
• ASTRAZIONE DI OPERAZIONI E PROGRAMMAZIONE PER RAFFINAMENTI
• DICHIARAZIONE, DEFINIZIONE E CHIAMATA DI FUNZIONI
• PASSAGGIO DEI PARAMETRI: PER VALORE E PER RIFERIMENTO
• VISIBILITÀ E TEMPO DI VITA DEGLI IDENTIFICATORI
• RECORD DI ATTIVAZIONE
• RICORSIONE

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

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

LA NOZIONE DI PUNTATORE (1 CFU)
• IL COSTRUTTORE PUNTATORE
• OPERAZIONI SULLE VARIABILI DI TIPO PUNTATORE
• PUNTATORI ED ARRAY
• ARRAY DINAMICI : ALLOCAZIONE E DEALLOCAZIONE DI MEMORIA
• LISTE
• ALBERI (accenno alla struttura dati per fornire un esempio di ricorsione)

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 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.
Verrano forniti strumenti di comunicazione tramite social media per condividere con i docenti e con gli studenti dubbi, domande e risposte.

Testi di riferimento

Libri consigliati:
- KELLEY A., POHL I., C: Didattica e Programmazione, Pearson Addison Wesley, 4a edizione, 2004. Testo di riferimento per il linguaggio C, consigliato per un approfondimento di tale linguaggio di programmazione.
- KERNIGHAN B. W., RITCHIE D.M., Il linguaggio C, Jackson, seconda edizione, 2007.
- BELLINI, A. GUIDI, Linguaggio C - Guida alla programmazione, McGraw-Hill, 1999
- 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, prima edizione, CLUT

Verifica dell'apprendimento

L'apprendimento viene verificato attraverso una prova scritta (2 ore, con peso 8 CFU, ovvero 2/3) e una prova pratica al calcolatore (1,5 ore, con peso 4 CFU, ovvero 1/3).
La prova scritta è composta da
- 3 domande aperte per verificare gli argomenti di teoria visti nel corso. Questa parte incide circa il 20% sulla valutazione complessiva della prova scritta;
- 4 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. Questa parte incide circa il 55% sulla valutazione complessiva della prova scritta;
- 1 domanda nella quale viene fornito un programma in linguaggio C completo e di una certa complessità. 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. Questa domanda incide circa il 25% sulla valutazione complessiva della prova scritta.

La prova pratica al calcolatore richiede all'esaminando di realizzare, testare ed eseguire un programma C completo, composto da funzioni e procedure, che risolvano 3/4 punti relativi ad elaborazioni di dati forniti da input tramite file. La prova pratica lascia all’esaminando la libertà di scegliere la soluzione che più ritiene idonea, in particolare quante e quali funzioni/procedure implementare per rispondere alle specifiche del problema proposto. La prova al calcolatore ha lo scopo di verificare la capacità di applicare in pratica la conoscenza e la comprensione del linguaggio C.

Per la prova scritta non è possibile consultare appunti o altro materiale didattico di alcun tipo. Per la prova pratica non è possibile consultare appunti ma si possono consultare i manuali della Programmazione C.
Per quanto riguarda la collocazione temporale delle prove, sia la prova scritta che la prova pratica sono svolte alla fine dell’insegnamento;
Tali prove sono indipendenti tra di loro, ovvero si può sostenere la prova scritta prima o dopo aver sostenuto e superato la prova pratica. Per entrambe queste prove la modalità di restituzione dei risultati avviene ovviamente tramite pubblicazione sul sistema esse3, in un tempo massimo previsto che non supera i 10 giorni.

Sia la prova scritta che la prova pratica si intendono superate con un voto pari almeno a 16/30. La valutazione finale dell'esame è composta con una media pesata dei voti: la prova scritta vale 2/3 e la prova pratica vale 1/3. L'esame si intende superato se tale media pesata risulta almeno pari a 18/30.

La prova scritta è sostituibile da due prove intermedie: la prima viene svolta alla fine del I SEMESTRE di lezioni (Sessione d’Esame Gennaio-Febbraio) mentre la seconda prova viene svolta alla fine del II SEMESTRE di lezioni (Sessione d’Esame Giugno-Luglio). 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 dei voti delle due prove.

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.

Capacità di apprendimento: Le attività descritte consentiranno allo studente di acquisire gli strumenti metodologici per potere provvedere autonomamente al proprio aggiornamento nel campo dell’informatica e dei linguaggi di programmazione.