Section outline

  • Attenzione!

    Questa pagina non sarà più aggiornata. Per informazioni relative ai prossimi appelli e modalità d'esame del corso di Programmazione e Algoritmi 1 o del corso di Laboratorio di Programmazione 1, consultare la pagina web del corso dell'a.a. 2026/27.

    Obiettivo

    Obiettivo di questi due insegnamenti è presentare i fondamenti della programmazione strutturata. Python è il linguaggio scelto per illustrare i concetti, ma i principi appresi si applicano a qualunque linguaggio di programmazione. I due insegnamenti sono strettamente correlati: in Programmazione e Algoritmi 1 si svolgono le lezioni frontali, mentre in Laboratorio di Programmazione 1 si svolgono le esercitazioni pratiche. Non è un obiettivo di questi insegnamenti quello di presentare la programmazione ad oggetti, che sarà uno dei punti centrali dell'insegnamento di Programmazione e Algoritmi 2, al secondo anno.

    Programma

    Introduzione alla programmazione. Introduzione a Python. Selezione. Iterazione definita. Iterazione indefinita. Funzioni. Liste. Gestione dei file. Eccezioni. Ricorsione. Algoritmi di ordinamento e ricerca. Cenni di complessità computazionale.
     
     

    Ricevimento studenti

    Gli insegnamenti saranno tenuto dal prof. Gianluca Amato. Il prof. Amato, oltre alla lezioni in aula e/o in laboratorio, è a disposizione degli studenti durante il proprio orario di ricevimento, per chiarire dubbi su qualunque aspetto, organizzativo o disciplinare, di questo insegnamento. È possibile recarsi al ricevimento studenti sia a titolo personale che in gruppo. Si rimanda alla pagina del profilo del docente per l'indicazione del giorno e orario del ricevimento studenti. È Inoltre possibile contattare il docente tramite email all'indirizzo: gianluca.amato@unich.it. Sempre per email è possibile fissare un appuntamento con il docente in alternativa all'orario di ricevimento standard.

    Modalità didattica

    Gli insegnamenti si terranno in presenza. In particolare, Programmazione e Algoritmi 1 si svolgerà tramite lezioni frontali. Diversa invece l'organizzazione per il Laboratorio di Programmazione 1 che si terrà in aula formatica: ogni lezione sarà costituta da una parte di didattica frontale ed una parte di esercitazione autonoma dello studente al calcolatore, sotto la guida del docente. L'insegnamento di Laboratorio di Programmazione 1 è diviso in due canali, a seconda della lettera inziale del cognome dello studente.

    Alcuni studenti con particolari requisiti potranno accedere alle lezioni in streaming e registrate:

    Gli studenti che hanno diritto ad accedere alle lezioni on-line saranno inseriti automaticamente all'interno del team. Richieste estemporanee non saranno accettate.

  • Questa sezione contiene il materiale didattico che non è strettamente collegato ad una specifica lezione. Nelle sezioni successive troverete l'elenco dettagliato delle lezioni e, per ogni lezione, il materiale didattico relativo.

    • Il libro di testo è pensato per essere letto e studiato, quanto meno nelle parti che vengono trattate in questo insegnamento e che saranno evidenziate nell'elenco dettagliato delle lezioni, più sotto in questa stessa pagina. Il libro, molto probabilmente, sarà utilizzato anche per il corso di "Programmazione e Algoritmi 2". Leggere, studiare e capire il libro di testo è essenziale per trarre profitto da questo corso: slide e materiale di altro tipo che verranno distribuiti nel corso dell'anno vanno intesi come ausilio e integrazione al libro di testo, e non come sostituti. Il libro contiene anche una nutrita selezione di esercizi.

    • Questo è il programma dettagliato (congiunto) degli insegnamenti di Programmazione e Algoritmi 1 e di Laboratorio di Programmazione 1 per l'anno accademico 2025/26.

    • Un breve documento con le istruzioni per installare sui vostri computer l'ambiente di sviluppo che utilizziamo (Python + Visual Studio Code + estensioni di VS Code) nei sistemi Windows, macOS e Linux.

    • Trovate qui dentro tutti i notebook e i programmi d'esempio utilizzati come materiale didattico nell'a.a. 2024/25. Tutto ciò che è contenuto in questa cartella è fornito soprattutto per chi ha piacere ad anticipare lo studio di un argomento prima di seguire la corrispondente lezione. Tenete conto però che gli argomenti potrebbero essere trattati in modo leggermente diverso da quanto fatto quest'anno. In ogni caso, è possibile accedere liberamente alla pagina web del corso di Programmazione e Algortimi 1 + Laboratorio dell'a.a. 2024/25.

    • Trovate qui dentro tutte le slide, i notebook e i programmi d'esempio utilizzati come materiale didattico nell'a.a. 2025/2026. Questo materiale non è un sostituto del libro di testo e delle lezioni. Le spiegazioni presenti nei notebook è spesso eccessivamente succinta per essere utilizzata come unica fonte di studio.

    • Questo modulo viene utilizzato per gli esercizi in cui bisogna eseguire il programma passo-passo, tenendo traccia dei valori delle variabili durante l'esecuzione.

    • Non fa propriamente parte del materiale didattico e quindi (ovviamente) non va studiato. Si tratta delle slide che sono state proiettate durante la presentazione del gruppo Python Pescara e degli eventi Django Girls 2025 e Google Devfest 2025.

    • Si tratta della documentazione ufficiale del linguaggio Python, che sarà accessibile anche durante lo svolgimento della parte pratica della prova d'esame.

    • Si tratta della documentazione ufficiale della libreria ezgraphics, che sarà accessibile anche durante lo svolgimento della parte pratica della prova d'esame.

  • Questo è l'enco dettagliato delle lezioni di "Programmazione e Algoritmi 1" e del relativo materiale didattico integrativo. I file notebook (etichettati con NB) non possono essere aperti con il browser: devono essere salvati e aperti con Visual Studio Code.

    Approfondimenti: materiale aggiuntivo che non fa parte del programma del corso per l'a.a. 2025/26, ma che potreste trovare interessante.

  • Questo è l'enco dettagliato delle lezioni di "Laboratorio di Programmazione 1" e del relativo materiale didattico. I file notebook (etichettati con NB) non possono essere aperti con il browser: devono essere salvati e aperti con Visual Studio Code.

    Approfondimenti: esercitazioni aggiuntive che non sono state svolte in aula, ma che potreste trovare interessanti.

  • Il corso di Programmazione e Algoritmi 1 e quello di Laboratorio di Programmazione 1 sono a tutti gli effetti due insegnamenti separati. Pertanto, si svolgeranno due esami distinti, con modalità completamente diverse tra di loro. Tra questi due esami non c'è nessuna relazione di propedeuticità, potete sostenerli nell'ordine che volete.

    Le regole qui sotto valgono per gli studenti degli anni accademici a partire dal 2023/24. Per gli studenti degli anni accademici 2022/23 e precedenti ci sono regole leggermente diverse, per le quali vi invito a consultare la sezione specifica.
      • Per il corso di Programmazione e Algoritmi 1, l'esame è costituito da una prova scritta ed una prova orale. La prova scritta è divisa in due parti, che si svolgono lo stesso giorno, una immediatamente dopo l'altra:

        • Parte analogica: si svolge su carta, senza l'ausilio di computer o altri strumenti di calcolo. Comprende:
          • esercizi di programmazione, in cui si chiede di sviluppare un programma secondo certe specifiche;
          • esercizi in cui si chiede di mostrare la traccia di esecuzione passo-passo di un programma dato;
          • esercizi e domande a risposta aperta (ad esempio, ma non esclusivamente, sulla shell di Linux, la complessità computazionale e gli algoritmi studiati studiati durante il corso).
        • Parte digitale: è previsto l'uso dei computer dell'aula informatica, e consiste essenzialmente in esercizi di programmazione, più articolati di quelli della prova scritta. Durante lo svolgimento è possibile consultare le pagine su FAD, la documentazione ufficiale di Python e il libro di testo.

        Fino all'appello di settembre 2026, l'eventuale prova in itinere svolta durante le lezioni costituisce parte integrate della prova scritta. Pertanto, il voto effettivo della prova scritta è incrementato con il voto della prova in itinere.

        Chi ha ottenuto nella prova scritta (+ prova in itinere) un voto maggiore o uguale a 18, a meno di diversa indicazione del docente, può verbalizzare direttamente il voto conseguito. Tuttavia, in questo modo, il voto massimo verbalizzabile è 26: un voto superiore ottenuto allo scritto sarà comunque verbalizzato come 26. Chi vuole un voto superiore a 26 deve obbligatoriamente sostenere la prova orale.

        La prova orale consiste in domande teoriche o pratiche su tutto il programma del corso. Alla prova orale si accede su richiesta del docente o dello studente che abbia superato la prova scritta. Il voto conseguito nella prova orale costituirà il voto finale dell'esame, e potrà essere superiore o inferiore a quello della prova scritta.

        Istruzioni per la partecipazione all'esame

        Per partecipare alla prova scritta è necessario iscriversi all'appello tramite l'apposita app o sito web. Sempre sull'app e sul sito trovate le date ufficiali degli appelli. Per partecipare alla prova orale bisognerà seguire le istruzioni che di volta in volta usciranno al momento della pubblicazione dei risultati della prova scritta.

        • Questo è l'elenco dei compiti di Programmazione e Algoritmi 1 in Python assegnati negli a.a. 2023/24 e 2024/25, alcuni con soluzioni. Si noti che la struttura dei compiti potrebbe essere diversa da quella dell'a.a. 2025/26, ma gli esercizi in essi presenti sono comunque rilevanti.

      • L'esame per il corso di laboratorio prevede lo svolgimento di un progetto di programmazione e la sua discussione con il docente. Il progetto può essere svolto da soli o in gruppo, ma la discussione sarà individuale. Il progetto resta valido per tutti gli appelli dell'anno 2026. Trovate qui sotto i dettagli sul progetto di quest'anno, il gioco Campo minato.
         
        L'obiettivo didattico del progetto è quello di impegnarvi nello sviluppo di un programma leggermente più complesso di quelli con cui è possibile cimentarsi durante le ore di laboratorio. Perché l'obiettivo sia centrato, è importante che il programma proviate a scriverlo voi ! Questo non vuol dire fare tutto da soli. Potete ovviamente chiedere aiuto ad un amico più esperto, al docente o anche a ChatGPT e strumenti simili, purché cerchiate di ricorrervi quando siete in difficoltà, e non a priori per scansare tutto i lavoro!
         
        Obiettivo della discussione del progetto è quello di verificare che, comunque siano andate le cose, alla fine abbiate capito come funziona in dettaglio il progetto che avete consegnato. Vi sarà chiesto di descrivere il funzionamento del progetto e di apportare ad esso delle piccole modifiche.
         
        Istruzioni per la partecipazione all'esame

        Per partecipare alla discussione del progetto è necessario iscriversi all'appello tramite l'apposita app o sito web. Sempre sull'app e sul sito trovate le date ufficiali degli appelli. Poiché la prova orale è individuale, ogni studente dovrà iscriversi all'appello separatamente. Attenzione che la data ufficiale dell'appello indica solo il primo giorno dell'esame, ma se siete in molti ad essere iscritti, per forza di cose bisognerà utilizzare anche i giorni successivi. In prossimità del giorno dell'esame sarà disponibile su FAD un modulo in cui potete prenotarvi per il giorno e l'ora precisa in cui svolgere l'esame. Ad ogni modo, trattandosi di una prova orale, cercherò di venire incontro ad esigenze particolari.

        Almeno tre giorni prima della discussione, è necessario consegnare il progetto tramite il modulo che trovate qui sotto. Potete effettuare anche un sola consegna per gruppo. È importante però che inviate tutti i file necessari all'esecuzione del progetto ed un file di testo contenente l'elenco dei membri del gruppo che lo ha realizzato.

         
      • Giorno 18 novembre 2025 alle ore 14:00, nell'aula dove normalmente terremmo la lezione, si svolgerà una prova in itinere del corso di Programmazione e Algoritmi 1. Si tratta di una prova scritta con tre esercizi. Di questi tre, il primo sarà un esercizio di programmazione in cui bisogna scrivere un programma o una funzione secondo certe specifiche. Il secondo consisterà nella esecuzione passo passo di un programma. L'ultimo esercizio potrà avere la forma di domande a risposta aperta, domande a scelta multipla, o anche esercizi, sugli argomenti che non rientrano in quelli affrontati nei primi due esercizi, come: la shell di Linux, architettura hardware/software degli elaboratori, il linguaggio Python. Il voto della prova è un numero da 0 a 3, che si andrà a sommare al voto della prova scritta/pratica al momento dell'esame finale. La prova in itinere, pertanto, non esonera in alcun modo dallo svolgere tutti gli esercizi dell'esame finale. 

        Non è ammesso usare calcolatrici programmabili o materiale didattico. Per partecipare alla prova in itinere è obbligatorio iscriversi sul modulo qui sotto. Il programma d'esame della prova comprende tutto quello fatto nel corso di programmazione dall'inizio fino ai cicli (capitolo 4 del libro di testo), con l'esclusione di tutto ciò che riguarda la libreria ezgraphics. 

        La prova in itinere è valida fino all'appello di settembre 2026.

        Potete dare un'occhiata alla prova in itinere dell'a.a. 2024/25, che è stata però svolta su un programma più esteso comprendente anche le funzioni.

      • Gli studenti degli a.a. 2022/23 e precedenti possono scegliere se sostenere l’esame in Python o Java.

        • Se volete sostenere l'esame in Python, esso si svolgerà esattamente come quello per l’a.a. 2025/26. Tuttavia, poiché dal punto di vista formale fino all’a.a. 2022/23 la parte di laboratorio era accorpata a quella teorica in un singolo esame da 9 CFU, non sarà possibile verbalizzarlo finché non verrà superata sia la prova di Programmazione e Algoritmi 1 che quella di Laboratorio di Programmazione 1. Le due prove vanno superate nello stesso anno accademico. A parte questo, resta valido il fatto che non esiste propedeuticità tra di esse. Gli studenti possono seguire le stesse istruzioni degli studenti dell'a.a. 2025/26 che trovate qui sopra, con l'eccezione che per la prenotazione all'esame non dovete usare la app o il sito web ma inviarmi direttamente una email. Per vostra comodità, queste sono le date previste per gli appelli (nel caso non fossero visibili da app e sito web). 
          • Programmazione e Algoritmi 1: 15/01/2026, 05/02/2026, 12/06/2026, 26/06/2026, 17/07/2026, 02/09/2026 sempre alle ore 10:00
          • Laboratorio di Programmazione 1: 13/01/2026, 27/01/2026, 12/02/2026, 16/06/2026, 03/07/2026, 04/09/2026 sempre alle ore 9:00

        • Se volete sostenere l'esame in Java, esso consisterà esclusivamente in una prova orale, comprendente esercizi di programmazione e domande teoriche su algoritmi, complessità computazionale, etc... Il programma dell'esame è quello del corso di "Programmazione e Algoritmi 1" dell'a.a. 2022/23, che è l'ultimo che si è tenuto in Java. Siete invitati a mettervi in contatto con il docente tramite email per fissare data e ora della prova orale.