Scuola di Medicina e Chirurgia

Università Magna Graecia di Catanzaro

Fondamenti di Informatica

Ingegneria Informatica e Biomedica

Il corso mira a fornire le basi della programmazione, applicando sia il paradigma procedurale che quello ad oggetti. Sono presentati, infine, alcuni cenni di programmazione funzionale.

Il corso fornisce le seguenti competenze:

  • Comprensione degli strumenti linguistici di base dei linguaggi di programmazione;
  • Introduzione a problemi, algoritmi e loro valutazione;
  • Introduzione al problem solving computazionale;
  • Comprensione delle nozioni di oggetto;
  • Comprensione di semplici algoritmi basati su ricorsione e sulla tecnica divide-et-impera;
  • Capacità di utilizzo di strutture ad array e stringhe;
  • Abilità di realizzare una soluzione;
  • Abilità di verificare la correttezza di un programma per la risoluzione di un problema dato;
  • Capacità di realizzare programmi e di definire semplici algoritmi risolutivi.

Competenze trasversali: Abilità nella risoluzione di problemi, in particolare attraverso lo sviluppo di algoritmi; Abilità alla collaborazione in piccoli gruppi ed alla condivisione e presentazione del lavoro svolto; Autonomia nella ricerca di librerie utili alla risoluzione di homework.

Collegamenti Veloci:
Docente:
Pietro Cinaglia

SSD:
ING-INF/05 - Sistemi di elaborazione delle informazioni

CFU:
9
Obiettivi del Corso e Risultati di apprendimento attesi

  • Conoscenza e capacità di comprensione (knowledge, and understanding)
    • Comprensione dei principi della programmazione dei calcolatori
    • Comprensione dei principi dell’architettura dei calcolatori elettronici
    • Comprensione dei principi della rappresentazione dell’informazione digitale
    • Comprensione dei principi della programmazione procedurale e ricorsiva
    • Comprensione dei principi della programmazione orientata agli oggetti

 

  • Capacità di applicare conoscenza a comprensione (applying knowledge, and understanding)
    • Capacità di utilizzo degli strumenti linguistici di base (istruzioni e tipi);
    • Capacità di utilizzo di strutture ad array e stringhe;
    • Conoscenze di base sugli aspetti object-oriented;
    • Abilità a progettare la risoluzione di problemi mediante un approccio algoritmico;
    • Abilità a realizzare una soluzione algoritmica.

 

Programma

Programma

  • Introduzione ai calcolatori

Introduzione all’Informatica La rappresentazione binaria dell’informazione: caratteri, numeri naturali, interi, reali. Algebra di Boole. Organizzazione di un computer e il modello di von Neumann. Il linguaggio macchina. Il sistema operativo. I linguaggi di programmazione ad alto livello. Compilazione e interpretazione. Le applicazioni informatiche.

  • Problemi, algoritmi e programmi

Le nozioni di problema, algoritmo ed esecutore. Risoluzione algoritmica di un problema. Correttezza ed altre proprietà degli algoritmi. Esempi di algoritmi. Cenni alla valutazione dell’efficienza degli algoritmi. Algoritmi e programmi. I concetti di variabile e tipo di dato.

  • Introduzione alla programmazione

Introduzione ai linguaggi di programmazione. Codifica di algoritmi. Struttura di un programma. Introduzione ai tipi, classi, campi e metodi. Variabili e tipi primitivi. Istruzioni semplici. Compatibilità di tipo nell’assegnazione. Strutture di controllo del flusso di elaborazione. Operatori di ingresso/uscita. Sviluppo incrementale di programmi.

  • Programmazione con array

Il costruttore di tipo array. Tipi array monodimensionali. Tipi array multidimensionali. Cenni all’allocazione dinamica della memoria e gestione dello heap. Aliasing tra variabili di tipo array. Manipolazione di array. Richiami di algebra lineare. Modellazione e gestione di vettori e matrici mediante array.

  • Tipi Avanzati

Tuple. Insiemi e Dizionari.

  • Tecniche di programmazione

Algoritmi di ricerca e ordinamento su array: la ricerca lineare, selection sort, insertion sort, bubble sort. La ricerca binaria. Metodi ricorsivi. Semplici algoritmi ricorsivi (es. calcolo della potenza di un numero, calcolo del fattoriale, etc.). Versione ricorsiva della ricerca binaria. L’algoritmo merge sort.

  • Metodi e oggetti

Introduzione all’uso di oggetti Modello di esecuzione dei metodi statici e passaggio dei parametri. Aspetti semantici e strutture di supporto all’esecuzione dei metodi statici: lo stack ed i record di attivazione. Cenni ai metodi non statici, classi ed oggetti

Stima dell’impegno orario richiesto per lo studio individuale del programma

Ore disponibili totali (CFU x 25) = 9 x 25 = 225

Articolate in:

  • ore didattica frontale = 72
  • ore studio individuale = 153

Risorse per l'apprendimento

Testo consigliato:

  • Concetti di informatica e fondamenti di Java, di Cay Horstmann. Apogeo Education, Maggioli Editore.

Altri testi:

 

  • Fondamenti di informatica: Oggetti e Java. L. Cabibbo. McGraw-Hill.

Attività di supporto

Modalità di frequenza

Le modalità sono indicate dal Regolamento didattico d’Ateneo.

 

Modalità di accertamento

Le modalità generali sono indicate nel regolamento didattico di Ateneo all’art.22 consultabile al link: http://www.unicz.it/pdf/regolamento_didattico_ateneo_dr681.pdf

La prova scritta consiste di 3 esercizi pratici di programmazione in Java, inerenti il programma svolto. I punteggi sono così ripartiti:

  • Esercizio 1: 10 punti
  • Esercizio 2: 15 punti
  • Esercizio 3: 5 punti
Dopo il superamento della prova scritta, lo studente dovrà sostenere la prova orale per verificare e completare la verifica della propria preparazione anche sulle parti del corso non interessate dalla prova scritta.
La misurazione del livello di preparazione sarà effettuata prendendo in considerazione sia la qualità della prova scritta che la padronanza di contenuti e la maturità di esposizione nella prova orale. Gli argomenti trattati saranno scelti in modo da coprire la più ampia porzione del programma possibile.

 

 

Conoscenza e comprensione argomento

Capacità di analisi e sintesi

Utilizzo di referenze

Non idoneo

Importanti carenze.

Significative inaccuratezze.

Irrilevanti. Frequenti generalizzazioni. Incapacità di sintesi.

Completamente inappropriato.

18-20

A livello soglia. Imperfezioni  evidenti.

Capacità appena sufficienti.

Appena appropriato.

21-23

Conoscenza routinaria.

E’ in grado di analisi e sintesi corrette. Argomenta in modo logico e coerente

Utilizza le referenze standard.

24-26

Conoscenza buona.

Ha buone capacità di analisi e sintesi.

Argomenti espressi coerentemente.

Utilizza le referenze standard.

27-29

Conoscenza più che buona.

Ha notevoli capacità di analisi e sintesi.

Ha approfondito gli argomenti.

30-30L

Conoscenza ottima.

Ha notevoli capacità di analisi e sintesi.

Importanti approfondimenti.