Programmazione

A.A. 2018/2019
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Learning objectives
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".
Expected learning outcomes
Non definiti
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Course syllabus and organization

Edizione unica

Responsabile
Periodo
Primo semestre

STUDENTI 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.
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
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
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
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
STUDENTI NON FREQUENTANTI
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

Unita' didattica
INF/01 - INFORMATICA - CFU: 3
Laboratori: 48 ore
Docenti: Bianchessi Nicola, Casazza Marco
Turni:
Turno A
Docente: Casazza Marco
Turno B
Docente: Bianchessi Nicola

Professor(s)
Ricevimento:
Giovedì, 11:00-13:00 e 14:00-15:00 - Su appuntamento (da concordare via email)
Stanza 3021 - Via Celoria, 18