Nuova ricerca

Domenico BENEVENTANO

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Fondamenti di Informatica e Laboratorio

Ingegneria elettronica (Offerta formativa 2020)

Obiettivi formativi

Presentare allo studente gli aspetti fondamentali dell'informatica (algoritmi, linguaggi, programmi, struttura di massima dei calcolatori). Impartire nozioni sui fondamenti della teoria dell'informazione e dell'architettura dei calcolatori. Impartire i fondamenti della programmazione, sapere programmare in linguaggio C.

Prerequisiti

Nessuno

Programma del corso

Gli argomenti principali del corso sono:
- introduzione: cos'e' un calcolatore - macchina di Von Neumann - rappresentazione dell'informazione - numeri interi, reali (ieee-754), char, boole - memorizzazione dei dati al calcolatore - ciclo delle istruzioni - il concetto di algoritmo - diagrammi di flusso - macchine e linguaggi - compilazione/interpretazione
- il linguaggio c: struttura di un programma c - tipi di dato fondamentali - variabili e costanti - operatore condizionale - operatori aritmetici, relazionali e logici - conversione di tipi - generalità su input e output
- strutture di controllo: istruzione semplice e composta - istruzione if else - istruzioni ripetitive: while, do while e for - istruzioni goto, break e continue - istruzione switch --ripetizioni innestate
- dati strutturati: vettori monodimensionali - puntatori e aritmetica dei puntatori - stringhe - array multidimensionali - cenni di complessita' computazionale - ricerca lineare e dicotomica - record - composizione di tipi strutturati
- funzioni: astrazione di operazioni - funzioni: definizione, chiamata e dichiarazione - procedure - record di attivazione - regole di visibilita' - array, stringhe, record e funzioni come parametri - passaggio per valore e per riferimento - concetto di ricorsione e definizioni
- liste e ordinamento di vettori: il concetto di lista - rappresentazione statica - rappresentazione collegata mediante puntatori - algoritmi di ordinamento di un vettore: selection sort, bubble sort, insert sort, quick sort e merge sort
- file in C: il concetto di file - file di testo e file binari - lettura/scrittura sequenziale - accesso diretto ai file

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

Lezioni frontali, esercitazioni pratiche, attività pratiche di laboratorio.

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

Verifica dell'apprendimento

L'apprendimento viene verificato attraverso una prova scritta (peso 8 CFU, ovvero 2/3) e una prova pratica al calcolatore comprensiva di discussione orale (peso 4 CFU, ovvero 1/3). Le prove sono svolte con MODALITA’ A DISTANZA.
La prova scritta è composta da
- prima parte (20 minuti - incide circa 25 % sulla valutazione), nella quale viene richiesto all'esaminando di scrivere una funzione in linguaggio C per risolvere uno specifico problema; questa parte consente di verificare la capacità di applicare specifiche conoscenze acquisite durante il corso (iterazione e ricorsione).

- seconda parte (20 minuti - incide circa 25 % sulla valutazione), nella quale viene fornito un programma, completo e di una certa complessità, e l'esaminando deve descriverne la sua esecuzione passo-passo ed il risultato prodotto; questa parte consente di verificare la conoscenza e la capacità di comprensione di programmi scritti in linguaggio C

- terza parte (40 minuti - incide circa 25 % sulla valutazione), nella quale viene richiesto all'esaminando di scrivere alcune funzioni e/o procedure in linguaggio C per risolvere problemi dati; questa parte lascia all’esaminando la libertà di scegliere la soluzione, consentendo quindi di verificare la capacità di applicare conoscenza e comprensione

La prova pratica al calcolatore, di durata 35 minuti, richiede all'esaminando di realizzare, testare ed eseguire un programma C completo, per risolvere due domande ciascuna relativa ad elaborazione dati forniti da input tramite file. La prova pratica lascia all’esaminando la libertà di scegliere la soluzione che più si 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. La prova pratica al calcolatore si conclude con una discussione orale in cui all’esaminando viene chiesto di commentare il programma svolto, di effettuare eventuali modifiche e di rispondere anche a domande sulla parte nozionistica del corso.

Risultati attesi

Conoscenza e capacità di comprensione
-------------------------------------
Le lezioni frontali forniranno allo studente la capacità di conoscere e comprendere i fondamenti dell'informatica e in particolare della programmazione imperativa e strutturata e acquisisce la capacità di comprendere programmi scritti in linguaggio C.


Capacità di applicare conoscenza e comprensione
-----------------------------------------------
Tramite le esercitazioni, in particolare quelle pratiche al computer, lo studente è in grado di definire algoritmi e di sviluppare e verificare programmi utilizzando il linguaggio di programmazione C.


Autonomia di giudizio
---------------------
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, consentendo di maturare una autonomia di scelta della soluzione più opportuna.

Abilità comunicative
--------------------
Lo studente saprà comunicare idee, problemi e soluzioni informatiche di base e padroneggiare una terminologia accurata e propria dei linguaggi di programmazione

Capacità di apprendimento
-------------------------
Le attività descritte consentono allo studente di approfondire le nozioni apprese per provvedere autonomamente al proprio aggiornamento