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, utilizzando come riferimento il linguaggio Python, 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 del linguaggio Python;

  • 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 Hiram Guzzi
hguzzi@unicz.it
0961 3694148
Edificio Bioscienze Stanza: IV Livello
Martedi 16-18 e su appuntamento via Google Meet

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

CFU:
9
Obiettivi del Corso e Risultati di apprendimento attesi

  1. Conoscenza e capacità di comprensione (knowledge and understanding)

  2. comprensione dei principi della programmazione dei calcolatori

  3. comprensione dei principi dell’architettura dei calcolatori elettronici

  4. comprensione dei principi della rappresentazione dell’informazione digitale

  5. comprensione dei principi della programmazione procedurale e ricorsiva

  6. comprensione dei principi della programmazione orientata agli oggetti

 

 

  1. Capacità di applicare conoscenza a comprensione (applying knowledge and understanding)

  • capacità di utilizzo degli strumenti linguistici di base del linguaggio Python (istruzioni e tipi)

  • capacità di utilizzo di strutture ad array e stringhe

  • conoscenze di base sugli aspetti object-oriented di Python

  • abilità a progettare la risoluzione di problemi mediante un approccio algoritmico

  • abilità a realizzare una soluzione algoritmica in linguaggio Python

  1. )

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 in Python

Il linguaggio Python. Codifica di algoritmi in programmi Python. 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 di Python

Tuple. Insiemi e Dizionari.

Tecniche di programmazione (lezione: 6 ore, esercitazione: 2 ore)

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 in Python(lezione: 9 ore, esercitazione: 6 ore)

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

153 ore (corrispondenti a 9 CFU)

Risorse per l'apprendimento

Attività di supporto

Concetti di informatica e fondamenti di Python . C Horstmann Apogeo Editore II Edizione

  • Dispense del Corso.

 

Altro materiale didattico

diapositive e dispense scaricabili dal sito

Modalità di frequenza

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

Integrare con le modalità di rilevazione della presenza.

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

 

 

L’esame finale sarà svolto in forma Scritta

I criteri sulla base dei quali sarà giudicato lo studente sono:

Saranno utilizzati i seguenti criteri per la valutazione:

 

Gli esercizi della prova scritta sono progettati in modo da poter valutare che lo studente sia in grado di comprendere un programma scritto in Python, di risolvere in modo algoritmico semplici problemi e di implementare tali algoritmi nel linguaggio Python. Le domande della prova orale permettono di complementare la verifica dei risultati di apprendimento previsti, quali le competenze sui principi dell’architettura dei calcolatori o la scelta dell’algoritmo di appropriato per la soluzione di un problema noto.

 

Saranno proposti tre esercizi, ad ogni esercizio sarà attribuito un voto massimo di 10.

APPENDICE

CORSO INTEGRATO Fondamenti di Informatica

MODULO ____________________________________

CFU: 9 CFU



RISULTATI ATTESI

A) Conoscenza e capacità di comprensione

ATTIVITA

ORE LEZIONE

ORE STUD INDIV.

  1. comprensione dei principi della programmazione dei calcolatori

8

8

  1. comprensione dei principi dell’architettura dei calcolatori elettronici

8

8

  1. comprensione dei principi della rappresentazione dell’informazione digitale

8

8

  1. comprensione dei principi della programmazione procedurale e ricorsiva

24

24

  1. comprensione dei principi della programmazione orientata agli oggetti

 

24

24

TOTALE

72

72



B) Capacità di applicare conoscenza e comprensione

ATTIVITA’)

ORE



  • capacità di utilizzo degli strumenti linguistici di base del linguaggio Python (istruzioni e tipi)

  • capacità di utilizzo di strutture ad array e stringhe

  • conoscenze di base sugli aspetti object-oriented di Python

  • abilità a progettare la risoluzione di problemi mediante un approccio algoritmico

  • abilità a realizzare una soluzione algoritmica in linguaggio Python

 

 

 

 

TOTALE

81

C) Autonomia di giudizio

 

D) Abilità comunicative



COERENZA TRA CFU e CARICO DIDATTICO:

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

Articolate in

ore didattica frontale = 72

ore studio individuale = 153