appunti di informatica

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

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
-copy
-call statiche e dinamiche

mvs/tso
data set: librerie e membri, allocazione, cancellazione, copia, rename
browsing ed editing di membri
compare, ricerca stringhe
stampa di data set
jcl: compilazione, esecuzione di programmi
sdsf: gestione dei processi
ftp tra ambienti e file transfer
applicativi: endevor, changeman, roscoe
debug batch e tp: xpediter

programmazione concorrente su mainframe
transazioni cics, autorestart
il comando new copy
display in un programma tp
mappe BMS
istruzioni cics dentro un programma cobol

database relazionali: db2
sql: select, insert, delete, update
sqlcodes
subquery, join
spufi: opzioni principali ed esecuzione
qmf: funzioni principali ed avanzate, gestione data set
unload, load: sysrec e syspunch
db2 commands: restart del tablespace & indici
oracle: tora e toad
ddl: create, alter, truncate, drop, creazione indici
istruzioni sql dentro un programma cobol
cursori: dichiarazione, fetch
gestione delle date e dei timestamp in oracle

unix/linux
kernel, shell, directory tree
sintassi tipica di un comando unix
utenti, gruppi, permessi su file e directory
editor di testo: vi
esecuzione di processi, fork
parsing di comandi, metacaratteri, caratteri speciali, globbing, escaping, quoting
variabili, tipi di variabili, variabili d'ambiente
bash initialization
aritmetica su interi
test, operatori di confronto
parametri
condizioni: if, case
file redirection
mkpipe
tar
grep, sed, espressioni regolari
exit, exit status
printf, read, select
here document
cicli: for, while, until, break, continue
and/or logici
declare
processi: foreground & background, crontab, terminazione di processi
funzioni
array
trap
awk
demoni

C/C++
-tipi di dati, dichiarazione, costanti
-operatori di assegnazione, aritmetici, di confronto, logici
-condizioni
-cicli
-tipi speciali di variabile
-array, stringhe
-funzioni, dichiarazione, librerie esterne
-input/output
-accesso a file esterni
-funzioni matematiche
-puntatori, operatori relativi a puntatori
-funzioni per la gestione della memoria
-passaggio di variabili nelle funzioni
-librerie win32, api, driver grafici (CGA, EGA, VGA)
-pile e trucchi nella gestione della memoria, exploit

assembly
linguaggio macchina
assembly: sintassi AT&T e sintassi Intel
processore x86, registri: eax, ecx, edx, ebx, esp, edp, esi, edi, eip, eflags
disassembler: objdump
debugger: gdb (examine, info register, print, nexti)
istruzioni assembly: mov, sub, cmp, jle, jmp, call, lea, inc
prologo di una funzione
DWORD, ordinamento little-endian

java
-JDK, scrittura, compilazione ed esecuzione di classi
-tipi primitivi: interi, in virgola mobile, char, booleani, letterali
-la classe String
-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):
-definizione di classi, proprieta' e metodi
-istanze di oggetti
occultamento di variabili
garbage collection e metodo finalize()
metodi costruttori
overload di metodi
caratteristiche fondamentali OOP:
-incapsulamento
-ereditarieta': superclassi e sottoclassi, override di metodi
-polimorfismo
modificatori di visibilita': public, private e protected
modificatore final
modificatore static
modificatore abstract
classe Vector
casting di classi
side effect
classe Iterator
classi per la data
classe String e Stringbuffer
gestione delle eccezioni
gestione di file
interfacce
interfaccia Comparable
package, modificatori
classe Object
wrapper di tipi semplici
classe Math
thread
sincronizzazione dei thread
modificatore volatile
file jar
jdbc
eventi: modello di delega
classi di eventi
sorgenti e listener di eventi
classi interne
classi adapter
classi anonime
tools: auto-comment, javadoc
interfacce utente
awt
classi Panel e Window
menu
etichette, pulsanti e caselle di testo
gestori di layout: FlowLayout, BorderLayout, GridLayout
swing

programmazione web
www
xml
xhtml
css
javascript
protocollo http
applet
-init()
-start()
-paint()
-stop()
-destroy()
php
CMS: drupal
j2ee
-apache tomcat
-jsp
-servlet
-framework struts: form, servlet, tag
-file properties
ajax
jquery

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

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

intelligenza artificiale
connessionismo, reti neurali, calcolo parallelo
applicazioni: data mining, sistemi esperti

interpretazione quantistica di Zeilinger, qubits
quantum information & cryptography
automi a stati finiti, macchine di Turing e sistemi dinamici
teoria del caos
fuzzy logic



(c) 2010 - Ascanio Borga - homepage