- Docente: Simone Martini
- Crediti formativi: 8
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
-
Corso:
Laurea in
Matematica (cod. 6649)
Valido anche per Laurea Magistrale in Scienze filosofiche (cod. 8773)
Conoscenze e abilità da conseguire
Al termine del corso, lo studente conosce un linguaggio di programmazione di alto livello e alcuni concetti fondamentali dell’informatica, quali algoritmo, complessità computazionale, macchina astratta, tipo di dato, e alcuni algoritmi notevoli. Lo studente è in grado di analizzare e progettare algoritmi, che sa realizzare nel linguaggio di programmazione studiato.
Contenuti
L'insegnamento introduce alla programmazione nel linguaggio Python, anche mediante congrue attività di laboratorio (30 ore).
Contenuti specifici: Macchine astratte. La macchina Python. Programmazione in Python: nomi e loro visibilità, funzioni, oggetti modificabili e non modificabili, tipi di base e loro uso nella risoluzione di problemi di media difficoltà. Classi e oggetti. Tipi di dato astratti come classi. Algoritmi di ordinamento. Cenni di complessità computazionale. Limitazioni dei procedimenti effettivi: esistenza di problemi non risolubili per via algoritmica.
Il corso ha un'intensa attività di laboratorio, in cui il docente è affiancato da tutor.
Conoscenze preliminari: nessuna, anche se una precedente esposizione alla programmazione (in qualsiasi linguaggio) può aiutare.
Testi/Bibliografia
John V. Guttag. Introduzione alla programmazione con Python Egea, 2021 (traduzione italiana ridotta di: Introduction to Computation and Programming Using Python Third Edition: With Application to Computational Modeling and Understanding Data MIT Press, 2021)
Altre letture consigliate per il principiante assoluto:
Allen B. Downey. Pensare in Python (nuova edizione 2025)
Egea, 2025
(traduzione italiana di:
Think Python 2e.
O'Reilly Media, 2012. ISBN 978-1449330729.
On-line manuscript: see greenteapress.com/wp/think-python-2e/ )
Jessen Havill. Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming
Chapman and Hall/CRC. ISBN 9781482254143
Metodi didattici
Lezioni in aula.
Esercitazioni di laboratorio, nella stessa aula dove si tiene lezione, con i portatili degli studenti: un PC ogni due studenti, in pair programming. Durante il laboratorio, i docenti sono affiancati dai tutor.
Il corso è tenuto nel secondo semestre (da febbraio a maggio).
Per i soli studenti della LM in Scienze Filosofiche: il corso è mutuato dal CdL in Matematica e quindi si tiene da febbraio a maggio, anche se la LM di Scienze Filosofiche lo mutua per soli 6 CFU.
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, in modalità e-learning
Modalità di verifica e valutazione dell'apprendimento
Il corso ha sia lezioni tradizionali che lezioni di laboratorio, con un unico esame. Ogni settimana saranno proposti in laboratorio alcuni test di autovalutazione: non sono necessari per l'esame, ma costituiscono un importante strumento per la sua preparazione. La consegna di tutti gli assegnamenti durante l'anno dà diritto ad un bonus di 1 punto.
L'esame è costituito da due parti: (i) una prova di programmazione (durata: 2.5 ore); (ii) una prova scritta su carta (1 ora, non è consentita la consultazione di appunti o testi). Le due prove sono tenute in giorni successivi e devono essere sostenute nello stesso appello, senza eccezioni.
Prova di programmazione: La prova verifica le competenze di programmazione, usando il linguaggio Python. Si svolge sulla piattaforma online EOL, che ha la stessa interfaccia usata anche per gli esercizi assegnati durante il laboratorio, in un'aula attrezzata con PC. Lo studente dovrà usare il PC d'aula e non il proprio portatile; non è consentita la consultazione di appunti, o siti online, fatta eccezione di python.org, che include la documentazione ufficiale di Python. Di durata complessiva di 2.5 ore, è a sua volta costituita da due parti:
-
una prima parte consiste nella redazione di alcuni programmi Python, con correzione automatica su dati di prova; a questa parte, al momento della consegna viene immediatamente assegnato un voto compreso tra 0 e 10, con sufficienza a 5. Se questa parte è insufficiente, l'esame termina ed è globalmente insufficiente. Se la valutazione è compresa tra 5 e 10 lo studente ha accesso alla seconda parte e alla prova scritta del giorno successivo.
-
la seconda parte consiste nella redazione di alcuni programmi Python, che saranno corretti e valutati dal docente assieme alla prova scritta. Anche questa parte viene erogata attraverso la piattaforma di laboratorio e propone dei test automatici, ma tali test non sono definitivi per la valutazione finale.
Il tempo complessivo di 2.5 ore viene amministrato autonomamente dallo studente; una volta consegnata la prima parte, questa è definitiva.
Prova scritta: La prova verifica le competenze sulla macchina Python e sulla complessità computazionale. Della durata di 1 ora, è un esame scritto tradizionale, senza appunti, su carta. Viene valutato dal docente insieme alla seconda parte della prova di programmazione. All'insieme della seconda prova di programmazione e della prova scritta viene assegnato un voto compreso tra 0 e 24, con sufficienza a 13 (per la sufficienza è necessario che gli esercizi della seconda parte di programmazione siano sufficienti). L'eventuale insufficienza della prova (meno di 13) rende necessario sostenere di nuovo anche l'intera prova di programmazione, ad un appello successivo.
Il voto finale è determinato sommando il voto (sufficiente) della prima parte della prova di programmazione (5-10), dello scritto (sufficiente: 13-24), e l'eventuale bonus (0-1). Se il risultato è maggiore o uguale a 32, il voto è 30Lode.
Per gli studenti della LM in Scienze filosofiche (o di altri insegnamenti per i quali l'esame è di sei crediti): l'esame non comprende la prima parte della prova di programmazione, ma solo la seconda parte di programmazione e lo scritto. Quindi gli studenti devono iscriversi regolarmente alla prova di Programmazione: il sistema presenterà loro solo la seconda parte.
Studenti con disabilità e DSA
Le persone con disabilità o disturbi specifici dell’apprendimento hanno diritto a speciali adattamenti in relazione alla loro condizione, previa valutazione del Servizio d’ateneo per le studentesse e gli studenti con disabilità e DSA. Si prega di non rivolgersi al docente, ma di contattare il Servizio per un appuntamento. Sarà cura del Servizio stabilire quali adattamenti si rendono opportuni. Maggiori informazioni alla pagina site.unibo.it/studenti-con-disabilita-e-dsa/it/per-studenti .
Strumenti a supporto della didattica
Tutte le informazioni e il materiale sul corso sono reperibili a partire dalla pagina: www.cs.unibo.it/~martini/MATH/ e, durante il corso, sulla piattaforma virtuale.unibo.it
Il laboratorio si svolge nella stessa aula dove si tiene lezione, con i portatili degli studenti. È necessario installare sul portatile una versione del linguaggio di programmazione Python: si suggerisce Thonny, un ambiente di programmazione auto-contenuto per Python 3, che sarà utilizzato durante le lezioni.
La piattaforma piattaforma virtuale.unibo.it deve essere utilizzata anche per inviare gli esercizi per casa assegnati durante il lab.
Orario di ricevimento
Consulta il sito web di Simone Martini
SDGs

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.