Programmazione e Algoritmi 1 (2022/23)
Schema della sezione
-
Attenzione
Come avrete probabilmente saputo, dall'a.a. 2023/2024 il linguaggio usato per il corso di Programmazione e Algoritmi 1 è cambiato in Python, e non più Java. Per tutto l'a.a. 2023/24, gli studenti degli anni accademici 2022/23 e precedenti potranno scegliere se svolgere l'esame usando Java o Python come linguaggio. Tutte le comunicazioni ulteriori avverranno sul sito dell'a.a. 2023/24.Obiettivo
Obiettivo del corso è insegnare i fondamenti della programmazione strutturata utilizzando Java come linguaggio di programmazione. Non è invece un obiettivo del corso insegnare la programmazione ad oggetti, che sarà uno dei punti centrali del corso di Programmazione e Algoritmi 2.
Programma del corso
- Introduzione alla programmazione
- Hardware e Software
- Linguaggi di programmazione, interpreti e compilatori
- Il bytecode Java e la Java Virtual Machine
- Programmazione strutturata ed orientata agli oggetti
- Testing e debugging
- Riutilizzo del software
- Primi passi con Java.
- Un semplice programma Java
- L'ambiente di sviluppo Visual Studio Code
- Variabili e tipi di dato numerici
- Espressioni aritmetiche
- Assegnamento
- Rappresentazione binaria di dati numerici
- Casting e promozione di valori numerici
- Input e output
- Il tipo stringa
- Costanti
- Stile di programmazione
- Istruzioni ed operatori condizionali.
- L'istruzione if-then-else
- L'operatore ternario
- Il tipo booleano
- Cenni di logica delle proposizioni
- Espressioni booleane
- Uguaglianza in Java
- L'istruzione e l'operatore switch
- Iterazione definita.
- Iterazione definita in Java: istruzione for
- Esempi di programmi che usano l'iterazione definita
- Istruzioni break e continue
- Uso del debugger in Visual Studio Code
- Iterazione indefinita
- Istruzioni while e do-while
- Esempi di programmi che usano l'iterazione indefinita
- Scrivere cicli senza bug
- L'istruzione for rivista
- Sottoprogrammi e metodi statici
- Sottoprogrammi e metodi statici
- Passaggio di parametri
- Metodi che restituiscono un risultato
- Vettori
- I vettori
- Ricerca lineare e ricerca binaria
- Ordinamento di un vettore: selection sort
- Vettori multidimensionali
- Cenni di complessità computazionale asintotica
- Ricorsione.
- Programmi ricorsivi
- La pila dei record di attivazione
- Ricerca binaria ricorsiva e merge sort
- Oggetti e classi
- Le classi come meccanismo di aggregazione di dati (record)
- Array di oggetti
Ricevimento studenti
Il corso è tenuto dal prof. Gianluca Amato. Si rimanda alla pagina del profilo per informazioni su come contattare il docente e sugli orari e modalità di ricevimento.
Materiale didattico
- Il libro di testo: Walter Savitch. Programmazione di base e avanzata con Java (seconda edizione). Pearson
Il testo principale del corso. Lezioni ed esercitazioni saranno basate su di esso. Sarà utilizzato anche nel corso di Programmazione e Algoritmi 2. Altamente consigliato. -
Irv Englander. The Architecture of Computer Hardware, Systems Software, and Networking: An Information Technology Approach (6th edition). Wiley
Testo di riferimento per la parte di programma relativa alla rappresentazione binaria dei dati. - Slide sul capitolo 3: sistemi di numerazione
- Slide sul capitolo 4: rappresentazione di informazione non numerica
- Slide sul capitolo 5: rappresentazione di informazione numerica
- A. Bertossi, A. Montressor. Algoritmi e strutture dati (terza edizione). Città Studi
Testo di riferimento per la parte di complessità computazionale. Sarà utilizzato anche nel corso di Programmazione e Algoritmi 2. - La libreria delle classi di Java 11
- Un piccolo documento sulla Creazione di array in Java.
Modalità didattica
Il corso si terrà in presenza. Alcuni studenti con particolari requisiti potranno accedere alle lezioni in streaming e registrate, secondo le regole previste dalla "Modalità di erogazione della didattica A.A. 2022/23"
-
Qui trovate l'elenco delle lezioni già svolte, con il corrispondente PDF della lavagna. Si noti che questi PDF non sono adatti ad essere utilizzati come materiale didattico principale del corso, perché mancano delle spiegazioni e dei commenti che collegano una scritta con un'altra. Dopo la sigla WS (abbreviazione di Walter Savitch) trovate le sezioni del libro di testo che corrispondono alla lezione. La sigla IE (abbreviazione di Irv Englander) indica invece le pagine delle slide tratte dal testo di Irv Englander.
-
Modificato il 3/10/2022 17:31
-
L'esame è costituito da una prova scritta/pratica, che si svolgerà possibilmente in aula informatica, ed una prova orale in parte facoltativa.
La prova scritta comprende:
- esercizi in cui si chiede di sviluppare un programma secondo certe specifiche;
- esercizi in cui si chiede di mostrare la traccia di esecuzione di un programma dato (ovvero, indicare l'evoluzione delle variabili del programma durante la sua esecuzione);
- esercizi terorici (ad esempio, ma non esclusivamente, sulla complessità degli algoritmi o sulla rappresentazione binaria dei dati).
Chi supera la prova scritta (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. Alla prova orale si parte dal voto dello scritto, che può essere sia aumentato che diminuito. -
Con cadenza circa di una volta ogni due settimane, saranno assegnati dei compiti per casa. Chi consegna con successo il 90% dei compiti per casa ha diritto a 2 punti aggiuntivi sul voto dell'esame scritto. Un compito si considera consegnato con successo se viene valutato dal sistema automatico con un voto almeno pari al voto per la sufficienza indicato nella descrizione dello stesso. I punti aggiuntivi sono validi per tutte le sessioni d'esame del 2023.
-
Sscadenza
23/10/202230/10/2022; voto minimo per passare il compito: 0, ma bisogna consegnarlo; voto massimo: 3. -
Scadenza 12/11/2022, solo per chi non è riuscito a consegnare il "Compito 1" entro la data prevista. Come sempre il compito è valutato da 0 a 3 punti. Anche un voto nullo è sufficiente per "passare" il compito, ma è necessario che la consegna sia effettuata in maniera corretta.
-
Scadenza: 12/11/2022, voto minimo per la sufficienza: 4, voto massimo: 10.
-
Scadenza: 12/11/2022, voto minimo per la sufficienza: 4, voto massimo: 10. Versione alternativa del "Compito 2" con i test corretti. Da utilizzare solo se si è accettato il "Compito 2" prima delle correzioni effettuate all'esercizio 3.
-
Scadenza: 3/12/2022, voto minimo per la sufficienza: 4, voto massimo: 10.
-
Scadenza: 17/12/2022 compreso, voto minimo per la sufficienza: 4, voto massimo: 10.
-
Scadenza: 14/1/2022 compreso, voto minimo per la sufficienza: 4, voto massimo: 10.