Seleziona l'Anno Accademico:     2017/2018 2018/2019 2019/2020 2020/2021 2021/2022 2022/2023
Docente
ROBERTO TONELLI (Tit.)
Periodo
Primo Semestre 
Modalità d'Erogazione
Convenzionale 
Lingua Insegnamento
ITALIANO 



Informazioni aggiuntive

Corso Percorso CFU Durata(h)
[60/79]  INFORMATICA APPLICATA E DATA ANALYTICS [79/00 - Ord. 2021]  PERCORSO COMUNE 9 84

Obiettivi

CONOSCENZA E CAPACITÀ DI COMPRENSIONE

Il corso di Programmazione fornisce agli studenti le basi della programmazione tramite l'utilizzo di un linguaggio di programmazione nonche' la comprensione del funzionamento e dell'organizzazione di un programma. Le principali conoscenze trasmesse saranno le seguenti:
-conoscere la rappresentazione nell'ambito della programmazione C dei tipi di dati primitivi carattere, intero, reali e dei tipi di dati piu' complessi come array e strutture;
-conoscere il processo di scrittura del codice sorgente, la sua compilazione e trasformazione in codice eseguibile;
-conoscere le tecniche di base della programmazione in linguaggio C;
-conoscere l'insieme degli strumenti che si utilizzano per la programmazione;
-comprendere cosa significa programmare un calcolatore;
-utilizzare la programmazione per implementare algoritmi elementari di intelligenza artificiale.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE (Abilità)

Il corso è orientato verso le applicazioni della programmazione all'intelligenza artificiale. Gli studenti dovranno risolvere esercizi di programmazione di media complessità, saper codificare semplici algortmi di inelligenza artificiale e saper codificare ed utilizzare algoritmi di base.
Saper leggere ed interpretare programmi, di media complessità, scritti in linguaggio C e comprendere per quali scopi sono progettati, basandosi sull'interpretazione del codice e dei commenti ad esso associati. Progettare piccole applicazioni scritte in linguaggio C partendo dalle specifiche o da porzioni di codice esistente.

AUTONOMIA DI GIUDIZIO

Gli esercizi sono pensati in modo da stimolare lo sviluppo di capacità di giudizio autonomo. Gli studenti saranno in grado di scegliere gli strumenti appropriati secondo il tipo di problema.

ABILITÀ COMUNICATIVE

Gli studenti apprenderanno le basi del linguaggio tecnico proprio dell'informatica e della programmazione C.
Dovranno essere in grado di presentare e spiegare un programma in C discutendo le scelte di progettazione e implementazione.

CAPACITÀ DI APPRENDERE

Gli studenti saranno in grado di affrontare i successivi corsi che richiedano competenze di programmazione. Dovranno imparare a risolvere autonomamente esercizi e problemi di programmazione. Avranno la capacità di saper leggere e comprendere un programma non complesso scritto in C.

Prerequisiti

-Conoscenza di base, a livello utente, dell'utilizzo di un PC e di un sistema operativo.
-Buona preparazione logico matematica a livello di scuole medie superiori.
-Conoscenza di base delle operazioni elementari sui numeri.

Contenuti

Algoritmi, programmi e programmazione
Il processo di traduzione: compilazione ed interpretazione
La programmazione strutturata
Elementi sintattici del C, struttura di un programma C. Variabili: Tipi, dichiarazione, inizializazione, costanti variabili, assegnamenti e commenti.


Tipi

I tipi di base: interi, reali e carattere
La conversione di tipo
Tipi strutturati
Come costruire nuovi tipi a partire dai tipi di base


Operatori ed Espressioni

Operatori: Assegnamento (=), operatori aritmetici ( +, -, *, /, % ), operatori di assegnamento composti ( +=, -=, *=, /=, %=),
incremento e decremento (==, --), operatori relazionali, operatori logici ( !, &&, || ), operatore condizionale (? condizione ? espressione1 : espressione2).
Il processo di valutazione di un espressione.


Istruzioni

Comunicazione da console: printf, scanf, escape sequences.
Strutture di controllo.
Strutture condizionali: if - else, l'istruzione di scelta: switch - case, l'istruzione break.
Istruzioni iterative o cicli: for, while, do-while, il continue.


Funzioni

Il concetto di funzione.
Come dichiarare, definire ed invocare le funzioni
Argomenti di una funzione
Il passaggio di parametri
Dichiarazione, parametri, scopo delle variabili, parametri passati per valore e per riferimento, prototipi di funzioni, ricorsione.


Vettori

Vettori - singola dimensione. Inizializazione, dichiarazione, accesso ai valori di un vettore.
Vettori multidimensionali.


Puntatori e stringhe

Puntatore come indirizzo di memoria
Gli operatori per la manipolazione di puntatori (*, & e ->)
Letterali e variabili di tipo stringa
Operazioni sulle stringhe
Stringhe e array
Puntatori e array.

Strutture dati, gestione delle liste.

File

File I/O - aprire e chiudere un file, scrittura e lettura, fopen, fclose, fprintf, fscanf.


Organizzazione e progettazione di un programma
Variabili locali e globali, blocchi. Scope
Il preprocessore

Nozioni di base di complessità computazionale

Applicazioni della programmazione C all'Intelligenza Artificiale.
Implementazione di semplici esempi di algoritmi di Intelligenza Artificiale in linguaggio C.

Metodi Didattici

Il corso prevede un totale di 48 ore di lezioni frontali e 36 ore di laboratorio con spiegazione ed esercitazione annessa.

A inizio corso viene definito il calendario delle esercitazioni di laboratorio.

Il corso prevede la proiezione di slides, video e pagine Internet durante le lezioni sia per le lezioni teoriche che per le esercitazioni.

Si terra' conto delle difficolta' legate all'epidemia Covid019 secondo quanto segue:


"In conformità col Manifesto degli Studi per l'A.A. 2021-22, e
compatibilmente con le circostanze dovute alla situazione
pandemica, la didattica verrà erogata prevalentemente in presenza, integrata e
"aumentata" con strategie online, allo scopo di garantirne la
fruizione in modo innovativo e inclusivo.”

Le esercitazioni potranno anche essere svolte mediante forme di interazione a distanza con i supporti informatici disponibili. Sulla base delle condizioni di contesto legate alla pandemia Covid-19, potranno essere previste turnazioni e/o attività sostitutive on-line.

Verifica dell'apprendimento

L'obiettivo della prova d'esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati. L'esame consiste in una prova di laboratorio, da effettuare eventualmente sulla piattaforma Moodle, sugli argomenti trattati a lezione e sulla programmazione di una durata prevista tra le 2 e 3 ore totali.

La prova prevede una prima parte di test a risposta multipla o aperta e una parte successiva di programmazione C
per accedere alla quale e' necessario superare la prima parte relativa ai test.
Durante il semestre, a circa meta' del corso, e' prevista una prova parziale sulla parte di programma
svolta sino a quel momento.

Per sostenere l'esame ogni studente dovra' innanzitutto prenotarsi su esse3 per l'appello relativo e su moodle. La prenotazione scadra' qualche giorno prima dell'esame.

Gli studenti dovranno superare la prove con la votazione minima di 16/30. Il voto finale sara' eventualmente integrato da un colloquio orale, in accordo ai criteri riportati sotto.

Il voto finale, eventualmente dopo colloquio orale, è assegnato seguendo il seguente metodo:

Insufficiente: lo studente dimostra di non aver compreso molte delle costruzioni fondamentali della disciplina.

18-24: lo studente conosce parte degli argomenti chiesti durante l’esame; dimostra di aver capito e assimilato sufficientemente gli argomenti. Riesce parzialmente a completare i task nelle prove di laboratorio.

25-28: lo studente conosce tutti gli argomenti chiesti durante l’esame; dimostra di aver capito e assimilato bene gli argomenti; utilizza in modo corretto il linguaggio della disciplina e scrive programmi corretti. Completa i taks assegnati.

29-30: lo studente conosce molto bene tutti gli argomenti chiesti durante l’esame; utilizza in modo corretto il linguaggio; scrive programmi corretti, completi con soluzioni eleganti; è in grado di spiegare le nozioni apprese, risolve i task con completezza.

30 e lode: lo studente conosce perfettamente tutti gli argomenti chiesti durante l’esame; dimostra di aver capito e assimilato in profondità tutti gli argomenti; utilizza in modo corretto il linguaggio della disciplina; è in grado di spiegare le nozioni apprese a risolve brillantemente i task asseganti.

A seguito delle disposizioni legate all'epidemia Covid-19 tali modalità d'esame potranno essere sostituite da modalità di verifica differenti, ad esempio: lavori individuali o di gruppo (tesine), colloqui orali, prove scritte a distanza mediante ausili informatici (moodle, Teams, etc.).

Testi

Deitel, Deitel
"Il linguaggio C, fondamenti e tecniche di programmazione"
Prima edizione (Marzo 2013)
Pearson

In generale lo studente puo' utilizzare qualunque testo di programmazione C.

Materiale fornito durante il corso dal docente.

Altre Informazioni

Verranno messi a disposizione nel sito docente o sulla piattaforma Teams del corso le slides delle lezioni e in futuro i testi di esame ed eventualmente altro materiale o risorse online.


L'orario di ricevimento verra' definito insieme al calendario delle lezioni a settembre/ottobre di ogni a.a.

In linea di massima il ricevimento verra' concordato via mail con gli studenti e col tutor.

Questionario e social

Condividi su:
Impostazioni cookie