Programmazione Python e AI-Assisted coding

Obiettivi formativi e Competenze in uscita

L’insegnamento fornisce le basi dell’informatica e della programmazione, con particolare riferimento allo sviluppo di programmi in linguaggio Python. Al termine del corso lo studente sarà in grado di:

  • comprendere i principi fondamentali della programmazione procedurale.

  • analizzare problemi semplici e formularne una soluzione algoritmica.

  • progettare e sviluppare programmi Python di piccole e medie dimensioni.

  • utilizzare strutture di controllo, strutture dati di base e funzioni.

  • testare e correggere programmi Python, interpretando messaggi di errore e risultati di esecuzione.

  • gestire in modo corretto le dipendenze di un progetto Python. 

  • comprendere i sistemi di AI-Assisted coding per produrre efficientemente e analizzare codice.

Prerequisiti

Non sono richieste conoscenze informatiche pregresse. Sono utili conoscenze di base di matematica e familiarità con l’uso del computer.

Contenuti

  • Concetti introduttivi di informatica e programmazione: nozione di algoritmo, la Macchina di Von Neumann e la programmazione strutturata.

  • Linguaggio Python: sintassi di base e ambiente di sviluppo.

  • Tipi di dato fondamentali (numeri, stringhe, booleani).

  • Strutture di controllo: selezione e iterazione.

  • Strutture dati di base (liste, tuple, dizionari).

  • Funzioni e modularità.

  • Input/output e gestione dei file.

  • Debugging e testing di semplici programmi.

  • Buone pratiche di programmazione per la documentazione e leggibilità del codice.

  • Utilizzo del package manager pip per l’installazione di moduli (librerie).

  • Operazioni su vettori e matrici

  • Creazione di progetti e gestione delle dipendenze software, con attenzione al versioning, utilizzando ambienti virtuali (virtual environment).

  • sistemi di AI Assisted coding per il supporto alla programmazione in Python.

 

Metodi e Approcci Didattici 

L’insegnamento è erogato interamente in modalità a distanza attraverso il Learning Management System di Ateneo.
Le attività didattiche includono:

  • videolezioni registrate (asincrone).

  • esercitazioni ed esempi commentati.

  • attività pratiche  di programmazione con feedback individuale.

  • momenti di interazione sincrona con docente e tutor (20%).

L’approccio è orientato all’apprendimento attivo e progressivo della programmazione.

Elenco delle e-tivity

Le e-tivity erogate durante il corso comprenderanno:

  • progettazione e sviluppo di programmi in linguaggio Python, con feedback individuale, utilizzando sistemi come il plugin CodeRunner di Moodle.

  • test su Moodle (test, esercizi a risposta aperta o strutturata) con feedback individuale.

  • esercizi di problem solving e debugging.

  • partecipazione a forum tematici di supporto e discussione.

 

Compiti di docenti e tutor

Il tutor didattico affianca il docente nel fornire feedback individuale agli studenti che hanno difficoltà a produrre programmi funzionanti richiesti negli esercizi assegnati sul Learning Management System. Il feedback può essere fornito in forma sincrona (in aula virtuale, mediante forum) o asincrona (consigli via email).

 

Testi e Materiali Didattici 

  • Materiale didattico originale fornito dal docente (videolezioni, slide, dispense, esempi di codice)

  • Documentazione ufficiale del linguaggio Python (https://docs.python.org/3/) 

  • Risorse online e testi consigliati sulla piattaforma del corso.

 

Modalità di valutazione

La valutazione dell’apprendimento avviene tramite una prova in presenza presso l’Università di Ferrara. 

La prova può essere sostenuta in un’unica sessione al termine del corso oppure mediante il superamento di due prove parziali.

Le prove sono composte da esercizi di programmazione in Python e da domande a risposta aperta. Gli esercizi di programmazione sono finalizzati a valutare la capacità dello studente di analizzare un problema, progettare una soluzione algoritmica e implementarla correttamente in Python, utilizzando strutture di controllo, strutture dati di base, funzioni e input/output. Le domande a risposta aperta sono finalizzate a verificare la comprensione dei concetti teorici affrontati nel corso, quali il concetto di algoritmo, il funzionamento a tempo di esecuzione di un programma Python, le buone pratiche di programmazione e i principi di base dell’informatica e della programmazione.

Nel caso in cui lo studente decida di sostenere le prove parziali, ciascuna prova è composta da:

  • un esercizio di programmazione (24 punti ciascuno).

  • una domanda a risposta aperta (8 punti).

Il voto finale dell’insegnamento corrisponde alla media aritmetica dei voti conseguiti nelle due prove parziali.

Nel caso in cui lo studente decida di sostenere la prova finale in un’unica sessione, la prova è composta da:

  • due esercizi di programmazione (12 punti ciascuno).

  • due domande a risposta aperta (4 punti ciascuna).