Fondamenti di architettura e programmazione T1/2006-2007

Da WikiDsy.


ATTENZIONE! PAGINA IN FASE DI COSTRUZIONE! MOLTE INFORMAZIONI DEVONO ANCORA ESSERE INSERITE PERCHè IL LABORATORIO INIZIA IL 18 OTTOBRE!


Informazioni Generali

Docenti

Teoria: Boldi Paolo.

Laboratorio: Cazzola Walter.


Contatto docenti e tutor

Prof. Boldi: boldi@dsi.unimi.it

Prof. Cazzola: cazzola@dico.unimi.it

Tutor : (per dubbi sugli esercizi java) tutor_fap1@dico.unimi.it


Orario Lezioni

Teoria

Lun: 10.30 - 13.30 in Aula 200

Mar: 08:30 - 10:30 in Aula V1 (solo per lezioni di recupero! Normalmente la lezione in questo giorno non c'è e sarà il prof. a farci sapere quando si dovrà andare)

Ven: 08.30 - 11.30 in Aula 200

Attenzione! L'orario effettivo di inizio/fine lezioni sarà alle 9:00 (anzichè alle 8:30) e finirà alle 10:30; mentre l'altro sarà dalle 10:30 alle 13:00 (anzichè alle 13:30).


Laboratorio

Mer: 10.30 - 12.30 in Aula V3 (lezione teorica)

Gio: 10:30 - 11:30 in Aula 309 (esercitazione pratiche al computer)


Per gli studenti degli anni precedenti

Avrete notato che i professori hanno cambiato il turno; inoltre, il laboratorio di programmazione verrà fatto in Via Venezian nella nuova aula computer 309 con il professore e tutor e non più in Comelico solo con i tutor.


Orario ricevimento

Prof. Boldi: Giovedì, dalle ore 13.30 alle ore 14.30, nel suo studio di Via Comelico, 39/41 (II piano), su appuntamento

Prof. Cazzola:

Pagina web del corso

Teoria(FAP): http://boldi.dsi.unimi.it/Corsi/FAP2006/

Programmazione (LP): http://www.disi.unige.it/person/CazzolaW/lab_informatica_generale.html#2006

Organizzazione del corso

Il corso si organizzera grosso modo in 2 parti:

I°: Architettura

II°: Programmazione


Testi Consigliati

I Parte: Architetture

Il prof mette a disposizione delle dispense che si possono scaricare dalla sua pagina web del Prof. Boldi: inoltre, il prof invita ad avvertirlo per eventuali errori (se notate le indica con le versioni dall'1 in poi, quindi la versione più recente, in un futuro, sarà quella con il numero più alto).

Comunque, per approfondimenti viene consigliato il testo: S. Ceri, D. Mandrioli, L.Sbattella: Informatica arte e mestiere (II edizione), McGraw-Hill,2004.


II parte: Programmazione

G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA (II edizione), Addison-Wesley, Pearson Education Italia, 2005.

Attenzione: questa seconda edizione utilizza già Java 1.5, quindi è sconsigliato comprare la prima edizione (che è a Java 1.4) anche se è a metà prezzo.


Modalità Esami

Sono previsti 3 compitini (non obbligatori) molto probabilmente fissati per:

  1. 24 Ottobre 2006
  2. 11 Dicembre 2006
  3. 22 Gennaio 2007

Se verranno superati tutti e tre con la sufficienza, cioè un 18, si potrà evitare di fare l'appello scritto (quello completo).

Se si perde anche un solo compitino, non si potrà recuperare, quindi si dovrà fare l'appello completo.

Il voto ottenuto con i compitini vale un anno, cioè fino a Gennaio 2007

Gli appelli completi cominceranno da Febbraio e saranno a:

  1. Febbraio e Aprile (in forse, perchè stanno valutando di eliminere gli appelli di Aprile)
  2. Giugno e Luglio
  3. Settembre e Gennaio

Per ogni "coppia" di appelli viene presentato un progetto da svolgere (della parte di laboratorio) qualche settimana prima del primo appello ad esso relativo (cioè: il progetto per gli appelli di teoria di Febbraio e Aprile sarà dato a circa metà Gennaio; il progetto degli appelli di teoria di Giugno e Luglio sarà dato circa a metà Maggio; il progetto per gli appelli di teoria di Settembre e Gennaio sarà dato a circa metà Gennaio), quindi ci saranno tre possibilità di fare il progetto nell'arco dell'anno.

Il progetto verrà dunque consegnato se si avrà intenzione di dare l'appello scritto in uno dei due mesi in coppia. Il progetto deve essere consegnato sottoponendolo all'indirizzo http://fap.dsi.unimi.it : il tempo stimato per svolgere un progetto è da 3 a 4 settimane e si consiglia di svolgerlo in gruppi da 3 persone. Attenzione! Solo se si è fatto giusto il progetto (con l'approvazione del prof Cazzola), si può dare l'appello di teoria! Se invece si è bocciati nel primo scritto della coppia, si può ridare il secondo scritto della coppia; in caso contrario, cioè si passa il progetto ma non si passa nessuno dei due scritti della coppia, bisogna ridare tutto, anche il progetto.

Passati tutti e due gli esami (teoria + progetto), si dovrà sostenere un colloquio sul progetto (con il prof Cazzola) per verificare la "paternità" del lavoro.

Il voto finale del corso (che vale 18 cfu) sarà dato da 2/3 voto della teoria + 1/3 voto del progetto; sarà anche possibile sostenere un esame orale (facoltativo) per migliorare il voto (ma se va male, il voto si abbassa!!!).

Attenzione! Per dare gli esami bisogna iscriversi al SIFA.


Links e suggerimenti utili

Dsi: http://www.dsi.unimi.it

Wikipedia: http://www.wikipedia.org/


Lezioni

Lezione 02/10/2006 (teoria)

Cos'è un computer?

  • Un elaboratore programmabile, lavora secondo una logica programmata.
  • Un lettore dvd lavora sotto logica cablata, il programma è fisso non è modificabile.

"Come un cuoco, data una ricetta sa crearla qualunque essa sia"


Diversificazione PC

  • palmtop --> stanno in un palmo della mano
  • notebook --> della grandezza di un quaderno
  • laptop --> "posabile sulle ginocchia"
  • desktop --> PC da scrivania
  • workstation --> PC con prestazioni particolarmente buone (rendering)
  • server --> un PC che da dei servizi (vuol dire tutto e niente in quanto ogni pc da dei servizi)


Com'è fatto un computer fisicamente?

  • uno "scatolotto", un video, una tastiera, un mouse

tutto ciò fuori dallo "scatolotto" (Case) sono Periferiche Esterne, ci sono anche periferiche interne al Case.


Cosa c'è dentro il Case?

  • Un alimentatore: commuta la corrente casalinga alternata in corrente continua e da energia a tutte le periferiche interne (in alcuni casi anche esterne, vedi USB).
  • Ventole per raffreddare il case, indispensabili per un corretto funzionamento e per far si che il computer non bruci, letteralmente.
  • Scheda Madre (MotherBoard): il cuore del computer, tutto ciò a lei esterne sono periferiche.
  • La piu importante è la CPU (Central Process Unit): il cervello del computer.
  • Clock: tutte le parti del computer devono funzionare in sincronia, per ottenere questo si usa il clock il quale invia un segnare il Hz (1 segnale al secondo) o multipli dell'Hz, MHz (1'000'000 segnali al secondo), GHz (1'000'000'000 segnali al secondo).
  • Memoria: se si trova sulla MotherBoard si chiama Memoria Centrale e tutti i dati per essere elaborati devono risiedere nella Memoria Centrale.

Fisicamente è inserita in slot presenti nella MotherBoard, le memorie hanno capacità di memorizzazione differenti. La quantità di memoria è uno dei fattori fondamentali per la velocità del computer, maggiore è la capienza maggiore è la velocità di calcolo.

  • Interfacce: scheda eletronica che regola la comunicazione tra MB e le periferiche

Monitor-->Scheda Video-->MotherBoard, la Scheda Video è un'interfaccia di comunicazione, attiva e non passiva. Un'interfaccia standard, dei ultimi tempi, è l'USB (1.1 e 2.0, variano nella velocità di comunicazione).
Altri standard non molto usati sono: Firewire, LPT, COM ed altri.


Memorie di massa
Sono dispositivi sui quali è possibile registrare dei dati. Le memorie sono costituite da una serie di bit in codice binario (0 e 1).
Vi sono vari tipi di memorie di massa:

  • memoria centrale: (RAM) di tipo transiente, se il pc viene spento i dati registrati nella RAM vengono persi.
  • memorie magnetiche: HardDisk, Foloppy, vari settori dei dischi vengono magnetizati e smagnetizati in modo da avere, in lettura, una data sequenza di 0 e 1 che identificano cosa vi è registrato sul disco.
  • memoria a stato solido: USB-PenDrive, RAM, memorie per fotocamere digitali.
  • memorie ottiche: CD e DVD.


Come funzionano le memorie ottiche?
Un CD è fatto da tante celle piene o bucate in modo tale che facendoci passare un laser esso viene riflesso se la cella è piena, passa attraverso se la cella è bucata, uno specchietto posto sopra il CD (nel lettore) rilleva il codice binario (0:1 = pieno:bucanto) e riesce a decifrare ciò che il CD contiene.
Un CD-R è fatto inizialmente da solo celle piene, un masterizzatore è in grado di bucare dove neccessario per far si che le informazioni vengano impresse su di esso.
Un CD-RW è fatto da bolle le quali possono essere modellate a piacimento in modo da poterlo scrivere e riscrivere più volte, ovviamente c'è un limite massimo di riscrittura a causa della continua usura dovuta alla modellazione.


Lezione 06/10/2006 (teoria)

SOFTWARE

  • BIOS: primo programma eseguito quando si avvia il computer e serve per verificare lo stato del computer (controlla che tutto funzioni)
    • esegue un check di memoria (quanta ce n’è)
    • esegue un controllo hardware (se è tutto collegato)
    • si trova sopra la motherboard
    • dipende dalla macchina utilizzata (perché scritto dal produttore)
    • può essere configurato (molti bios sono configurati per non partire senza la tastiera)
      • una configurazione utile è la BOOT SEQUENCE (sequenza di periferiche nelle quali il sistema operativo deve essere cercato); per esempio, un ordine per cercare il sistema operativo può essere hard disk - cd – floppy, ma se si vuole che prima venga cercato sul cd, poi sull’hard disk e infine sul floppy, si dovrà dare la sequenza cd - h.d. – floppy
      • tra bios e boot sequence ci può essere il BOOT LOADER (quando si ha una macchina con + sistemi operativi): consente di decidere con quale sistema operativo partire
      • la fase bios – boot loader – boot sequence è detta BOOT STRAP
    • una volta che il bios ha terminato, cede il passo al sistema operativo (S.O.)


  • S.O. : programma che viene caricato in una memoria
    • gestisce le risorse: cpu, periferiche, ecc.
    • garantisce che un malfunzionamento di un programma non influisca sul funzionamento degli altri programmi aperti
    • decide come disporre i dati sulle memorie di massa
    • S.O. più conosciuti per PC:
      • Windows (Microsoft)
      • Linux (famiglia degli Unix)
      • OS/X
      • BSD
      • ecc
    • un esempio dei pochi casi in cui un utente può intervenire nella gestione dei processi (cioè i programmi in esecuzione) è quando un programma si blocca e facendo CTRL + ALT + CANC esce una finestra nella quale viene chiesto all’utente se si vuole “uccidere” (terminare) il programma che non risponde
    • lo SHELL (guscio) del S.O. è la parte visibile con cui l’utente interagisce con il S.O: in prevalenza per la gestione dei files
      • in Windows lo shell è fisso (tranne per poche cose come il cambio di colore delle finestre, ecc)
      • in Linux ci sono molte più scelte disponibili
    • Attenzione! Mediaplayer, Explorer, Office e altri programmi non fanno parte del S.O.!


  • LIVELLI: per capire meglio a che livello si trovano tutti gli elementi descritti fino ad ora, si può pensare ad una cipolla, che è fatta a strati; bisogna cominciare dal suo strato più interno (il primo livello) per andare verso l’esterno
  1. HARDWARE (macchina fisica)
  2. S.O. (gestisce le risorse fisiche)
  3. SOFTWARE DI BASE (programma per copiare files, rinominarli, ecc, spesso fornito con il S.O; esistono anche quelli di archiviazione e gli antivirus)
  4. SOFTWARE DI SVILUPPO (serve solo per chi scrive programmi, quindi per chi non programma di solito non c’è)
  5. APPLICAZIONI (programmi destinati all’utente finale)
  • Attenzione! Se abbiamo “xyz.doc”, questo è un file (cioè un insieme di dati), mentre Word è un programma per scrivere testi sul quale si apre il file. I programmi sono oggetti attivi (che si eseguono), mentre i files sono oggetti passivi (che si manipolano con i programmi)
  • Categorie di applicazioni:
  • Browser (Client Web): per navigare in Internet (Internet Explorer, FireFox, Opera, ecc)
  • Word Processor: elaboratore di testi (Microsoft Word, Open Office Word, ecc)
  • Fogli Elettronici (Spread sheet): (Microsoft excel, Open Office Excel, ecc)
  • Editing Grafico: (Photoshop, Illustrator, ecc)
  • Desktop Publishing: produzione pubblicitaria
  • Rendering: sintesi di immagini 3D
  • File Sharing (condivisione di files): programmi con cui ci si collega ad altri utrnti per scaricare
  • Client di posta elettronica: (Outlook, ecc)
  • Database: (Microsoft Access, ecc)
  • ecc…


Gli altri appunti (anche questi messi sopra) li trovate tutti qui: http://www.dsy.it/forum/showthread.php?s=&threadid=27775