Fondamenti di Informatica A 1999/2000

Contenuti

  • Introduzione generale. Introduzione al Corso, testi, modalita’ di esame.
  • Concetti fondamentali di Internet, web, HTML.
  • Il web per la interazione docente-studenti.
  • Generalità sull'elaboratore dal punto di vista dell'utente. Sistema operativo.
  • Introduzione alla struttura di un elaboratore. CPU, periferiche, memoria. Memorie di massa: caratteristiche e tipi principali. Memoria centrale: RAM, ROM. Il software e il sistema operativo. Classificazione dei sistemi operativi. Il software di comunicazione e il software applicativo.
  • Classificazione dei sistemi operativi e ambienti di programmazione.
  • Architettura di un elaboratore: CPU, memo­ria, periferiche. CPU: unità di controllo, ALU, registri. Gerarchia delle memorie, memoria cache. Ciclo fetch / decode / execute. Indiriz­za­mento della memoria: instruction register e program counter.
  • Il problema del progetto: dal problema all'al­go­ritmo. Algoritmi e loro proprietà. Algoritmi equivalenti.
  • Algoritmi, macchine, linguaggi. La macchina di Turing. Universal Turing Machine come interprete di un linguaggio. UTM e macchina di Von Neumann: computazione e interazione. Linguaggi di coordinazione.
  • Linguaggi di alto livello: generalità. Diverse sorgenti: linguaggi imperativi, logici, funzionali.
  • Linguaggi, grammatiche e macchine per riconoscere linguaggi. Il concetto di grammatica formale e grammatica BNF. Regole di produzione e alberi sintattici. Esempi.
  • Il linguaggio C: generalità. Costanti e tipi predefiniti. Il concetto di espressione. Operatori e operandi: una duplice classificazione. Espressioni aritmetiche, relazionali, logiche e condizionali. Priorità e associatività degli operatori. Ordine di valutazione degli operandi come regola semantica. Riassunto degli operatori.
  • Grammatica formale delle espressioni aritmetiche: grammatica ricorsiva a sinistra e albero sintattico di una espressione. Controesempi: grammatica non ricorsiva e grammatica ricorsiva a destra.
  • Struttura di un programma C: il main. Il concetto di variabile: L-value e R-value. Definizione di variabili in C. Espressioni che contengono variabili. Due esempi (il problema della conversione Celsius / Fahrenheit e il problema del triangolo) dalla specifica, al progetto, alla codifica in C.
  • Costruzione di un’applicazione: compila­zio­ne, collegamento. Librerie di sistema. La costruzione manuale e gli ambienti di sviluppo Djgpp/Rhide e TurboC. Il concetto di progetto. Progetti in Djgpp e in Turbo C. Il debugger. Esempi di sessione passo-passo dalla scrittura, alla costruzione, all’ese­cu­zio­ne con il debugger dei due programmi sopra sviluppati.
  • Funzioni in C. L’approccio funzionale. Record di attivazione.
  • Progetti in C. Progetti su più file e preprocessore.
  • Iterazione
  • Procedure
  • Pre-processore e #define
  • Array e stringhe
  • Numeri
  • I/O in C
  • File. File binari e di testo in C
  • Tipi. Tipi di dato astratto (ADT)
  • Allocazione dinamica della memoria
  • CGI e HTML
  • Complessità e algoritmi di ordinamento
  • Computabilità e linguaggi
  • Introduzione alla programmazione a oggetti
  • Introduzione al linguaggio Java. Architettura, classi, funzioni statiche. Il main. Esempi. Classi e oggetti: l’operatore new. Riferimenti a oggetti.
  • Uso dei riferimenti in Java. Il costruttore. Tipi primitivi in Java vs. oggetti. Riferimenti e passaggio dei parametri. Stringhe in Java. Array in Java.
  • I package in Java
  • Oggetti composti: concetto ed esempio (l’Orologio a partire dal Counter).
  • Progettazione incrementale: il principio di embedding e la delegazione. Esempio: dal Counter al Counter2 con decremento. Limiti di questo approccio.
  • L’ereditarietà in Java. Esempi. Polimorfismo e late binding.
  • Ereditarietà: tassonomie. Object e i suoi metodi. Classi finali. Esercizio di specializ­zazione: il componente Finestra.
  • Eccezioni in Java. Rudimenti di grafica: uso di un componente già pronto. Overloading e specializzazione di componenti.
  • Il package Swing: generalità, JFrame, JPanel. Disegno di linee e semplici forme geometriche. Componenti attivi. Eventi e ascoltatori degli eventi. JLabel, JButton, JTextField. Esempi.
  • Interfacce in Java: esercizio reali/complessi.
  • Il package Swing: JTextField e JCheckBox. JRadioButton. Esercizi applicativi. Una piccola calcolatrice.
  • Applet in Java. Storia, differenze con le applicazioni, esempi. Il problema della versione della machcina virtuale e l’HTML converter.
  • Il package di I/O: stream di byte e stream di caratteri. Reader e writer. I/O da file: esempi. I/O da console. Esempi.
  • Il package di rete: URL e l’accesso a siti web. Il concetto di socket. Esempi di applicazioni client/server via socket.