appunti di informatica

teoria degli insiemi
teoremi di Godel
macchina di Turing e calcolabilita'
realizzazioni della macchina di Turing, automi a stati finiti, algoritmi

linguaggi di programmazione, linguaggi compilati e interpretati
paradigmi di programmazione
il teorema di Jacopini-Bohm e la programmazione strutturata
i diagrammi di flusso, costrutti principali: routine, cicli e condizioni
algoritmi di sort
file sequenziali
trattamento dei file sequenziali: rotture e bilanciamenti
la pseudocodifica

il linguaggio Cobol:
-struttura di un programma cobol, le quattro division
-tipi di dati, numerici ed alfanumerici
-tabelle di working storage
-routine, cicli e condizioni in cobol
-sintassi delle istruzioni principali
-le copy
-le call statiche e dinamiche

i mainframe
l'edit del tso: comandi principali
jcl ed sdsf: compilazione, esecuzione di programmi
mvs, data set: librerie e membri, allocazione, cancellazione, copia, rename
funzioni avanzate sui data set: compare, ricerca stringhe
ftp tra ambienti e file transfer
stampa di data set
applicativi: endevor, changeman, roscoe
debug batch e tp: xpediter

database relazionali
db2/sql: select, insert, delete, update
sqlcodes
istruzioni sql avanzate, subquery
spufi: opzioni principali ed esecuzione
qmf: funzioni principali ed avanzate, gestione data set
unload, load: sysrec e syspunch
db2 commands: restart del db2
istruzioni db2 dentro un programma cobol
cursori: dichiarazione, fetch

gli applicativi tp
transazioni cics, autorestart
il comando new copy
display di un programma tp
mappe BMS
istruzioni cics dentro un programma cobol

sistemi dipartimentali, linux, comandi fondamentali
shell scripting elementare:
-tipi di variabili, wildcards e caratteri speciali
-operatori
-condizioni: if, case
-cicli: for, while
-funzioni esterne
-demoni

il linguaggio java:
-JDK, scrittura, compilazione ed esecuzione di classi
-tipi di dati: interi, in virgola mobile, char, booleani, letterali
-operatori: incremento, decremento, logici, matematici, precedenza tra operatori
-conversioni di tipi, casting
-array mono e multidimensionali
-condizioni: if, switch
-cicli: while, do-while, for
-istruzioni di controllo: break, continue, return
programmazione ad oggetti (OOP):
    -classi (modelli di programmi astratti, dotati sia di strutture dati che di procedure che li utilizzano)
    -oggetti (istanze di classi, sia dati - o proprieta' - che procedure - o metodi)
caratteristiche fondamentali OOP:
    -incapsulamento (proprieta' degli oggetti di contenere sia dati che procedure che operano su di essi)
    -ereditarieta' (meccanismo che permette di derivare nuove classi da classi gia' esistenti, aggiungendo delle proprieta' in modo da specializzarle)
    -polimorfismo (possibilita' di richiamare lo stesso metodo su classi differenti, ottenendo risultati differenti)
-applet
-IDE: Eclipse, Netbeans

programmazione web
linguaggi di markup, html
linguaggi di scripting, javascript
css, fogli di stile
siti web dinamici, accesso a database, xml, xsl

il linguaggio C/C++:
-struttura di un programma c, funzioni, librerie esterne
-tipi di dati e dichiarazione, costanti
-vettori e matrici
-operatori di assegnazione, aritmetici, di confronto, logici
-cicli, alternative
-input/output
-funzioni matematiche
-accesso a file esterni
-puntatori, operatori relativi a puntatori
-funzioni per la gestione della memoria
-passaggio di variabili nelle funzioni
-librerie ed api, utilizzo delle librerie win32
-gestione dei driver grafici: CGA, EGA, VGA
-IDE: DevC++
-pile e trucchi nella gestione della memoria

programmazione di basso livello
assembly
linguaggio macchina
processori

teoria dell'informazione di Shannon
entropia e informazione

crittografia
crittosistemi a blocchi:
la chiave e' fissa di una certa lunghezza
crittosistemi a flusso:
la chiave varia in funzione del testo
crittosistemi simmetrici (a chiave privata):
la chiave per la decifratura e' la stessa di quella della cifratura
la sicurezza dipende dalla segretezza e dalla complessita' della chiave
esempi: DES & Triple DES, Blowfish, IDEA, RC4, Safer
crittosistemi asimmetrici (a chiave pubblica):
la chiave per la decifratura e' diversa da quella con cui e' effettuata la cifratura
la sicurezza dipende dalla difficolta' di invertire una certa funzione matematica (solitamente la scomposizione in fattori primi di un numero estremamente grande)
esempi: RSA, Diffie-Hellman, DSS, ElGamal, LUC, Crittosistemi con curve ellittiche
firma digitale: esempio di utilizzo di algoritmi a chiave pubblica che certifica l'identita' di un soggetto
la firma digitale consiste in un messaggio cifrato mediante una chiave privata: se la firma si decifra con la chiave pubblica si e' sicuri che e' stata cifrata da chi possiede la corrispondente chiave privata
la sicurezza dipende dalla segretezza della chiave privata (non necessaria per verificare l'autenticita' della firma): solo chi possiede la chiave privata puo' firmare messaggi, mentre chiunque puo' verificare l'autenticita' della firma
hash functions
pseudorandom number generators

interpretazione quantistica di Zeilinger, qubits
quantum information
quantum cryptography

intelligenza artificiale
connessionismo, reti neurali, calcolo parallelo
applicazioni: data mining, sistemi esperti
automi a stati finiti, macchine di Turing e sistemi dinamici
teoria del caos
fuzzy logic


"The real question is not whether machines think but whether men do. The mystery which surrounds a thinking machine already surrounds a thinking man."
B. F. Skinner


(c) 2008 - Ascanio Borga - homepage