Programmazione e Algoritmi 1 + Laboratorio (2024/25)
Schema della sezione
-
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.È disponibile anche il programma dettagliato degli insegnamentoi.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 dlelo 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:
- team per Programmazione e Algoritmi 1
- team per Laboratorio di Programmazione A-L
- team per Laboratorio di Programmazione M-Z
Gli studenti che hanno diritto ad accedere alle lezioni on-line saranno inseriti automaticamente all'interno del team. Richieste estemporanee non saranno accettate -
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 2023/24 e 2024/25. 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. -
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.
-
È un breve documento con le istruzioni per installare l'ambiente di sviluppo che utilizziamo (Python + Visual Studio Code + estensioni di VS Code) nei sistemi Windows, macOS e Linux.
-
La documentazione on-line è a solo scopo di riferimento e va consultata quando necessario. Ci si aspetta che lo studente sappia ricercare un argomento di suo interesse nella documentazione on-line.
-
Trovate qui dentro tutti i notebook e i programmi d'esempio utilizzati come materiale didattico nell'a.a. 2023/24. Per poter utilizzare i notebook (file .ipynb) è necessario che abbiate un programma per leggerli: va bene Visual Studio Code con l'estensione Jupyter. Tutti i file contengono una data nel formato anno-mese-giorno, in modo che l'ordine alfabetico coincida con l'ordine di svolgimento delle lezioni. Tutto ciò che è contenuto in questa cartella è fornito solo a titolo di supporto, per chi ha piacere di anticipare lo studio di un argomento prima di seguire la corrispondente lezione. Ovviamente, tenete conto che gli argomenti potrebbero essere trattati in modo leggermente diverso da quanto fatto quest'anno.
-
Questo è l'elenco dei notebook e programmi d'esempio per l'a.a. 2024/25. I notebook che iniziano con un numero sono le lezioni di Programmazione e Algoritmi 1. I notebook che iniziano con
L
sono le lezioni di Laboratorio di Programmazione 1. I notebook che iniziano consoluzioni
sono le soluzioni agli esercizi dati in laboratorio. Lo stesso vale per i notebook che cominciano conS
, che però si riferiscono alla soluzione degli esercizi specifici per la lezione di laboratorio corrispondente. -
Questo modulo viene utilizzato per gli esercizi in cui bisogna eseguire il programma passo-passo, tenendo traccia dei valori delle variabili durante l'esecuzione.
-
Trovate qui alcune lezioni di laboratorio la cui registrazione è accessibile a tutti.
-
Questo è un collegamento alla riunione su Microsoft Teams dove si svolgono le (rare) lezioni in formato blended (presenza + online aperto a tutti).
-
Non si tratta propriamente di materiale didattico, ma delle slide di presentazione di Python Pescara, presentate il 19 novembre 2024.
-
Questo è l'enco dettagliato delle lezioni di "Programmazione e Algoritmi 1". Per ogni lezione elenchiamo il materiale didattico relativo. I numeri tra parentesi si riferiscono alla sezione del libro di testo corrispondente. Il materiale didattico etichettato con la stringa (approfondimento) non fa parte ufficialmente del programma del corso. I file notebook devono essere aperti con Visual Studio Code.
- 23/09/2024: (1 ora) Introduzione all'insegnamento di Programmazione e Algoritmi 1 (e Laboratorio di Programmazione 1). Hardware e Software. (1.1, 1.2, 1.3)
- 24/09/2024: Programmi, linguaggi di programmazione e algoritmi. Linux e software libero. (1.7)
- 26/09/2024. Ancora su Linux. Interazione con il linguaggio Python. Primi passi. Tipologie di errori. (1.4, 1.5, 1.6).
- 01/10/2024. Variabili. Tipi di dato numerici. Funzioni, moduli e librerie. (2.1, 2.2)
- 08/10/2024. Errori comuni. Convenzioni stilistiche. Il tipo stringa. (2.4)
- 11/10/2024. Sequenze di escape. Metodi. Conversioni di tipo. La libreria ezgraphics. (2.4, 2.5, 2.6)
- 15/10/2024. L'istruzione if. (3.1, 3.3, 3.4, 3.5)
- 17/10/2024. Esecuzione passo passo. Operatori relazionali e logici. Collaudo di programmi. (3.2, 3.6, 3.7, 3.8)
- 22/10/2024. (1 ora) Errori comuni 2. Istruzioni di assegnamento aumentato e concatenazione di metodi.
- 24/10/2024. I cicli e l'istruzione while. (4.1, 4.2)
- 29/10/2024. Istruzione while e applicazioni. (4.3, 4.5)
- 31/10/2024. Istruzione for...range. Applicazioni dei cicli alle stringhe. (4.6, 4.8)
- 05/11/2024. Cicli per la costruzione di stringhe. L'istruzione for generale. Cicli annidati. (4.6, 4.7, 4.8)
- 12/11/2024. (1 ora) Ancora su cicli annidati. Numeri casuali e simulazione. (4.7, 4.9)
- 14/11/2024. Funzioni. (5.1-5.8)
- 19/11/2024. (1 ora + 1 ora esercitazione) Ancora sulle funzioni.
- 21/11/2024. (1 ora) Moduli. Liste. (6.1)
- 25/11/2024. Ancora sulle liste (6.1-6.3)
- 26/11/2024. Tipi di dati mutabili e immutabili. Operazioni sul posto con le liste. (6.4)
- 03/12/2024. Ancora operazioni sul posto con le liste. Le tuple. Le tabelle. (6.7)
- 05/12/2024. Ancora sulle tabelle. (6.7)
- 10/12/2024. Ricorsione. (5.10, 11.1-11.4)
- 11/12/2024. Ancora sulla ricorsione. Algoritmi di ricerca lineare e binaria. (11.7, 12.6)
- 12/12/2024. Ancora su algoritmi di ricerca lineare e binaria. I file. (12.6, 7.1, 7.2)
- 17/12/2024. Cenni di complessità computazionale.
- 18/12/2024. Complessità delle funzoni ricorsive. Algoritmi di ordinamento: ordinamento per selezione. (12.1, 12.2, 12.3, 12.6)
- 19/12/2024. (1 ora) Algoritmi di ordinamento: ordinamento per fusione. (12.4, 12.5)
- 09/01/2025. Esercitazione: compito di esempio.
I notebook che seguono trattano argomenti che non sono stati affrontati nel corso, ma potrebbero esservi utili. In particolare, vi consiglio di leggere la lezione sul passaggio dei parametri perché è relativamente leggera e chiarisce alcune cose che abbiamo visto ma mai spiegato con precisione.
- 23/09/2024: (1 ora) Introduzione all'insegnamento di Programmazione e Algoritmi 1 (e Laboratorio di Programmazione 1). Hardware e Software. (1.1, 1.2, 1.3)
-
Questo è l'enco dettagliato delle lezioni di "Laboratorio di Programmazione 1". Per ogni lezione elenchiamo il materiale didattico relativo. I file notebook devono essere aperti con Visual Studio Code.
- 23/10/2024. L'aula informatica.
- L'aula informatica: lezione ed esercizi
- 30/10/2024. Introduzione alla shell di Linux.
- Introduzione alla shell di Linux: lezione ed esercizi, soluzioni
- 07/10/2024. Interazione con Python. Primi passi in Python.
- 14/10/2024. Preferenze in Visual Studio Code. Stringhe. Libreria ezgraphics.
- 21/10/2024. Input con la libreria ezgraphics. L'istruzione if.
- 28/10/2024. L'istruzione while.
- 04/11/2024. Il debugger di VSCode. Ancora sul while e l'istruzione for.
- Il debugger di VSCode: videolezione, esercizi
- Ancora sul while e l'istruzione for: esercizi, soluzioni
- 11/11/2024. Le f-stringhe. L'espressione condizionale. Generazione di stringhe e cicli annidati.
- 18/11/2024. Funzioni. Debugging di funzioni.
- Funzioni: esercizi, soluzioni
- Debugging di funzioni (Esempi completi 5.3): videolezione, esercizi
- 23/11/2024. Esercitazione.
- 02/12/2024. Collaudo di funzioni. Liste.
- 09/12/2024 gruppo A-L. Tabelle. Tabellle frastagliate.
- 09/12/2024 gruppo M-Z. Implementazione del gioco Forza 4.
- Forza 4: programma scritto a lezione (manca supporto pareggio e controllo colonna piena), versione alternativa
- Il gioco dell'impiccato (approfondimento): esercizi, soluzioni
- 16/12/2024 gruppo A-L: Ricorsione e file.
- 16/12/2024 gruppo M-Z: Verso l'implementazione di Chomp, il progetto d'esame.
- Approfondimenti ezgraphics per Chomp: lezione
- Bozza del programma chomp: chomp_lezione.py
- Immagine blocco di cioccolato: chocolate.png
- 23/10/2024. L'aula informatica.