Differenze tra le versioni di "Fondamenti di architettura e programmazione T2/2006-2007"
(→DIARIO DEL CORSO - LABORATORIO) |
(→News/Avvisi) |
||
(45 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
+ | [[Categoria:Corsi 2006-2007]] | ||
+ | <!-- non rimuovere la categorizzazione precedente --> | ||
+ | ==News/Avvisi== | ||
+ | |||
+ | '''[FAP]''' | ||
+ | |||
+ | *Sono usciti gli esiti del primo compitino: [http://homes.dsi.unimi.it/~mereghet/fap/esami0607/esiti/esiti31-10-06.pdf] | ||
+ | *31/10 Primo compitino - Solo esercizi | ||
− | + | *27/10 Attivata la lezione in preparazione al compitino (aula V1 14.30 - 16.30) | |
− | |||
*Per poter sostenere gli scritti regolari di gennaio 2007 è necessario aver consegnato il progetto SymbolicManipulator ed aver ottenuto per quest'ultimo una valutazione positiva | *Per poter sostenere gli scritti regolari di gennaio 2007 è necessario aver consegnato il progetto SymbolicManipulator ed aver ottenuto per quest'ultimo una valutazione positiva | ||
Riga 13: | Riga 20: | ||
*Il corso avrà inizio lunedì '''16.10.2006''' e fino a giovedì '''02.11.2006''' seguirà il seguente calendario: | *Il corso avrà inizio lunedì '''16.10.2006''' e fino a giovedì '''02.11.2006''' seguirà il seguente calendario: | ||
− | + | :Lunedì 16/23/30 ottobre: 15.30 - 17.30 (aula 200) | |
− | + | :Giovedì 19 ottobre e 2 novembre: 14.30 - 16.30 (aula 405) | |
− | + | :Giovedì 26 ottobre: 15.30 - 17.30 (aula 202) | |
---- | ---- | ||
Riga 23: | Riga 30: | ||
===[Docenti]=== | ===[Docenti]=== | ||
− | Carlo Mereghetti | + | *FAP - Carlo Mereghetti |
− | + | *LABORATORIO - Dario Malchiodi | |
− | Dario Malchiodi | ||
===[Contatto docenti]=== | ===[Contatto docenti]=== | ||
Riga 31: | Riga 37: | ||
Carlo Mereghetti: [mailto:mereghetti@dsi.unimi.it] | Carlo Mereghetti: [mailto:mereghetti@dsi.unimi.it] | ||
− | Dario Malchiodi : | + | Dario Malchiodi : [mailto:malchiodi@dsi.unimi.it] |
===[Orario Lezioni]=== | ===[Orario Lezioni]=== | ||
Riga 47: | Riga 53: | ||
'''''Laboratorio di Programmazione''''' | '''''Laboratorio di Programmazione''''' | ||
− | |||
− | |||
*Lunedì: 15.30 - 17.30 (aula 309 - Settore Didattico Celoria) | *Lunedì: 15.30 - 17.30 (aula 309 - Settore Didattico Celoria) | ||
*Giovedì: 14.30 - 16.30 (aula 309 - Settore Didattico Celoria) | *Giovedì: 14.30 - 16.30 (aula 309 - Settore Didattico Celoria) | ||
+ | |||
+ | Le lezioni cominceranno puntuali e termineranno 15 minuti prima (17.15 e 16.15) | ||
===[Orario ricevimento]=== | ===[Orario ricevimento]=== | ||
Riga 58: | Riga 64: | ||
*Carlo Mereghetti: Giovedì 14.30 - 16.30 (stanza S241) | *Carlo Mereghetti: Giovedì 14.30 - 16.30 (stanza S241) | ||
− | *Dario Malchiodi: ( | + | *Dario Malchiodi: Venerdì 13.30 - 15.30 (stanza S238) |
===[Pagina web del corso]=== | ===[Pagina web del corso]=== | ||
Riga 64: | Riga 70: | ||
*Fondamenti di Architetture e Programmazione: [http://homes.dsi.unimi.it/~mereghet/] | *Fondamenti di Architetture e Programmazione: [http://homes.dsi.unimi.it/~mereghet/] | ||
− | *Laboratorio di Programmazione: | + | *Laboratorio di Programmazione: [http://homes.dsi.unimi.it/~malchiod/?lang=it] |
===[Organizzazione del corso]=== | ===[Organizzazione del corso]=== | ||
+ | |||
+ | '''FAP''' | ||
'''''I parte: architetture''''' | '''''I parte: architetture''''' | ||
Riga 79: | Riga 87: | ||
*Java (programmazione ad oggetti) | *Java (programmazione ad oggetti) | ||
+ | |||
+ | |||
+ | '''Laboratorio''' | ||
+ | |||
+ | *Windows (non verrà trattato in quanto argomento noto a tutti) | ||
+ | *Linux | ||
+ | *Esempi di algoritmi | ||
+ | *Primi programmi in Java | ||
+ | *Selezione/Iterazione | ||
+ | *Dati/Espressioni | ||
+ | *Array | ||
+ | *Ereditarietà/Polimorfismo | ||
+ | *File/Interfacce | ||
+ | *Implementazione di classi I | ||
+ | *Implementazione di classi II | ||
+ | *Eccezione | ||
+ | *Ricorsione (l'argomento verrà trattato solo se ce ne sarà il tempo) | ||
===[Testi Consigliati]=== | ===[Testi Consigliati]=== | ||
Riga 115: | Riga 140: | ||
'''''Laboratorio di Programmazione:''''' | '''''Laboratorio di Programmazione:''''' | ||
− | ( | + | Progetto e sua discussione (vedi modalità esami di FAP) |
---- | ---- | ||
Riga 121: | Riga 146: | ||
===[DIARIO DEL CORSO - FAP]=== | ===[DIARIO DEL CORSO - FAP]=== | ||
− | + | ||
+ | |||
+ | ===Martedì 03.10.2006=== | ||
*Introduzione al corso | *Introduzione al corso | ||
Riga 129: | Riga 156: | ||
*Algoritmi: definizione di algoritmo - l'algoritmo di Euclide - esempi | *Algoritmi: definizione di algoritmo - l'algoritmo di Euclide - esempi | ||
− | *Linguaggio di programmazione (programma) - bit e byte (e relativi multipli) | + | *Linguaggio di programmazione (programma) - informazione, bit e byte (e relativi multipli) |
Riga 136: | Riga 163: | ||
Determinare i seguenti algoritmi: | Determinare i seguenti algoritmi: | ||
− | Input: x, y | + | ''Input:'' x, y |
+ | |||
+ | *Output: x + y ('''attenzione:''' l'utente è in grado di calcolare solo (+1, -1) | ||
+ | |||
+ | *Output: x * y ('''attenzione:''' l'utente è in grado di calcolare solo (+, -) | ||
+ | |||
+ | ===Mercoledì 04.10.2006=== | ||
+ | |||
+ | *Correzione degli esercizi | ||
+ | |||
+ | *Differenze fra una calcolatrice ed un calcolatore | ||
− | + | *Software e Hardware: definizione e loro composizione | |
+ | *La macchina di Von Neumann: CPU - RAM - Bus - Periferiche (loro definizione, struttura e unità di misura) | ||
− | + | *Ciclo macchina (''fetch/decode/execute'') e linguaggio Assembly - istruzioni (LOAD/STORE/ADD/SUB/DIV/MULT/MOD/INCR/DECR)- esempi | |
− | + | ===Martedì 10.10.2006=== | |
+ | *Breve ripasso del ciclo macchina e del linguaggio Assembly | ||
− | ''' | + | *Istruzioni di salto condizionato/incondizionato (JZERO/JUMP) - esempi |
+ | :(in particolare: riportare in Assembly l'algoritmo ''input:'' a, b - ''output:'' a+b (risultato in ''c'') potendo utilizzare solo il comando INCR/DECR) | ||
− | * | + | *Architettura della CPU: CU (Control Unit) - ALU - PC (Program Counter) - CLOCK - Registri |
+ | |||
+ | *Digitalizzazione delle informazioni: immagini - audio - testi | ||
+ | |||
+ | *Digitalizzazione dei numeri: sistema decimale e sistema in base ''b'' - esempi da base decimale a base ''b'' e viceversa | ||
+ | :(in particolare: base 8 [ottale] e base 16 [esadecimale - Hex]) | ||
+ | |||
+ | |||
+ | '''''Esercizi assegnati:''''' | ||
+ | |||
+ | Convertire in Assembly i seguenti algoritmi: | ||
+ | |||
+ | ''input:'' a, b | ||
+ | |||
+ | *output: a*b (risultato in ''c'') potendo calcolare solo + e - | ||
+ | *output: a^b (risultato in ''c'') | ||
+ | *output: MCD(a, b) - riportare l'algoritmo di Euclide in Assembly | ||
+ | |||
+ | ''input:'' a | ||
+ | |||
+ | *output: 1+2+3+...+a (sommatoria) | ||
+ | |||
+ | ===Mercoledì 11.10.2006=== | ||
+ | |||
+ | *Correzione degli esercizi | ||
+ | |||
+ | *Breve ripasso del sistema decimale/ottale/esadecimale/in base ''b'' | ||
+ | |||
+ | *Conversione dal sistema decimale/ottale/esadecimale al sistema binario e viceversa - esempi | ||
+ | |||
+ | *Esempi del più piccolo/grande numero rappresentabile in modulo e segno in un'architettura a ''n'' bit | ||
+ | |||
+ | *Operazioni nel sistema binario: somma (e caso particolare di ''overflow'') e sottrazione | ||
+ | |||
+ | *Modo di rappresentazione in modulo e segno | ||
+ | |||
+ | ===Martedì 17.10.2006=== | ||
+ | |||
+ | *Breve ripasso degli ultimi argomenti svolti | ||
+ | |||
+ | *I problemi della rappresentazione in modulo e segno | ||
+ | |||
+ | *Rappresentazione in complemento a due (e scorciatoia) - esempi | ||
+ | |||
+ | *Esempi del più piccolo/grande numero rappresentabile in complemento a due in un'architettura a ''n'' bit | ||
+ | |||
+ | *La sottrazione nel sistema binario con rappresentazione in complemento a due | ||
+ | |||
+ | *Rappresentazione dei numeri reali in un calcolatore: in virgola fissa/in virgola mobile | ||
+ | |||
+ | *Rappresentazione dei caratteri alfanumerici, d'interpunzione e di controllo: codifica ASCII/UNICODE | ||
+ | |||
+ | ===Mercoledì 18.10.2006=== | ||
+ | |||
+ | *Circuiti logici | ||
+ | |||
+ | *Algebra di Boole: AND/OR/NOT/XOR/NAND/NOR/Implicazione/Doppia Implicazione - tabelle di verità | ||
+ | |||
+ | *Espressioni booleane - esempi e loro rappresentazione grafica | ||
+ | |||
+ | *Precedenze nell'algebra booleana | ||
+ | |||
+ | *Equivalenze logiche: elenco - esempi | ||
+ | |||
+ | '''''Esercizi assegnati:''''' | ||
+ | |||
+ | *Rappresentare utilizzando '''solo''' porte NAND, l'equivalenza: (''x'' ^ ''y'') v (¬''x'' ^ ''y'') | ||
+ | |||
+ | Dimostrare le seguenti equivalenze: | ||
+ | |||
+ | *(¬(''x'' ^ ¬''y'') v (''x'' ^ ¬''y'')) ^ ''y'' = ''y'' | ||
+ | |||
+ | *(¬''x'' v ''y'') ^ ''x'' ^ ¬''y'' = 0 | ||
+ | |||
+ | ===Martedì 24.10.2006=== | ||
+ | |||
+ | *Correzione esercizi | ||
+ | |||
+ | *Approfondimento su Contraddizione-Tautologia | ||
+ | |||
+ | *Algebra booleana in un circuito ALU | ||
+ | |||
+ | *Calcolo proposizionale | ||
+ | |||
+ | ===Mercoledì 25.10.2006=== | ||
+ | |||
+ | *Svantaggi della programmazione in assembly | ||
+ | |||
+ | *Linguaggi ad alto livello | ||
+ | |||
+ | *Programmi e moduli | ||
+ | |||
+ | *Errori comuni durante la programmazione | ||
+ | |||
+ | *Java e applet Java | ||
+ | |||
+ | ===Venerdì 27.10.2006=== | ||
+ | |||
+ | *Preparazione al compitino - Esercitazioni in classe | ||
+ | |||
+ | ===Martedì 31.10.2006=== | ||
+ | |||
+ | *Compitino | ||
+ | ---- | ||
+ | |||
+ | ===[DIARIO DEL CORSO - LABORATORIO]=== | ||
+ | |||
+ | |||
+ | |||
+ | ===Lunedì 16.10.2006=== | ||
+ | |||
+ | *Presentazione del corso [http://homes.dsi.unimi.it/~malchiod/LP/Lab00-Presentazione.pdf] | ||
+ | |||
+ | *Sistemi operativi I [http://homes.dsi.unimi.it/~malchiod/LP/Lab02-Linux.pdf] | ||
+ | |||
+ | ===Giovedì 19.10.2006=== | ||
+ | |||
+ | *Sistemi operativi II [http://homes.dsi.unimi.it/~malchiod/LP/Lab02-Linux.pdf] | ||
+ | |||
+ | ===Lunedì 23.10.2006=== | ||
+ | |||
+ | *Codifica delle informazioni [http://homes.dsi.unimi.it/~malchiod/LP/Lab02-Conversioni.pdf] | ||
+ | |||
+ | ===Giovedì 26.10.2006=== | ||
+ | |||
+ | *Logica booleana e circuiti [http://homes.dsi.unimi.it/~malchiod/LP/Lab01-AlgebraBooleana.pdf] | ||
+ | |||
+ | ===Lunedì 30.10.2006=== | ||
+ | |||
+ | *Esempi di algoritmi [http://homes.dsi.unimi.it/~malchiod/LP/Lab03-Algoritmi.pdf] | ||
+ | |||
+ | ===Giovedì 02.11.2006=== | ||
− | * | + | *Esempi di algoritmi |
− | + | ===Lunedì 06.11.2006=== | |
− | * | + | *Primi programmi in java [http://homes.dsi.unimi.it/~malchiod/LP/Lab04-PrimiProgrammiJava.pdf] |
− |
Versione attuale delle 20:42, 6 nov 2006
Indice
- 1 News/Avvisi
- 1.1 [Docenti]
- 1.2 [Contatto docenti]
- 1.3 [Orario Lezioni]
- 1.4 [Orario ricevimento]
- 1.5 [Pagina web del corso]
- 1.6 [Organizzazione del corso]
- 1.7 [Testi Consigliati]
- 1.8 [Modalità Esami]
- 1.9 [DIARIO DEL CORSO - FAP]
- 1.10 Martedì 03.10.2006
- 1.11 Mercoledì 04.10.2006
- 1.12 Martedì 10.10.2006
- 1.13 Mercoledì 11.10.2006
- 1.14 Martedì 17.10.2006
- 1.15 Mercoledì 18.10.2006
- 1.16 Martedì 24.10.2006
- 1.17 Mercoledì 25.10.2006
- 1.18 Venerdì 27.10.2006
- 1.19 Martedì 31.10.2006
- 1.20 [DIARIO DEL CORSO - LABORATORIO]
- 1.21 Lunedì 16.10.2006
- 1.22 Giovedì 19.10.2006
- 1.23 Lunedì 23.10.2006
- 1.24 Giovedì 26.10.2006
- 1.25 Lunedì 30.10.2006
- 1.26 Giovedì 02.11.2006
- 1.27 Lunedì 06.11.2006
News/Avvisi
[FAP]
- Sono usciti gli esiti del primo compitino: [1]
- 31/10 Primo compitino - Solo esercizi
- 27/10 Attivata la lezione in preparazione al compitino (aula V1 14.30 - 16.30)
- Per poter sostenere gli scritti regolari di gennaio 2007 è necessario aver consegnato il progetto SymbolicManipulator ed aver ottenuto per quest'ultimo una valutazione positiva
[Laboratorio]
- Il corso avrà inizio lunedì 16.10.2006 e fino a giovedì 02.11.2006 seguirà il seguente calendario:
- Lunedì 16/23/30 ottobre: 15.30 - 17.30 (aula 200)
- Giovedì 19 ottobre e 2 novembre: 14.30 - 16.30 (aula 405)
- Giovedì 26 ottobre: 15.30 - 17.30 (aula 202)
[Docenti]
- FAP - Carlo Mereghetti
- LABORATORIO - Dario Malchiodi
[Contatto docenti]
Carlo Mereghetti: [2]
Dario Malchiodi : [3]
[Orario Lezioni]
Fondamenti di Architetture e Programmazione
- Martedì: 14.30 - 17.30 (aula V1 - Didatteca Venezian)
- Mercoledì: 15.30 - 18.30 (aula G14 - Settore Didattico Golgi)
- Venerdì: solo in caso di recupero lezioni, compitini... (previo avviso da parte del docente)
1/2 pause a discrezione del docente
Laboratorio di Programmazione
- Lunedì: 15.30 - 17.30 (aula 309 - Settore Didattico Celoria)
- Giovedì: 14.30 - 16.30 (aula 309 - Settore Didattico Celoria)
Le lezioni cominceranno puntuali e termineranno 15 minuti prima (17.15 e 16.15)
[Orario ricevimento]
- Carlo Mereghetti: Giovedì 14.30 - 16.30 (stanza S241)
- Dario Malchiodi: Venerdì 13.30 - 15.30 (stanza S238)
[Pagina web del corso]
- Fondamenti di Architetture e Programmazione: [4]
- Laboratorio di Programmazione: [5]
[Organizzazione del corso]
FAP
I parte: architetture
- Rappresentazione (digitale) dell'informazione
- Algebra di Boole
- Macchina di Von Neumann
II parte: programmazione
- Java (programmazione ad oggetti)
Laboratorio
- Windows (non verrà trattato in quanto argomento noto a tutti)
- Linux
- Esempi di algoritmi
- Primi programmi in Java
- Selezione/Iterazione
- Dati/Espressioni
- Array
- Ereditarietà/Polimorfismo
- File/Interfacce
- Implementazione di classi I
- Implementazione di classi II
- Eccezione
- Ricorsione (l'argomento verrà trattato solo se ce ne sarà il tempo)
[Testi Consigliati]
Fondamenti di Architetture e Programmazione:
- Ceri, Mandrioli, Sbattella: Informatica, arte e mestiere (McGraw - Hill, 2004) [in particolare i capitoli 2 e 11]
- Ferrari, Pighizzini: Dai fondamenti agli oggetti - corso di programmazione in java (Addison - Wesley, 2003)
Laboratorio di Programmazione:
(da inserire)
[Modalità Esami]
Fondamenti di Architetture e Programmazione:
- Scritto (sostituibile da 3 compitini, se in ciascuno si è preso un voto maggiore o uguale a 18)
- Progetto e sua discussione (dev'essere sviluppato entro 3 settimane dalla consegna della traccia. Può essere sviluppato singolarmente o in gruppi di al massimo 3 persone, ciascuna delle quali sosterrà poi la discussione)
- Orale (facoltativo - Ad ogni modo, un suo eventuale esito negativo comprometterà la media generale)
Ipotetico calendario:
- Compitini: ottobre/dicembre/gennaio
- Scritto: febbraio/aprile/giugno/luglio/settembre/gennaio
- Progetto: aprile/settembre/gennaio
Laboratorio di Programmazione:
Progetto e sua discussione (vedi modalità esami di FAP)
[DIARIO DEL CORSO - FAP]
Martedì 03.10.2006
- Introduzione al corso
- Definizione di informatica secondo l'A.C.M. (Association for Computing Machinery) e mezzi attraverso i quali viene trattata l'informazione
- Algoritmi: definizione di algoritmo - l'algoritmo di Euclide - esempi
- Linguaggio di programmazione (programma) - informazione, bit e byte (e relativi multipli)
Esercizi assegnati:
Determinare i seguenti algoritmi:
Input: x, y
- Output: x + y (attenzione: l'utente è in grado di calcolare solo (+1, -1)
- Output: x * y (attenzione: l'utente è in grado di calcolare solo (+, -)
Mercoledì 04.10.2006
- Correzione degli esercizi
- Differenze fra una calcolatrice ed un calcolatore
- Software e Hardware: definizione e loro composizione
- La macchina di Von Neumann: CPU - RAM - Bus - Periferiche (loro definizione, struttura e unità di misura)
- Ciclo macchina (fetch/decode/execute) e linguaggio Assembly - istruzioni (LOAD/STORE/ADD/SUB/DIV/MULT/MOD/INCR/DECR)- esempi
Martedì 10.10.2006
- Breve ripasso del ciclo macchina e del linguaggio Assembly
- Istruzioni di salto condizionato/incondizionato (JZERO/JUMP) - esempi
- (in particolare: riportare in Assembly l'algoritmo input: a, b - output: a+b (risultato in c) potendo utilizzare solo il comando INCR/DECR)
- Architettura della CPU: CU (Control Unit) - ALU - PC (Program Counter) - CLOCK - Registri
- Digitalizzazione delle informazioni: immagini - audio - testi
- Digitalizzazione dei numeri: sistema decimale e sistema in base b - esempi da base decimale a base b e viceversa
- (in particolare: base 8 [ottale] e base 16 [esadecimale - Hex])
Esercizi assegnati:
Convertire in Assembly i seguenti algoritmi:
input: a, b
- output: a*b (risultato in c) potendo calcolare solo + e -
- output: a^b (risultato in c)
- output: MCD(a, b) - riportare l'algoritmo di Euclide in Assembly
input: a
- output: 1+2+3+...+a (sommatoria)
Mercoledì 11.10.2006
- Correzione degli esercizi
- Breve ripasso del sistema decimale/ottale/esadecimale/in base b
- Conversione dal sistema decimale/ottale/esadecimale al sistema binario e viceversa - esempi
- Esempi del più piccolo/grande numero rappresentabile in modulo e segno in un'architettura a n bit
- Operazioni nel sistema binario: somma (e caso particolare di overflow) e sottrazione
- Modo di rappresentazione in modulo e segno
Martedì 17.10.2006
- Breve ripasso degli ultimi argomenti svolti
- I problemi della rappresentazione in modulo e segno
- Rappresentazione in complemento a due (e scorciatoia) - esempi
- Esempi del più piccolo/grande numero rappresentabile in complemento a due in un'architettura a n bit
- La sottrazione nel sistema binario con rappresentazione in complemento a due
- Rappresentazione dei numeri reali in un calcolatore: in virgola fissa/in virgola mobile
- Rappresentazione dei caratteri alfanumerici, d'interpunzione e di controllo: codifica ASCII/UNICODE
Mercoledì 18.10.2006
- Circuiti logici
- Algebra di Boole: AND/OR/NOT/XOR/NAND/NOR/Implicazione/Doppia Implicazione - tabelle di verità
- Espressioni booleane - esempi e loro rappresentazione grafica
- Precedenze nell'algebra booleana
- Equivalenze logiche: elenco - esempi
Esercizi assegnati:
- Rappresentare utilizzando solo porte NAND, l'equivalenza: (x ^ y) v (¬x ^ y)
Dimostrare le seguenti equivalenze:
- (¬(x ^ ¬y) v (x ^ ¬y)) ^ y = y
- (¬x v y) ^ x ^ ¬y = 0
Martedì 24.10.2006
- Correzione esercizi
- Approfondimento su Contraddizione-Tautologia
- Algebra booleana in un circuito ALU
- Calcolo proposizionale
Mercoledì 25.10.2006
- Svantaggi della programmazione in assembly
- Linguaggi ad alto livello
- Programmi e moduli
- Errori comuni durante la programmazione
- Java e applet Java
Venerdì 27.10.2006
- Preparazione al compitino - Esercitazioni in classe
Martedì 31.10.2006
- Compitino
[DIARIO DEL CORSO - LABORATORIO]
Lunedì 16.10.2006
- Presentazione del corso [6]
- Sistemi operativi I [7]
Giovedì 19.10.2006
- Sistemi operativi II [8]
Lunedì 23.10.2006
- Codifica delle informazioni [9]
Giovedì 26.10.2006
- Logica booleana e circuiti [10]
Lunedì 30.10.2006
- Esempi di algoritmi [11]
Giovedì 02.11.2006
- Esempi di algoritmi
Lunedì 06.11.2006
- Primi programmi in java [12]