Corso di Laurea in Ingegneria dell'Informazione
Tecniche della Programmazione
Programma definitivo A.A. 2022/23
Programma preliminare A.A. 2023/24
(il programma preliminare diventa automaticamente definitivo dopo la fine delle lezioni.
Prima Parte
- Sistema di elaborazione
-
- Architettura dell'elaboratore: la macchina di Von Neumann. Unita' centrale, periferiche, memoria centrale, CPU
- Rappresentazione dell'informazione nell'elaboratore: sistemi numerici, rappresentazione degli interi, rappresentazione floating point
- linguaggio macchina, assembler, fasi dell'esecuzione di un programma scritto in linguaggio macchina.
- Software di base: Il sistema operativo ed il file system. Compilazione ed esecuzione di un programma scritto in linguaggio ad alto livello.
Si usa il testo di riferimento 1., Capitolo 1. Inoltre si usa il materiale didattico reso disponibile mediante la pagina web del corso indicata in fondo (dispense, copie di slide presentate a lezione).
- Programmazione in C - prima parte
-
- Introduzione alla programmazione in C. Concetto di algoritmo. Concetto di variabile. Tipi semplici di dati associati alle variabili. Operatori. Espressioni e loro valutazione.
(Cap. 2 testo di riferimento 1.).
Librerie di funzioni, per l'Input/Output (I/O) (Capp. 2, 9 testo di riferimento 1.)
- Istruzioni e blocchi di istruzioni.
Strutture di controllo (diramazione ed iterazione), operatori logici (Capp. 2,3,4 testo di riferimento 1.)
- array (Cap. 6 testo di riferimento 1.)
- funzioni, visibilita' e ciclo di vita delle variabili. (Cap. 5 testo di riferimento 1.)
- progettazione e implementazione di programmi in ambiente devC++ (MA noi programmiamo in C!). Implementazione di algoritmi notevoli.
- File testuali. (Cap. 11 testo di riferimento 1.)
Si usa il testo di riferimento 1., con livello di approfondimento tale da poter svolgere le esercitazioni guidate stabilite durante la prima parte del corso.
Seconda Parte
- Programmazione in C
-
- Puntatori (Cap. 7 testo di riferimento 1.)
- stringhe di caratteri alfanumerici (Cap. 8 testo di riferimento 1.)
- allocazione dinamica della memoria; funzioni malloc e free; funzione realloc
- array statici e array dinamici; stringhe con allocazione "esatta"
- strutture
- ricorsione
Si usa il testo di riferimento 1., con livello di approfondimento tale da poter svolgere le esercitazioni guidate pubblicate durante la seconda parte del ciclo di lezioni.
(Facoltativamente si puo' approfondire con il testo di riferimento 2., cap. 4, prime tre sezioni).
- Metodologie e tecniche di programmazione
-
- metodologie di sviluppo del software
- tecniche di test dei programmi
Si usa il testo di riferimento 2., capitoli 1 e 2
- Strutture di dati in C
-
- tabelle di dati (array di strutture).
Ci sono esercitazioni guidate dedicate a questi argomenti.
La definizione della struttura di tabella e' trattata nelle slide presentate a lezione.
- Strutture di dati dinamiche: liste concatenate.
Ci sono esercitazioni guidate dedicate a questi argomenti.
Si usa il testo di riferimento 2., Cap. 6.
- Strutture di dati dinamiche: alberi
Ci sono esercitazioni guidate dedicate a questi argomenti.
Si usa il testo di riferimento 2., Cap. 8 (escludendo la definizione e le applicazioni della visita per livelli).
Materiale didattico
Per ulteriori chiarimenti sul contenuto delle singole lezioni impartite, si puo' fare riferimento al piano delle lezioni, disponibile nella pagina internet del corso (vedi sotto).
Testi di riferimento
- Paul J. Deitel, Harvey M. Deitel: Il linguaggio C. Fondamenti e tecniche di programmazione. Ed. Pearson
- D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Ed. Progetto Leonardo, Bologna
Internet
-
Materiale relativo agli esercizi presentati in classe e alle esercitazioni guidate, svolte in laboratorio, è reso disponibile attraverso la pagina web del corso - http://www.dis.uniroma1.it/~marte (seguire il link per la zona "didattica" e poi quello per il corso).
-
Le modalita' di esame (vedi pagina web del corso) prevedono 1) un esame intemedio (gennaio/febbraio), 2) la consegna (e approvazione da parte del docente) di un certo numero di "homework" e 3) l'esame (scritto+orale) finale.