A.S. 2012/2013 Piano di Lavoro per il Terzo Anno Primo Anno del Secondo Biennio Indirizzo: Scienze Applicate Materia: Informatica Sommario Introduzione.................................................................................................................. 3 Programmazione per moduli didattici ................................................................................. 3 M.D. 1: Introduzione alla Programmazione ad Oggetti in Java ........................................3 u.d. 1.1: Compilatori, Interpreti e Macchine Virtuali ............................................4 u.d. 1.2: Introduzione alla programmazione ad oggetti ..........................................4 u.d. 1.3: IDE per la programmazione JAVA .........................................................4 u.d. 1.4.: Le classi e gli oggetti in Java ..............................................................4 u.d. 1.5: Tipi di dati primitivi e array .................................................................4 u.d. 1.6: Classe String .....................................................................................4 u.d. 1.7: Cicli e selezioni .................................................................................4 u.d. 1.8: Attributi e metodi privati .....................................................................5 u.d. 1.9: Passaggio di parametri ........................................................................5 u.d. 1.10: Overloading .....................................................................................5 M.D. 2: Le relazioni tra classi in Java ........................................................................5 u.d. 2.1: Associazioni ......................................................................................5 u.d. 2.2: Aggregazioni .....................................................................................5 u.d. 2.3: Ereditarietà e Overriding .....................................................................6 M.D. 3: Subroutine Ricorsive ...................................................................................6 u.d. 3.1: Ricorsione semplice ............................................................................6 u.d. 3.2: Mutua ricorsione ................................................................................6 M.D. 4: Strutture Dinamiche ....................................................................................6 u.d. 4.1: Strutture dinamiche lineari..................................................................6 u.d. 4.2: Vector .............................................................................................6 u.d. 4.3: Alberi e Grafi ...................................................................................7 M.D. 5: Elementi avanzati di programmazione ad oggetti ..............................................7 u.d. 5.1: Final e Static .....................................................................................7 u.d. 5.2: Package, classi astratte e interfacce ......................................................7 Obiettivi Minimi............................................................................................................. 7 Metodologie didattiche ................................................................................................... 8 Verifiche e valutazioni .................................................................................................... 8 Introduzione La riforma del 2010 propone per il secondo biennio dà le seguenti indicazioni: Nel secondo biennio si procede ad un allargamento della padronanza di alcuni strumenti e un approfondimento dei loro fondamenti concettuali. La scelta dei temi dipende dal contesto e dai rapporti che si stabiliscono fra l’informatica e le altre discipline. Sarà possibile disegnare un percorso all'interno delle seguenti tematiche: strumenti avanzati di produzione dei documenti elettronici, linguaggi di markup (XML etc), formati non testuali (bitmap, vettoriale, formati di compressione), font tipografici, progettazione web (DE); introduzione al modello relazionale dei dati, ai linguaggi di interrogazione e manipolazione dei dati (BS); implementazione di un linguaggio di programmazione, metodologie di programmazione, sintassi di un linguaggio orientato agli oggetti (AL). Mantenendo un legame con la tradizione dell'insegnamento dell'informatica nel liceo Copernico si propone per il primo anno del secondo biennio un percorso legato alla sintassi del linguaggio ad oggetti Java che preveda anche attenzione alle strutture dati dinamiche, argomento trattato anche nel indirizzo informatico sin dai primi anni della sua attuazione. Programmazione per moduli didattici Elenco dei moduli didattici: 1 - Introduzione alla Programmazione ad Oggetti in Java 2 - Le relazioni tra classi in Java 3 - Subroutine Ricorsive 4 - Strutture Dinamiche 5 – Elementi avanzati di programmazione a oggetti M.D. 1: Introduzione alla Programmazione ad Oggetti in Java u.d. 1.1: u.d. 1.2: u.d. 1.3: u.d. 1.4: u.d. 1.5: u.d. 1.6: u.d. 1.7: u.d. 1.8: Compilatori, Interpreti e Macchine Virtuali Introduzione alla programmazione ad oggetti IDE per la programmazione JAVA Le classi e gli oggetti in Java Tipi di dati primitivi e array Classe String Cicli e selezioni Attributi e metodi privati u.d. 1.9: Passaggio di parametri u.d. 1.10: Overloading u.d. 1.1: Compilatori, Interpreti e Macchine Virtuali Conoscenze: definizione di compilatore, componenti di un compilatore, definizione di linguaggio intermedio e oggetto, definizione d'interprete, concetto di macchina virtuale, il funzionamento del compilatore Java e la JVM Abilità: saper utilizzare e gestire in modo consapevole gli strumenti di sviluppo per Java u.d. 1.2: Introduzione alla programmazione ad oggetti Conoscenze: concetto di classe, oggetto, metodo e attributo, spiegazione sommaria delle relazioni tra classi (associazioni, aggregazioni ed ereditarietà), diagrammi delle classi (UML) per classi con attributi e metodi pubblici, garbage collector e garbage collection Abilità: saper utilizzare in modo generico i diagrammi delle classi per la progettazione di un generica classe u.d. 1.3: IDE per la programmazione JAVA Conoscenze: interfaccia di Eclipse e di Geany Abilità: saper utilizzare Eclipse e Geany per editare, correggere e compilare programmi Java u.d. 1.4.: Le classi e gli oggetti in Java Conoscenze: sintassi Java di una classe, la sintassi Java di un attributo e di un metodo pubblico, la sintassi Java del costruttore, il metodo main, l'istanziazione di un oggetto, il segmento heap di un processo, chiamata di un metodo, variabili locali dei metodi. Abilità: saper definire classi e dichiarare oggetti u.d. 1.5: Tipi di dati primitivi e array Conoscenze: caratteristiche dei tipi di dati primitivi del Java e loro struttura, cast esplicito e implicito, sintassi degli array monodimensionali e bidimensionali per la loro dichiarazione e accesso, sintassi delle assegnazioni, operatori aritmetici e logici Abilità: saper dichiarare e usare variabili scalari e array u.d. 1.6: Classe String Conoscenze: caratteristiche della classe String e sue operazioni e metodi principali Abilità: saper dichiarare e utilizzare oggetti della classe String u.d. 1.7: Cicli e selezioni Conoscenze: sintassi del ciclo precondizionato, sintassi del ciclo postcondizionato, sintassi del ciclo enumerativo e spiegazione e sintassi del ciclo for-each in Java, sintassi del if, spiegazione e sintassi dello switch Abilità: saper utilizzare cicli e selezioni u.d. 1.8: Attributi e metodi privati Conoscenze: spiegazione e sintassi degli attributi e dei metodi privati in Java e UML Abilità: saper leggere e realizzare metodi e attributi private Capacità: utilizzare metodi e attributi privati per la progettazione e implementazione di classi u.d. 1.9: Passaggio di parametri Conoscenze: passaggio per parametri per un metodo, visibilità delle variabili e degli attributi, sintassi inerente i metodi con parametri in UML Abilità: saper realizzare e leggere metodi che passano parametriin Java e nei diagrammi delle classi Capacità: utilizzare in modo opportuno e se opportuno i metodi con passaggio di parametri per la progettazione e implementazione di programmi u.d. 1.10: Overloading Conoscenze: definizione e spiegazione dell'overloading Abilità: saper effettuare l'overloading di un metodo e saper comprendere una classe che ne fa uso Conoscenze: utilizzare, se opportuno, l'overloading per la realizzazione di una classe M.D. 2: Le relazioni tra classi in Java u.d. 2.1: Associazioni u.d. 2.2: Aggregazioni u.d. 2.3: Ereditarietà e Polimorfismo u.d. 2.1: Associazioni Conoscenze: definizione e spiegazione delle associazione, sintassi UML delle associazioni, realizzazione in Java delle associazioni Abilità: saper realizzare e leggere diagrammi di classi che usano associazioni, saper realizzare e leggere progetti realizzati in JAVA che usano associazioni Capacità: utilizzare in modo opportuno le associazioni per la progettazione e implementazione di programmi u.d. 2.2: Aggregazioni Conoscenze: definizione e spiegazione delle aggregazioni, sintassi UML delle aggregazioni, realizzazione in Java delle aggregazioni Abilità: saper realizzare e leggere diagrammi di classi che usano aggregazioni, saper realizzare e leggere progetti realizzati in JAVA che usano aggregazioni Capacità: utilizzare in modo opportuno le aggregazioni per la progettazione e implementazione di programmi u.d. 2.3: Ereditarietà e Overriding Conoscenze: definizione e spiegazione dell'ereditarietà, sintassi UML dell'ereditarietà, realizzazione in Java dell'ereditarietà, spiegazione e sintassi dell'overriding in UML e in Java Abilità: saper realizzare e leggere diagrammi di classi che usano l'ereditarietà, saper realizzare e leggere progetti realizzati in JAVA che usano ereditarietà, saper scrivere e leggere diagrammi di classe che prevedono overriding Capacità: utilizzare in modo opportuno l'ereditarietà e l'overriding per la progettazione e implementazione di programmi M.D. 3: Subroutine Ricorsive u.d. 3.1: Ricorsione semplice u.d. 3.2: Mutua ricorsione u.d. 3.1: Ricorsione semplice Conoscenze: definizione di sottoprogramma ricorsivo Abilità: saper comprendere e scrivere algoritmi ricorsivi Conoscenze: Utilizzare, allo scopo di risolvere problemi, la ricorsione se opportuno u.d. 3.2: Mutua ricorsione Conoscenze: definizione di mutua ricorsione Abilità: saper comprendere e scrivere algoritmi con mutua ricorsione Conoscenze: Utilizzare, allo scopo di risolvere problemi, la mutua ricorsione se opportuno M.D. 4: Strutture Dinamiche u.d. 4.1: Strutture dinamiche lineari u.d. 4.2: Vector u.d. 4.3: Alberi e Grafi u.d. 4.1: Strutture dinamiche lineari Conoscenze: concetto di struttura lineare dinamica, tipi di strutture lineari dinamiche (pile, code e liste bidirezionali), esempio di una classe che implementa una pila Abilità: saper leggere classi che implementano o usano strutture dati dinamiche lineari e saperle realizzare Capacità: utilizzare in modo opportuno e corretto le strutture dinamiche lineari per la progettazione e realizzazione di programmi u.d. 4.2: Vector Conoscenze: classe vector, dichiarazione di oggetti di classe vector, utilizzo dei metodi d'accesso agli oggetti di classe vector Abilità: saper dichiarare oggetti di clase vector, saper utilizzare correttamente metodi della classe vector Capacità: utilizzare in modo opportuno e corretto la classe vector per la progettazione e realizzazione di programmi u.d. 4.3: Alberi e Grafi Conoscenze: concetto di grafo orientato, concetto di grafo non orientato, problemi classici sui grafi, concetto di struttura ad albero, albero binario, alberi di gioco Abilità: saper comprendere la descrizione informale di un algoritmo che utilizza strutture ad albero o grafi M.D. 5: Elementi avanzati di programmazione ad oggetti u.d. 5.1: Final e Static u.d. 5.2: Package, classi astratte e interfacce u.d. 5.1: Final e Static Conoscenze: significato e sintassi di classi, metodi e attributi final e significato e sintassi di metodi e attributi static Abilità: saper realizzare classi, metodi e attributi final e metodi e attributi static. Saper comprendere l'uso di final e static nei programmi. Capacità: utilizzare classi, metodi e attributi final e metodi e attributi static, se opportuno, nella progettazione e implementazione di programmi u.d. 5.2: Package, classi astratte e interfacce Conoscenze: spiegazione e sintassi inerente ai package, file jar, spiegazione e sintassi di una classe astratta e spiegazione e sintassi di una interfaccia Abilità: saper realizzare classi facenti parte di un package, saper realizzare classi astratte e saper realizzare interfaccie. Saper comprendere programmi che utilizzano package, classi astratte e interfacce. Capacità: utilizzare package, classi astratte e interfaccie, se opportuno, nella progettazione e implementazione di programmi. Obiettivi Minimi In genere, per tutti i moduli, si ritenga valido quanto già detto nel POF dell'anno 2011-2012: “la semplice acquisizione delle conoscenze e la loro applicazione in situazioni già proposte ed affrontate in classe verificano il raggiungimento del livello minimo”. Inoltre non si ritengono parte degli obiettivi minimi i cicli for-each dell'u.d. 1.7, il modulo 3, l'u.d. 4.3 e il modulo 5. Metodologie didattiche Il corso di studi prevederà sia lezioni frontali sia di laboratorio. Durante le lezioni frontali si farà uso sia di strumentazioni tradizionali (la lavagna di grafite) sia multimediali. Le lezioni di laboratorio prevederanno sia momenti di lavoro guidati sia indipendenti. Le attività di laboratorio indipendenti potranno essere sia di individuali sia di gruppo. Tali attività verranno svolte utilizzando un IDE per il linguaggio di programmazione. Verifiche e valutazioni Le verifiche effettuate durante l'anno potranno essere orali, scritte e attività di laboratorio. In tutti i casi prevederanno prove tese a comprendere se lo studente raggiunge almeno gli obiettivi minimi o se supera tale prima tappa d'apprendimento. Ciò sarà fatto nel caso della programmazione con l'assegnazione di alcuni problemi di tipologia simile a quelli già risolti in classe e altri mai proposti prima della verifica.