Programmazione
A.A. 2018/2019
Obiettivi formativi
Obiettivo del corso è introdurre gli studenti alla programmazione mediante l'approccio imperativo. Come linguaggio di riferimento verrà utilizzato Go. Il laboratorio è parte integrante del corso destinata a fornire la necessaria e naturale controparte "pragmatica".
Risultati apprendimento attesi
Non definiti
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo semestre
STUDENTI FREQUENTANTI
STUDENTI NON FREQUENTANTI
Informazioni sul programma
Il corso di Programmazione è un corso di 12 crediti finalizzato all'insegnamento della programmazione. Trattandosi di un corso di base, non richiede alcuna conoscenza specifica pregressa; obiettivo del corso è formare gli studenti alla programmazione in senso imperativo; il linguaggio insegnato nel corso sarà Go.
Il corso si compone di due moduli, svolti in parallelo: questa pagina descrive solo il modulo di Programmazione (teoria), mentre il Laboratorio di programmazione è tenuto da tre diversi docenti in parallelo, e ciascuno ha una sua propria pagina web, cui vi preghiamo di fare riferimento per informazioni.
Il corso si compone di due moduli, svolti in parallelo: questa pagina descrive solo il modulo di Programmazione (teoria), mentre il Laboratorio di programmazione è tenuto da tre diversi docenti in parallelo, e ciascuno ha una sua propria pagina web, cui vi preghiamo di fare riferimento per informazioni.
Propedeuticità
-
Prerequisiti
-
Metodi didattici
Lezioni frontali + laboratori didattici
Unita' didattica
Programma
[TWG=The Way to Go: A Thorough Introduction to the Go Programming Language by Ivo Balbaert]
1. Introduzione al corso; Architettura del calcolatore; Che cos'è; l'informatica; Linguaggi di programmazione (macchina, assembly, alto livello); Il calcolatore come macchina programmabile
2. La macchina di von Neumann. Informazione (bit, byte,...). Caricamento in RAM del programma, fetch-decode-execute. Architettura della CPU: ALU e CU. Un esempio di CPU con relativo linguaggio assembly
3. Ciclo di vita del software. Strumenti per la programmazione. Storia di go. Il primo programma in go [TWG4]. Il go tool. Compilazione. Esecuzione. Formattazione. Documentazione [TWG3]
4. Discussione degli aspetti lessicali e sintattici. Commenti [TWG4]. Tipi. Classificazione dei tipi (tipi di base, tipi composti, interfacce). Variabili: nome, tipo, valore, scope. Dichiarazione, assegnamenti e assegnamenti multipli, short-assignment [TWG4]
5. I/O di base. Tipi di base numerici (int, float64). Espressioni numeriche. Conversioni. Cenni al tipo complex. Variabili inutilizzate e blank variable [TWG4]
6. Selezione binaria (if). Variabili locali all'if. Il tipo bool e gli operatori booleani. Esercizi [TWG5]
7. Il ciclo (for): versione unaria, ternaria, zeraria. Esercizi [TWG5]
8. Rappresentazione dell'informazione. Notazione posizionale. Rappresentazione degli interi negativi. Range di rappresentazione, overflow. Cenni alla rappresentazione dei reali: virgola fissa e mobile (standard IEEE 754). I caratteri (ASCII, Unicode, UTF-8) [Dispense]
9. Tipi di base numerici a lunghezza fissa. Tipo rune. Tipo string: differenze fra raw e utf-8. Funzione len. Quarta forma del ciclo for (range) [TWG4, TWG5]
10. Esercizi: cicli annidati. Istruzioni break e continue [TWG5]
11. Selezione multiaria (switch) [TWG5]
12. Array e slice. Inizializzatori. Applicazione dei for range. Funzione append [TWG7]
13. Esercizi. Argomenti da riga di comando. Pacchetto strconv
14. Funzioni: parametri, segnatura argomenti. Passaggio per valore. Valori restituiti. Valori restituiti con nome. [TWG6]
15. Esercizi
16. Ordinamento e ricerca dicotomica
17. Generazione numeri pseudo-casuali. Pacchetto math. Esercizi
18. Mappe. Applicazione dei for range. Esercizi [TWG8]
19. Ricorsione. Stack di esecuzione [TWG6]
20. Esercizi sulla ricorsione
21. Puntatori: operatori * e &. [TWG4]
22. Esercizi con passaggi di riferimenti
23. Strutture [TWG10]. Metodi [TWG10] (cenni)
24. Esercizi su strutture e metodi
25. Chiusure. Esempio: sort, ricerca binaria
26. I/O avanzato. File [TWG12]
27. Esercizi. Istruzione defer [TWG6]
28. Pacchetti e struttura. Visibilità delle variabili
29. Testing [TWG13]
30. Interfacce [TWG11]
31. Realizzazione di un motore di ricerca (indici inversi)
32. Go routine e canali [TWG14]
33. Esercizi sulla concorrenza
34. Il linguaggio C. Il gcc. Differenze sintattiche: punto-e-virgola, parentesi nelle strutture di controllo, dichiarazioni di variabili, tipi e funzioni. Differenze nelle strutture di controllo del flusso (switch, while, do-while). Uso di istruzioni semplici nelle strutture di controllo. Inclusione vs. importazione.
35. Assenza di stringhe, slice, mappe; uso dei char[] per le stringhe. Tipi elementari e dipendenza dal compilatore; uso di tipi specifici (stdint.h, bool.h). Cast impliciti. Definizione di macro. Funzioni di libreria. Parametri da riga di comando
36. Puntatori, aritmetica dei puntatori. Gestione della memoria: malloc, free
1. Introduzione al corso; Architettura del calcolatore; Che cos'è; l'informatica; Linguaggi di programmazione (macchina, assembly, alto livello); Il calcolatore come macchina programmabile
2. La macchina di von Neumann. Informazione (bit, byte,...). Caricamento in RAM del programma, fetch-decode-execute. Architettura della CPU: ALU e CU. Un esempio di CPU con relativo linguaggio assembly
3. Ciclo di vita del software. Strumenti per la programmazione. Storia di go. Il primo programma in go [TWG4]. Il go tool. Compilazione. Esecuzione. Formattazione. Documentazione [TWG3]
4. Discussione degli aspetti lessicali e sintattici. Commenti [TWG4]. Tipi. Classificazione dei tipi (tipi di base, tipi composti, interfacce). Variabili: nome, tipo, valore, scope. Dichiarazione, assegnamenti e assegnamenti multipli, short-assignment [TWG4]
5. I/O di base. Tipi di base numerici (int, float64). Espressioni numeriche. Conversioni. Cenni al tipo complex. Variabili inutilizzate e blank variable [TWG4]
6. Selezione binaria (if). Variabili locali all'if. Il tipo bool e gli operatori booleani. Esercizi [TWG5]
7. Il ciclo (for): versione unaria, ternaria, zeraria. Esercizi [TWG5]
8. Rappresentazione dell'informazione. Notazione posizionale. Rappresentazione degli interi negativi. Range di rappresentazione, overflow. Cenni alla rappresentazione dei reali: virgola fissa e mobile (standard IEEE 754). I caratteri (ASCII, Unicode, UTF-8) [Dispense]
9. Tipi di base numerici a lunghezza fissa. Tipo rune. Tipo string: differenze fra raw e utf-8. Funzione len. Quarta forma del ciclo for (range) [TWG4, TWG5]
10. Esercizi: cicli annidati. Istruzioni break e continue [TWG5]
11. Selezione multiaria (switch) [TWG5]
12. Array e slice. Inizializzatori. Applicazione dei for range. Funzione append [TWG7]
13. Esercizi. Argomenti da riga di comando. Pacchetto strconv
14. Funzioni: parametri, segnatura argomenti. Passaggio per valore. Valori restituiti. Valori restituiti con nome. [TWG6]
15. Esercizi
16. Ordinamento e ricerca dicotomica
17. Generazione numeri pseudo-casuali. Pacchetto math. Esercizi
18. Mappe. Applicazione dei for range. Esercizi [TWG8]
19. Ricorsione. Stack di esecuzione [TWG6]
20. Esercizi sulla ricorsione
21. Puntatori: operatori * e &. [TWG4]
22. Esercizi con passaggi di riferimenti
23. Strutture [TWG10]. Metodi [TWG10] (cenni)
24. Esercizi su strutture e metodi
25. Chiusure. Esempio: sort, ricerca binaria
26. I/O avanzato. File [TWG12]
27. Esercizi. Istruzione defer [TWG6]
28. Pacchetti e struttura. Visibilità delle variabili
29. Testing [TWG13]
30. Interfacce [TWG11]
31. Realizzazione di un motore di ricerca (indici inversi)
32. Go routine e canali [TWG14]
33. Esercizi sulla concorrenza
34. Il linguaggio C. Il gcc. Differenze sintattiche: punto-e-virgola, parentesi nelle strutture di controllo, dichiarazioni di variabili, tipi e funzioni. Differenze nelle strutture di controllo del flusso (switch, while, do-while). Uso di istruzioni semplici nelle strutture di controllo. Inclusione vs. importazione.
35. Assenza di stringhe, slice, mappe; uso dei char[] per le stringhe. Tipi elementari e dipendenza dal compilatore; uso di tipi specifici (stdint.h, bool.h). Cast impliciti. Definizione di macro. Funzioni di libreria. Parametri da riga di comando
36. Puntatori, aritmetica dei puntatori. Gestione della memoria: malloc, free
Metodi didattici
Lezioni frontali + laboratori didattici
Materiale di riferimento
- The Way to Go: A Thorough Introduction to the Go Programming Language. Ivo Balbaert
- The Go Programming Language. Donovan, Kernighan
- The Go Programming Language. Donovan, Kernighan
Unita' didattica
Programma
[TWG=The Way to Go: A Thorough Introduction to the Go Programming Language by Ivo Balbaert]
1. Introduzione al corso; Architettura del calcolatore; Che cos'è; l'informatica; Linguaggi di programmazione (macchina, assembly, alto livello); Il calcolatore come macchina programmabile
2. La macchina di von Neumann. Informazione (bit, byte,...). Caricamento in RAM del programma, fetch-decode-execute. Architettura della CPU: ALU e CU. Un esempio di CPU con relativo linguaggio assembly
3. Ciclo di vita del software. Strumenti per la programmazione. Storia di go. Il primo programma in go [TWG4]. Il go tool. Compilazione. Esecuzione. Formattazione. Documentazione [TWG3]
4. Discussione degli aspetti lessicali e sintattici. Commenti [TWG4]. Tipi. Classificazione dei tipi (tipi di base, tipi composti, interfacce). Variabili: nome, tipo, valore, scope. Dichiarazione, assegnamenti e assegnamenti multipli, short-assignment [TWG4]
5. I/O di base. Tipi di base numerici (int, float64). Espressioni numeriche. Conversioni. Cenni al tipo complex. Variabili inutilizzate e blank variable [TWG4]
6. Selezione binaria (if). Variabili locali all'if. Il tipo bool e gli operatori booleani. Esercizi [TWG5]
7. Il ciclo (for): versione unaria, ternaria, zeraria. Esercizi [TWG5]
8. Rappresentazione dell'informazione. Notazione posizionale. Rappresentazione degli interi negativi. Range di rappresentazione, overflow. Cenni alla rappresentazione dei reali: virgola fissa e mobile (standard IEEE 754). I caratteri (ASCII, Unicode, UTF-8) [Dispense]
9. Tipi di base numerici a lunghezza fissa. Tipo rune. Tipo string: differenze fra raw e utf-8. Funzione len. Quarta forma del ciclo for (range) [TWG4, TWG5]
10. Esercizi: cicli annidati. Istruzioni break e continue [TWG5]
11. Selezione multiaria (switch) [TWG5]
12. Array e slice. Inizializzatori. Applicazione dei for range. Funzione append [TWG7]
13. Esercizi. Argomenti da riga di comando. Pacchetto strconv
14. Funzioni: parametri, segnatura argomenti. Passaggio per valore. Valori restituiti. Valori restituiti con nome. [TWG6]
15. Esercizi
16. Ordinamento e ricerca dicotomica
17. Generazione numeri pseudo-casuali. Pacchetto math. Esercizi
18. Mappe. Applicazione dei for range. Esercizi [TWG8]
19. Ricorsione. Stack di esecuzione [TWG6]
20. Esercizi sulla ricorsione
21. Puntatori: operatori * e &. [TWG4]
22. Esercizi con passaggi di riferimenti
23. Strutture [TWG10]. Metodi [TWG10] (cenni)
24. Esercizi su strutture e metodi
25. Chiusure. Esempio: sort, ricerca binaria
26. I/O avanzato. File [TWG12]
27. Esercizi. Istruzione defer [TWG6]
28. Pacchetti e struttura. Visibilità delle variabili
29. Testing [TWG13]
30. Interfacce [TWG11]
31. Realizzazione di un motore di ricerca (indici inversi)
32. Go routine e canali [TWG14]
33. Esercizi sulla concorrenza
34. Il linguaggio C. Il gcc. Differenze sintattiche: punto-e-virgola, parentesi nelle strutture di controllo, dichiarazioni di variabili, tipi e funzioni. Differenze nelle strutture di controllo del flusso (switch, while, do-while). Uso di istruzioni semplici nelle strutture di controllo. Inclusione vs. importazione.
35. Assenza di stringhe, slice, mappe; uso dei char[] per le stringhe. Tipi elementari e dipendenza dal compilatore; uso di tipi specifici (stdint.h, bool.h). Cast impliciti. Definizione di macro. Funzioni di libreria. Parametri da riga di comando
36. Puntatori, aritmetica dei puntatori. Gestione della memoria: malloc, free
1. Introduzione al corso; Architettura del calcolatore; Che cos'è; l'informatica; Linguaggi di programmazione (macchina, assembly, alto livello); Il calcolatore come macchina programmabile
2. La macchina di von Neumann. Informazione (bit, byte,...). Caricamento in RAM del programma, fetch-decode-execute. Architettura della CPU: ALU e CU. Un esempio di CPU con relativo linguaggio assembly
3. Ciclo di vita del software. Strumenti per la programmazione. Storia di go. Il primo programma in go [TWG4]. Il go tool. Compilazione. Esecuzione. Formattazione. Documentazione [TWG3]
4. Discussione degli aspetti lessicali e sintattici. Commenti [TWG4]. Tipi. Classificazione dei tipi (tipi di base, tipi composti, interfacce). Variabili: nome, tipo, valore, scope. Dichiarazione, assegnamenti e assegnamenti multipli, short-assignment [TWG4]
5. I/O di base. Tipi di base numerici (int, float64). Espressioni numeriche. Conversioni. Cenni al tipo complex. Variabili inutilizzate e blank variable [TWG4]
6. Selezione binaria (if). Variabili locali all'if. Il tipo bool e gli operatori booleani. Esercizi [TWG5]
7. Il ciclo (for): versione unaria, ternaria, zeraria. Esercizi [TWG5]
8. Rappresentazione dell'informazione. Notazione posizionale. Rappresentazione degli interi negativi. Range di rappresentazione, overflow. Cenni alla rappresentazione dei reali: virgola fissa e mobile (standard IEEE 754). I caratteri (ASCII, Unicode, UTF-8) [Dispense]
9. Tipi di base numerici a lunghezza fissa. Tipo rune. Tipo string: differenze fra raw e utf-8. Funzione len. Quarta forma del ciclo for (range) [TWG4, TWG5]
10. Esercizi: cicli annidati. Istruzioni break e continue [TWG5]
11. Selezione multiaria (switch) [TWG5]
12. Array e slice. Inizializzatori. Applicazione dei for range. Funzione append [TWG7]
13. Esercizi. Argomenti da riga di comando. Pacchetto strconv
14. Funzioni: parametri, segnatura argomenti. Passaggio per valore. Valori restituiti. Valori restituiti con nome. [TWG6]
15. Esercizi
16. Ordinamento e ricerca dicotomica
17. Generazione numeri pseudo-casuali. Pacchetto math. Esercizi
18. Mappe. Applicazione dei for range. Esercizi [TWG8]
19. Ricorsione. Stack di esecuzione [TWG6]
20. Esercizi sulla ricorsione
21. Puntatori: operatori * e &. [TWG4]
22. Esercizi con passaggi di riferimenti
23. Strutture [TWG10]. Metodi [TWG10] (cenni)
24. Esercizi su strutture e metodi
25. Chiusure. Esempio: sort, ricerca binaria
26. I/O avanzato. File [TWG12]
27. Esercizi. Istruzione defer [TWG6]
28. Pacchetti e struttura. Visibilità delle variabili
29. Testing [TWG13]
30. Interfacce [TWG11]
31. Realizzazione di un motore di ricerca (indici inversi)
32. Go routine e canali [TWG14]
33. Esercizi sulla concorrenza
34. Il linguaggio C. Il gcc. Differenze sintattiche: punto-e-virgola, parentesi nelle strutture di controllo, dichiarazioni di variabili, tipi e funzioni. Differenze nelle strutture di controllo del flusso (switch, while, do-while). Uso di istruzioni semplici nelle strutture di controllo. Inclusione vs. importazione.
35. Assenza di stringhe, slice, mappe; uso dei char[] per le stringhe. Tipi elementari e dipendenza dal compilatore; uso di tipi specifici (stdint.h, bool.h). Cast impliciti. Definizione di macro. Funzioni di libreria. Parametri da riga di comando
36. Puntatori, aritmetica dei puntatori. Gestione della memoria: malloc, free
Metodi didattici
Lezioni frontali + laboratori didattici
Materiale di riferimento
- The Way to Go: A Thorough Introduction to the Go Programming Language. Ivo Balbaert
- The Go Programming Language. Donovan, Kernighan
- The Go Programming Language. Donovan, Kernighan
Prerequisiti
-
Unita' didattica
Programma
-
Materiale di riferimento
-
Unita' didattica
Programma
-
Materiale di riferimento
-
Moduli o unità didattiche
Unita' didattica
INF/01 - INFORMATICA - CFU: 9
Lezioni: 72 ore
Docente:
Vigna Sebastiano
Unita' didattica
INF/01 - INFORMATICA - CFU: 3
Laboratori: 48 ore
Docenti:
Bianchessi Nicola, Casazza Marco
Turni:
Turno A
Docente:
Casazza MarcoTurno B
Docente:
Bianchessi NicolaDocente/i
Ricevimento:
Giovedì, 11:00-13:00 e 14:00-15:00 - Su appuntamento (da concordare via email)
Stanza 3021 - Via Celoria, 18