Programmazione Dipartimento disciplinare di Matematica, Fisica e Informatica a.s. 2015 – 16 MATERIA INFORMATICA INDIRIZZO SCIENZE APPLICATE Finalità generali Le finalità generali nel primo biennio, in base alle indicazioni nazionali per l’Informatica nell’insegnamento liceale, comprendono l’acquisizione delle abilità necessarie per un corretto utilizzo dei più comuni strumenti software per il calcolo, la ricerca e la comunicazione in rete, la comunicazione multimediale, l’acquisizione e l’organizzazione dei dati, con particolare riguardo alla loro applicabilità nell’indagine scientifica e alla scelta ragionata dello strumento di volta in volta più adatto. Le finalità generali nel secondo biennio, in base alle indicazioni nazionali per l’Informatica nell’insegnamento liceale, includono un allargamento della padronanza di alcuni strumenti software precedentemente incontrati e un approfondimento dei loro fondamenti concettuali. In particolare, vengono ulteriormente sviluppate le abilità già acquisite nel primo biennio sull’utilizzo dei più comuni strumenti software per l’Office Automation, attraverso la comprensione delle funzionalità avanzate per la gestione di documenti semplici e delle funzionalità tipiche della gestione di documenti complessi. Infine viene proseguito il percorso di implementazione di algoritmi in uno o più linguaggi di programmazione, ampliando poi la conoscenza ai linguaggi orientati agli oggetti e agli ambienti DBMS per la creazione e la gestione delle basi di dati. Le finalità generali nel quinto anno, in base alle indicazioni nazionali per l’Informatica nell’insegnamento liceale, includono un allargamento della padronanza di alcuni strumenti software precedentemente incontrati e un approfondimento dei loro fondamenti concettuali. In particolare, vengono affrontati i principali algoritmi del calcolo numerico, i principi teorici della computazione, le tematiche relative alle reti di computer, ai protocolli di rete, alla struttura di internet e dei servizi di retet ed esempi di utilizzo dell’informatica in applicazioni tecnico – scientifiche. Infine viene proseguito il percorso di implementazione di algoritmi in uno o più linguaggi di programmazione, ampliando poi la conoscenza ai fondamenti del linguaggio Javascript. 1 Obiettivi disciplinari generali Gli obiettivi principali dell’insegnamento dell’Informatica nel primo biennio possono essere riassunti come segue: comprendere i principali fondamenti teorici delle scienze dell’informazione introdurre all’uso degli strumenti dell’informatica ed al loro utilizzo per la soluzione di problemi acquisire la consapevolezza dei vantaggi e dei limiti dell’uso degli strumenti e dei metodi informatici e delle conseguenze sociali e culturali di un tale utilizzo acquisire una sufficiente padronanza di un linguaggio di programmazione per sviluppare semplici applicazioni di calcolo in ambito scientifico conoscere la struttura logico – funzionale e fisica del computer conoscere le reti locali ed il loro utilizzo comprendere il ruolo della tecnologia come mediazione fra scienza e vita quotidiana saper utilizzare gli strumenti informatici in relazione all’analisi dei dati e alla modellazione di specifici problemi scientifici e individuare la funzione dell’informatica nello sviluppo scientifico. Gli obiettivi principali dell’insegnamento dell’Informatica nel secondo biennio possono essere riassunti come segue: consolidare i principali fondamenti teorici delle scienze dell’informazione allargare la padronanza dell’uso di strumenti dell’informatica ed al loro utilizzo per la soluzione di problemi ampliare la padronanza di un linguaggio di programmazione procedurale per sviluppare applicazioni di calcolo in vari ambiti, privilegiando l’ambito scientifico saper utilizzare gli strumenti informatici in relazione all’analisi dei dati e alla modellazione di specifici problemi scientifici e individuare la funzione dell’informatica nello sviluppo scientifico acquisire i fondamenti della programmazione statica nel web conoscere la differenza tra i due modelli di programmazione – procedurale e a oggetti acquisire sufficiente padronanza di un linguaggio di programmazione orientato agli oggetti acquisire i fondamenti teorici indispensabili per progettare e realizzare le basi di dati apprendere il linguaggio oggi più comunemente utilizzato per interrogare le basi di dati. Gli obiettivi principali dell’insegnamento dell’Informatica nel quinto anno possono essere riassunti come segue: consolidare i principali fondamenti teorici delle scienze dell’informazione allargare la padronanza dell’uso di strumenti dell’informatica ed al loro utilizzo per la soluzione di problemi ampliare la padronanza di un linguaggio di programmazione procedurale per sviluppare applicazioni di calcolo in vari ambiti, privilegiando l’ambito scientifico saper utilizzare gli strumenti informatici in relazione all’analisi dei dati e alla modellazione di specifici problemi scientifici e individuare la funzione dell’informatica nello sviluppo scientifico acquisire i fondamenti della programmazione Javascript acquisire sufficiente padronanza dei metodi di calcolo discreto e della modellazione MonteCarlo acquisire sufficiente padronanza di un linguaggio di programmazione orientato agli oggetti acquisire i fondamenti teorici indispensabili relativi alle reti di computer e ai loro protocolli 2 Metodologia, Mezzi e strumenti di lavoro Indagine sulle conoscenze già acquisite e necessarie per sviluppare gli argomenti oggetto del programma Presentazione rigorosa degli argomenti e immediata applicazione degli stessi Problem posing come concettualizzazione e schematizzazione del problema proposto Problem solving come individuazione operativa della soluzione del problema e sua successiva generalizzazione (se necessaria) L’attività di laboratorio punta ad abituare lo studente alla corretta manipolazione e all’uso consapevole del computer Si favorisce l’interdisciplinarità con i contenuti delle altre discipline per lo scambio dei saperi. Verifiche Il numero minimo di verifiche che verranno somministrate nel corso dell’anno scolastico sarà: nel primo periodo: almeno 2 prove scritte (e/o pratiche) e 1 prova orale oppure almeno 1 prova scritta (e/o pratica) e 2 prove orali (la valutazione avviene mediante l’attribuzione di un VOTO UNICO) nel secondo periodo: 3 prove per la valutazione scritta (e/o pratica) e 2 prove per la valutazione orale Le verifiche somministrate saranno scelte dal docente tra le seguenti tipologie: prove strutturate prove semi – strutturate prove non strutturate interrogazioni orali Si ritiene, inoltre, utile richiedere interventi, dal posto o alla lavagna, volti ad accertare la continuità e la qualità dello studio individuale. Tali interventi potranno essere oggetto di valutazione parziale o totale. 3 Criteri di valutazione Per la valutazione delle prove si terrà conto dei seguenti indicatori: grado di acquisizione delle competenze specifiche attenzione e impegno dimostrati progressi realizzati rispetto ai livelli iniziali capacità e volontà di recupero dimostrate La valutazione sarà effettuata in modo da rendere l’alunno consapevole del livello di preparazione raggiunto ed, eventualmente, delle modifiche o delle integrazioni da dover effettuare per migliorare il livello di preparazione, anche con la collaborazione dell’insegnante attraverso interventi didattici più mirati e personalizzati. La valutazione formativa verrà effettuata durante l’intero anno scolastico mediante la sistematica correzione degli esercizi assegnati per casa, la discussione delle difficoltà emerse durante lo studio autonomo e la rielaborazione personale degli argomenti trattati nelle lezioni precedenti; la valutazione sommativa si articola in modi diversi in base al tipo di prova cui si riferisce. Nella valutazione delle prove scritte (e/o pratiche) il punteggio massimo per ogni quesito viene attribuito in base alle conoscenze e alle abilità richieste per lo svolgimento di quel singolo quesito e, inoltre, al peso che l’insegnante vuole attribuire a quel tipo di conoscenze e di abilità in base all’attività didattica svolta. Nella fase di correzione il punteggio assegnato ad ogni quesito tiene conto della correttezza e della completezza dello svolgimento del quesito stesso. Il voto della prova viene, infine, determinato in modo proporzionale al punteggio. Nella valutazione delle prove orali si fa riferimento ai criteri e agli obbiettivi indicati. Nelle valutazioni formulate in occasione delle scadenze periodali, si prenderanno in considerazione anche la partecipazione al dialogo educativo, i progressi sul piano cognitivo, l’impegno e l’interesse nel seguire l’attività didattica. 4 Livelli minimi richiesti per il passaggio alla classe successiva (fine primo biennio) Livello minimo - competenze Comprendere i fondamenti teorici basilari delle scienze dell’Informazione Acquisire la padronanza degli strumenti informatici proposti Saper utilizzare tali strumenti per la soluzione di problemi, anche connessi allo studio di altre discipline Raccogliere, organizzare e rappresentare dati/informazioni sia di tipo testuale che multimediale Acquisire la consapevolezza dei vantaggi e dei limiti che il ricorso agli strumenti informatici presenta Livello minimo – abilità/capacità Saper orientarsi nella gestione di un sistema operativo (con particolare riferimento a Windows) per operare con icone, finestre e menù e per gestire cartelle e file. Saper analizzare dati sperimentali e rappresentarli graficamente Saper utilizzare la posta elettronica e saper effettuare una ricerca in Internet Saper analizzare e formalizzare semplici problemi per individuare il percorso risolutivo di un problema assegnato e saperlo tradurre in un diagramma a blocchi Saper tradurre un algoritmo in un linguaggio di programmazione. Livello minimo – conoscenze Conoscere le caratteristiche dei principali componenti hardware di un computer. Conoscere cosa è ed a cosa serve un sistema operativo Conoscere le caratteristiche e la relativa operatività di base dell’ambiente di lavoro Excel. Conoscere la definizione di algoritmo e le caratteristiche fondamentali dei diagrammi a blocchi. Conoscere e saper utilizzare le variabili, i tipi di dati e le strutture di base del linguaggio C nello strutturare il programma risolvente un semplice problema assegnato Conoscere che cosa è un sottoprogramma (function) e saperlo utilizzare all’interno di un programma. 5 Livelli minimi richiesti per il passaggio alla classe successiva (fine secondo biennio) Livello minimo - competenze Possedere i termini specifici della disciplina relativamente ai linguaggi di programmazione. Definire ed utilizzare gli stili in un documento. Saper inserire l’indice dei contenuti o sommario. Formattare le celle in base a determinate condizioni. Realizzare pagine HTML attraverso i tag più comuni. Definire e utilizzare i file all’interno di un programma C. Saper definire in maniera dinamica le variabili utilizzando i puntatori. Saper utilizzare gli operatori relazionali. Saper applicare le regole di normalizzazione. Saper interrogare una base di dati mediante le query. Presentare i dati sotto forma di prospetti personalizzati. Livello minimo – abilità/capacità Saper creare una classe e i suoi metodi (anche inline) per semplici esempi di ambito scientifico Saper creare una semplice pagina web statica e dinamica Saper gestire in modo elementare una base di dati Saper interfacciare in modo elementare una base di dati con una rete tramite il modello client - server Livello minimo – conoscenze Conoscere la differenza tra linguaggi di alto e basso livello Conoscere la differenza tra oggetti e classi in C++ Conoscere il concetto di ereditarietà Elaborazione di testi: strumenti avanzati per la gestione di semplici documenti Foglio di calcolo: strumenti avanzati, tabelle pivot ed utilizzo di semplici macro Conoscenza dei comandi elementari per la creazione di una semplice pagina web statica in HTML Conoscenza dei comandi elementari per la creazione di una semplice pagina dinamica in PHP Conoscenza dei comandi elementari per la creazione, il popolamento e la gestione di una semplice base di dati Struttura di una rete di calcolatori Conoscenza dei livelli del modello ISO/OSI e TCP/IP 6 Livelli minimi richiesti per l’ammissione all’esame di stato (fine ultimo anno) Livello minimo - competenze Conoscere l’algoritmo per il calcolo approssimato della radice quadrata; metodo alternativo di Newton Conoscere l’algoritmo per il calcolo di π con il metodo di Viète Conoscere l’algoritmo per il calcolo del numero e Conoscere l’algoritmo per il calcolo approssimato del seno di un angolo tramite Taylor Conoscere l’algoritmo per il calcolo approssimato della radice di una equazione mediante il metodo di bisezione e delle secanti Conoscere l’algoritmo per il calcolo approssimato delle aree mediante il metodo dei rettangoli, dei trapezi e di Cavalieri – Simpson Conoscere l’algoritmo per la determinazione della retta di regressione con il metodo dei minimi quadrati Conoscere l’algoritmo per il calcolo della complessità in funzione del passo base Conoscere la definizione di complessità asintotica e la notazione O – grande. Conoscere l’algebra degli O – grandi Conoscere la classe P, NP e NPC Conoscere gli elementi fondamentali di una rete Conoscere le topologie di rete Conoscere il concetto di protocollo Conoscere i compiti dei livelli ISO/OSI e TCP/IP Conoscere il concetto di applicazione di rete Conoscere le tipologie di applicazione di rete Conoscere le caratteristiche di JavaScript Livello minimo – abilità/capacità Saper applicare l’algoritmo per il calcolo approssimato della radice quadrata; metodo alternativo di Newton Saper applicare l’algoritmo per il calcolo di π con il metodo di Viète Saper applicare l’algoritmo per il calcolo del numero e Saper applicare l’algoritmo per il calcolo approssimato del seno di un angolo tramite Taylor Saper applicare l’algoritmo per il calcolo approssimato della radice di una equazione mediante il metodo di bisezione e delle secanti Saper applicare l’algoritmo per il calcolo approssimato delle aree mediante il metodo dei rettangoli, dei trapezi e di Cavalieri – Simpson Saper applicare l’algoritmo per la determinazione della retta di regressione con il metodo dei minimi quadrati Saper implementare l’algoritmo per il calcolo della complessità in funzione del passo base Saper confrontare gli algoritmi Saper determinare la complessità mediante l’istruzione dominante Saper classificare le reti in base alla topologia Saper riconoscere i dispositivi di rete Saper classificare le reti in base all’uso dei mezzi trasmissivi Saper utilizzare le principali applicazioni di rete Riconoscere i contesti per le principali applicazioni di rete Sapare utilizzare i costrutti elementari del linguaggio JavaScript Livello minimo – conoscenze Riconoscere i contesti in cui utilizzare le diverse tecniche di calcolo computazionale scientifico. Saper classificare gli algoritmi in base alle classi di complessità Saper classificare i problemi Saper confrontare il modello ISO/OSI con il modello TCP/IP Saper riconoscere i contesti in cui è opportuno implementare il linguaggio JavaScript 7 Seguono i contenuti specifici suddivisi in unità di apprendimento (UdA). Ciascuna UdA è afferente ad una delle seguenti aree tematiche: architettura dei computer (AC) sistemi operativi (SO) elaborazione digitale dei documenti (DE) algoritmi e linguaggi di programmazione (AL) reti di computer e protocolli di rete (RC) struttura di Internet e dei servizi di rete (IS) pagine web ed HTML (PA) basi di dati (BS) algoritmi di calcolo numerico e principi teorici della computazione (CS) CONTENUTI E OBIETTIVI SPECIFICI PRIMO BIENNIO CLASSI PRIME Conoscenze Sistemi informatici. Rappresentazione delle informazioni: contenuto dell'informazione, codifica e operazioni binarie, codice ASCII, interi e complemento a 2. UdA 1 – AC Storia dello sviluppo degli elaboratori. Gli elementi funzionali della macchina di Von Neumann. Architettura e i componenti fondamentali di un computer. Le memorie: tipologie e capacità. Le periferiche di input e di output, la loro interfaccia e le principali caratteristiche. Comunicazione uomo – macchina. I sistemi di numerazione decimale, binario, ottale ed esadecimale. Codifica di immagini, suoni e filmati. Le norme sulla sicurezza informatica e sul diritto d’autore. Abilità/Capacità Competenze Riconoscere le caratteristiche logico-funzionali di un computer e il ruolo strumentale svolto nei vari ambiti (calcolo, elaborazione, comunicazione ecc.). Riconoscere le principali forme di gestione e controllo dell’informazione e della comunicazione specie nell’ambito tecnico-scientifico. Riconoscere le diverse rappresentazioni interne dei dati. Riconoscere la struttura di un sistema di elaborazione. Identificare i componenti hardware di un computer: scheda madre, cpu, memoria centrale, dischi e periferiche principali. Utilizzare in modo appropriato la terminologia tecnica. Confrontare le caratteristiche tecniche principali dei singoli componenti. Distinguere le tipologie dei computer in base alle attività e alle caratteristiche. Riconoscere il ruolo dei componenti di un sistema di elaborazione. Rappresentare e quantificare tipi diversi di informazioni. Codificare e decodificare numeri e codici. Convertire numeri e codici rappresentati secondo sistemi diversi. Riconoscere i limiti e i rischi dell’uso delle tecnologie con particolare riferimento alla privacy. 8 UdA 2 – SO Riconoscere il ruolo dei sistemi operativi e quali sono i tipi più diffusi. Conoscere le caratteristiche principali del desktop di Windows e di Linux. Il software e le categorie di software. Software di base o di sistema: il sistema operativo (S.O.) come gestore di risorse. Funzionalità di base di un S.O., caratteristiche comuni a diversi S.O. Identificare i principali elementi dell’interfaccia grafica di Windows e Linux (Ubuntu). Utilizzare in modo appropriato la terminologia tecnica. Riconoscere le caratteristiche principali del sistema operativo. Saper distinguere i vari tipi di software. Comprendere il meccanismo alla base della gestione della memoria. Saper usare alcune tra le funzionalità principali dei sistemi operativi. Creare, rinominare, copiare, eliminare, spostare cartelle e documenti. Saper comprimere file e cartelle. Richiamare e saper leggere le informazioni offerte da un gestore di processi. Utilizzare le procedure necessarie per gestire le impostazioni dello schermo e del desktop. Utilizzare le tecniche di drag & drop per gestire i file e le cartelle. Applicare i caratteri jolly alla ricerca. Utilizzare gli elementi grafici di Windows e Linux (Ubuntu). Essere in grado di estrarre le caratteristiche del computer in uso. Gestire il file system di Windows e di Linux (Ubuntu) attraverso l’interfaccia grafica. Saper distinguere i tipi di file in base all’estensione. Riconoscere il significato e la struttura delle directory. Identificare il significato dei caratteri jolly. Software applicativo: suite d'ufficio, utilità di sistema e antivirus; software libero e copyright. Raccogliere, organizzare e rappresentare dati/informazioni sia di tipo testuale che multimediale. Organizzare testi, dati ed immagini in formato elettronico. Differenza tra testi, ipertesti e ipermedia. Riconoscere gli strumenti della multimedialità. Elaboratore di testi: concetti e funzionalità di base. Differenze tra tipi di link ipertestuali Applicare le funzioni condizionali ai fogli di lavoro in relazione a situazioni complesse. Definire fogli di calcolo con campi calcolati e grafici cartesiani. Confrontare i diversi tipi di grafici offerti dal foglio di calcolo. Formattare un documento, utilizzare le tabelle, stampare un documento, inserire oggetti e immagini, salvare in formati diversi. Processi e risorse. File system: struttura, tipologia e gestione dei file. UdA 3 – DE Foglio di calcolo: concetti e funzionalità di base. Orientarsi nell’ambiente di lavoro del foglio di calcolo inserendo formule e funzioni per la produttività personale. Riconoscere e usare i riferimenti assoluti e relativi. Riconoscere i tipi principali di grafici in relazione all’utilizzo. Generatore di presentazioni: concetti e funzionalità di base. Formattare un foglio elettronico, gestire gli indirizzi delle celle, inserire formule, funzioni e grafici con applicazioni numeriche ed elaborazione di tabelle di dati. Applicare formule e funzioni corrette in relazione al contesto. Utilizzare riferimenti assoluti e relativi. Creare fogli con formattazioni condizionali. Generare grafici in relazione alla tipologia qualitativa o quantitativa. Applicare il ricalcolo manuale o automatico. Significato di sito Web e pubblicazione. Creare una presentazione ipermediale. Redigere una relazione di laboratorio. 9 Struttura di una rete: storia e struttura di Internet, organizzazione a livelli ed indirizzi. Livello applicazione: principali servizi offerti; protocolli e problematiche legate alla sicurezza. UdA 4 – IS Struttura di un servizio di posta elettronica, webmail e client; struttura di un messaggio di posta e Netiquette Usare un browser: eseguire comuni operazioni di navigazione sul web, modificare le impostazioni del browser. Salvare pagine web e scaricare file dalla rete. Copiare il contenuto di pagine web in un documento. Usare Google come motore di ricerca. Fasi risolutive di un problema, concetto di algoritmo, diagramma di flusso, pseudocodice. Creare ed utilizzare un indirizzo di posta elettronica. Saper catalogare un linguaggio. Riconoscere un errore sintattico o semantico. Caratteristiche di diversi browser. Conoscenza dei servizi di Google. L’ambiente di programmazione SCRATCH e BYOB, i suoi principali blocchi. Acquisire la definizione e le caratteristiche di un algoritmo. Comprendere la relazione tra algoritmo e programma. Conoscere la simbologia dei diagrammi di flussi. UdA 5 – AL Usare le funzionalità principali offerte da Internet per reperire e scambiare informazioni e comprendere la struttura della rete. Organizzazione logica dei dati. Come estendere il concetto matematico di variabile numerica. Dal problema al programma: linguaggi di programmazione. Principali tipologie di linguaggi. Sintassi e semantica di un linguaggio. Acquisire il concetto di linguaggio di programmazione. Individuare il software nelle diverse attività. La corretta scelta di una variabile. Distinguere tra i vari tipi di variabile il più corretto per un dato problema. Descrivere algoritmi in pseudocodice e costruire diagrammi di flusso. Utilizzare linguaggi di programmazione per implementare semplici algoritmi. Essere in grado di proteggere il computer dai rischi della comunicazione in rete Distinguare i linguaggi di programmazione. Utilizzare la terminologia informatica. Distinguare le fasi della compilazione. Distinguare le fasi del ciclo di vita di un programma. Schematizzare un problema con diagrammi di flusso ed algoritmi. Realizzare semplici programmi in SCRATCH. Analizzare, risolvere problemi e codificarne la soluzione. Affrontare in modo sistemico il problema. Utilizzare formule e funzioni nel foglio elettronico per la Utilizzare la tecnica top – down per descrivere gli risoluzione di problemi numerici e algebrici. algoritmi. Funzioni in un foglio elettronico. Conoscere la differenza tra programma e processo. Comprendere la differenza tra compilatore e interprete. Acquisire il concetto di paradigma. Elementi fondamentali di un eventuale esempio di linguaggio funzionale: dichiarazione di variabili intere e reali, operazioni sui dati, istruzione di assegnazione, le strutture di sequenza, selezione e iterazione. CLASSI SECONDE Conoscenze Abilità/Capacità Competenze 10 Fondamenti di ingegneria del software: il ciclo di vita del software. I fattori di qualità di un programma. Strategie di progetto: top – down e bottom – up. Rappresentazione di algoritmi in linguaggio C. Struttura di un programma C. UdA 1 – AL UdA 2 - AL UdA 3 - AL UdA 4 – RC Conoscere i diversi formati di un programma. Descrivere le diverse fasi di sviluppo di un programma. Comprendere il concetto di variabile. Dichiarazione dei tipi di variabili: int, long int, float, double, long double, char. Tabella di traccia per il controllo delle variabili. La dichiarazione delle costanti. Conoscere le istruzioni di comunicazione con l’utente: Input e output dei dati. Comprendere l’importanza del commento del codice. Casting, operatori matematici e commento del codice. Conoscere l’istruzione di selezione semplice e doppia: if…else Comprendere il concetto di annidamento e l’istruzione switch Conoscere gli operatori logici: &&, || e ! Comprendere il concetto di iterazione Conoscere le diverse tipologie di iterazione (precondizionata, postcondizionata, a conteggio) Cicli annidati Comprendere il teorema di Jacopini – Böhm Conoscere la differenza tra iterazione definita e indefinita. I dati strutturati: i vettori e gli arrays. Le funzioni senza parametri Variabili locali e ambiente locale Ambiente locale e globale Le funzioni con i parametri passati per valore e per indirizzo Le funzioni e il concetto di ricorsione Array n-dimensionali: le matrici. Caratteristiche delle reti di computer LAN – WAN – MAN Differenziazione a livello topologico Gli strumenti delle reti. Il protocollo TCP. Indirizzo IP e le classi di reti Saper individuare le diverse fasi della produzione del software. Disporre l’output sullo schermo. Utilizzare le variabili nei programmi. Commentare il codice del programma. Utilizzare variabili intere, reali e booleane. Utilizzare gli operatori / e % sui numeri interi. Scrivere codice con istruzioni condizionali. Scrivere codice complesso con blocchi di istruzioni nidificate. Combinare più selezioni con condizioni logiche composte. Saper gestire il dandling else Scrivere codice utilizzando l’istruzione di selezione multipla. Editare, testare e collaudare un programma in C. Effettuare l’input dei dati. Formattare l’output numerico sullo schermo. Effettuare il casting tra variabili di tipo diverso. Analizzare, risolvere problemi. Riconoscere quando utilizzare selezioni annidate. Saper scegliere il tipo di iterazione adeguato alle diverse situazioni. Generare numeri casuali. Codificare l’iterazione indefinita e definita. Codificare programmi con cicli annidati. Progettare programmi con cicli annidati. Utilizzare diverse tipologie di iterazione nello stesso programma. Utilizzare la trace table per individuare errori nel codice. Riconoscere dati omogenei. Analizzare, risolvere problemi. Definire ed utilizzare vettori e arrays. Avere consapevolezza sulle strategie messe in atto per trovare la soluzione del problema. Mettere in atto, laddove possibile, le tecniche formalizzate per scrivere un software “di buona qualità”. Utilizzare un linguaggio ad alto livello (C) per scrivere programmi che risolvano specifici Saper scrivere semplici applicazioni nel linguaggio di problemi. programmazione C. Saper gestire l’indirizzo statico di una scheda di rete. Riconoscere le caratteristiche delle principali categorie di reti di computer e di internet Individuare le tecnologie più recenti che consentono la comunicazione nel Web 11 SECONDO BIENNIO CLASSI TERZE UdA 1 – AL Conoscenze Approfondimento sui linguaggi: linguaggi di programmazione a basso livello e ad alto livello. Il linguaggio macchina e l’Assembly. Linguaggi compilati e linguaggi interpretati: approfondimenti sulle caratteristiche, in particolare in ordine alla portabilità. I linguaggi ibridi (es. Java) Elaborazione di testi: strumenti avanzati per la gestione di documenti anche semplici e funzionalità tipiche della gestione di documenti complessi. UdA 2 – DE Foglio di calcolo - strumenti avanzati: La protezione dei dati. La formattazione condizionale. Ordinamento dei dati. Validazione dei dati. Le tabelle pivot. Esecuzione di attività semplici mediante una macro. Strumenti di presentazione: funzionalità avanzate. Ecologia delle presentazioni: elementi per creare una presentazione efficace. UdA 3 – PA Abilità/Capacità Competenze Possedere i termini specifici della disciplina relativamente ai linguaggi di programmazione. Conoscere la differenza tra linguaggi ad alto e a basso livello. Saper determinare la tipologia di linguaggio di programmazione migliore in base allo specifico problema da risolvere. Comprendere la caratterizzazione dei linguaggi di programmazione rispetto agli tipi di linguaggi (es. HTML). Gestire le interruzioni di testo; suddividere il testo in sezioni. Utilizzare e personalizzare la correzione automatica. Definire ed utilizzare gli stili in un documento. Saper inserire l’indice dei contenuti o sommario. Riconoscere ed utilizzare i campi all’interno di un documento di testo. Utilizzare lo strumento della stampa unione/stampa in serie. Proteggere il foglio di lavoro. Formattare le celle in base a determinate condizioni. Ordinare una serie di dati. Impedire l’immissione di dati non validi in una cella. Saper creare, modificare, aggiornare, filtrare le tabelle pivot. Saper registrare ed eseguire una semplice macro. Creare una presentazione con i modelli predefiniti e creare nuovi modelli. Aggiungere note e commenti ad una presentazione. Utilizzare lo schema diapositive. Modalità per eseguire una presentazione; nascondere diapositive. Il linguaggio HTML come linguaggio di presentazione per Realizzare pagine HTML attraverso i tag più comuni. la creazione di pagine web statiche. Utilizzare gli stili in pagine esterne, interne e inline. I fogli di stile (CSS). Utilizzare i criteri di base dell’XML per organizzare e Il linguaggio XML. classificare i dati. Visualizzare con un browser i dati strutturati con Introduzione al JavaScript. l’XML. Trasferimento delle tecniche di programmazione all’interno del browser. 12 Saper utilizzare alcune delle funzionalità avanzate presenti nello strumento al fine di creare fogli di calcolo che aiutino nello svolgimento di problemi assegnati. Acquisire gli elementi utili per creare una presentazione efficace. Riconoscere la sintassi dei comandi principali dell’HTML. Riconoscere e applicare gli stili CSS. Acquisire gli strumenti principali su cui si basa l’XML. Acquisire gli strumenti principali su cui si basa il JavaScript. UdA 4 – AL Ricerca di un elemento in un vettore e suo ordinamento: complessità delle strategie risolutive. Conoscere l’ordinamento per Selection Sort, Insertion Sort, Quick Sort, Bubble Sort. Conoscere la ricerca sequenziale e binaria (divide et impera) Saper declinare l’ordinamento per Selection Sort, Insertion Sort, Bubble Sort, Quick Sort. Dati strutturati: stringhe e record Array come parametri di funzioni Le strutture come tipo di dato definito dall’utente Tabelle come array di strutture Saper definire in maniera dinamica le variabili utilizzando i puntatori. Il linguaggio C e i file: definizione, apertura, chiusura, lettura e scrittura sequenziale. Accesso diretto ad un file. File di testo e file binari Operazioni ed accesso agli archivi Lettura e scrittura di un file di testo Apertura e chiusura Controllo di esistenza Controllo di end of file Inserimento in coda. Saper declinare la ricerca sequenziale e binaria Riconoscere i contesti in cui utilizzare le diverse tipologie di ordinamento e di ricerca. Saper utilizzare i vantaggi offerti dalla metodologia “divide et impera” Definire e utilizzare i file all’interno di un programma C. Riconoscere le tipologie di accesso ai dati. Implementare liste, pile e code staticamente e dinamicamente. Implementare tecniche di ricorsione, greedy e l’algoritmo di Dijkstra in semplici casi. Conoscere il tipo di dato puntatore e il suo utilizzo. Acquisire il concetto di tipo di dato astratto. Conoscere i vantaggi dell’astrazione mediante l’uso di tipi di dato. Riconoscere le situazioni di utilizzo e l’implementazione di liste, pile e code. Riconoscere le situazioni di utilizzo e l’implementazione di ricorsione, greedy e l’algoritmo di Dijkstra in semplici casi. I puntatori e l’allocazione dinamica della memoria. Tipi di dato astratti: liste (single e double connected), pile e code. Il problema della ricorsione: semplici esempi di una sua implementazione. I problemy greedy: semplici esempi della loro implementazione. I grafi: definizione, loro rappresentazione, visite in profondità e ampiezza, il problema del cammino minimo. Algoritmo di Dijkstra CLASSI QUARTE Conoscenze Abilità/Capacità Competenze 13 UdA 1 – AL UdA 2 – BS Dal C al C++: il paradigma ad oggetti (OOP) Origini e motivazioni della OOP Le classi e gli oggetti in C++ Terminologia essenziale sugli oggetti Modellazione UML Conoscere il concetto di costruttore Prototipazione delle funzioni in C++ Regole di visibilità I metodi per la gestione delle stringhe: substring, size e replace Namespace e librerie di inclusione Oggetti e classi Creazione ed uso di oggetti Metodi e interazione tra oggetti Incapsulamento. Interfaccia verso l’esterno L’accesso agli attributi La gerarchia delle classi, le classi concrete e le classi astratte L’ereditarietà, vantaggi e tipi di ereditarietà Polimorfismo Dati e informazione Sistema informativo e sistema informatico Ciclo di vita di un Sistema Informatico: definizione dei requisiti, modellazione concettuale, logica e fisica La progettazione concettuale per una Base di Dati La progettazione logica e il modello relazionale Il modello E – R (tecnica UML) Saper definire i costruttori e il distruttore di una classe. Saper classificare le classi e le relazioni tra di esse Individuare la specializzazione e la generalizzazione di una classe Definire una gerarchia di classi Comprendere il concetto di astrazione Acquisire il concetto di costruttore e distruttore. Utilizzare lo schema concettuale E – R e il modello logico. Comprendere i vantaggi di un DBMS. Utilizzare modelli per descrivere processi aziendali. Individuare le entità e le relazioni tra le entità all’interno di una situazione complessa. Entità e tipi di identità Associazioni binarie e regole di lettura Chiavi e attributi Associazioni, relazioni, grado, dominio e schemi relazionali 14 Comprendere le differenze tra overloading e overriding Dallo schema concettuale a quello logico relazionale: regole di derivazione Rispettare le regole di integrità. Applicare le gerarchie di generalizzazione. Conoscere il concetto di dipendenza funzionale. Comprendere le motivazioni alla base della normalizzazione. Le Operazioni sui Database relazionali: algebra relazionale. Operatori insiemistici (Unione, Intersezione, Differenza), Prodotto Cartesiano, Selezione, Proiezione, Congiunzione (join). Equi-join, natural join, inner join, left join, left outer join, right join, right outer join, full join Saper utilizzare gli operatori relazionali. Saper applicare le regole di normalizzazione. Saper interrogare una base di dati mediante le query. Presentare i dati sotto forma di prospetti personalizzati. Dipendenza funzionale e dipendenza transitiva. UdA 3 – BS La normalizzazione: prima forma normale (1FN), seconda forma normale (2FN) e cenni sulla terza forma normale (3FN) Le regole di integrità sui dati (vincoli di tupla) e integrità referenziale Operazioni sui Database relazione: MySQL Dichiarazioni di schemi e vincoli di integrità nel linguaggio MySQL Interrogazioni in MySQL Comandi per la modifica della base di dati Indici: Definizioni, metodi di accesso e ruoli Introduzione al PHP UdA 4 – AL Saper sviluppare semplici esempi di integrazione di una Saper applicare i costrutti elementari del PHP base di dati tramite una pagina PHP in un contesto client – server. QUINTO ANNO CLASSI QUINTE Conoscenze Abilità/Capacità Competenze 15 UdA 1 – CS UdA 2 – CS Introduzione agli algoritmi di Calcolo Numerico: loro necessità. Conoscere l’algoritmo per il calcolo approssimato della radice quadrata; metodo alternativo di Newton. Conoscere il Linear Congruential Generator (LCG). La ricerca di π e il Metodo Carlo Conoscere l’integrazione numerica con il metodo Monte Carlo. Conoscere l’algoritmo per il calcolo di π con il metodo di Viète Conoscere l’algoritmo per il calcolo del numero e Conoscere il metodo dei polinomi di MacLaurin e Taylor. Conoscere l’algoritmo per il calcolo approssimato del seno di un angolo tramite Taylor. Conoscere l’algoritmo per il calcolo approssimato della radice di una equazione mediante il metodo di bisezione e delle secanti. Conoscere l’algoritmo per il calcolo approssimato delle aree mediante il metodo dei rettangoli, dei trapezi e di Cavalieri – Simpson. Conoscere l’algoritmo per risolvere le equazioni differenziali con il metodo di Eulero e il metodo di Eulero modificato (cenni) Determinazione della retta di regressione con il metodo dei minimi quadrati Parametri di qualità di un algoritmo Il modello di costo per il calcolo del tempo di esecuzione Conoscere l’algoritmo per il calcolo della complessità in funzione del passo base Conoscere la definizione di complessità asintotica e la notazione O – grande. Conoscere l’algebra degli O – grandi Equivalenza e classi di complessità degli algoritmi Algoritmi e problemi Definire la complessità asintotica di un problema Conoscere i problemi computabili ma intrattabili Conoscere i problemi polinomiali ed esponenziali Conoscere la classe P, NP e NPC Saper applicare l’algoritmo per il calcolo approssimato Riconoscere i contesti in cui utilizzare le diverse della radice quadrata; metodo alternativo di Newton. tecniche di calcolo computazionale scientifico. Saper applicare il Linear Congruential Generator (LCG). Saper applicare l’algoritmo per il calcolo del numero e Saper applicare l’algoritmo per il calcolo approssimato del seno di un angolo tramite Taylor. Saper applicare l’algoritmo per il calcolo approssimato della radice di una equazione mediante il metodo di bisezione e delle secanti. Saper applicare l’algoritmo per il calcolo approssimato delle aree mediante il metodo dei rettangoli, dei trapezi e di Cavalieri – Simpson. Saper applicare l’algoritmo per risolvere le equazioni differenziali con il metodo di Eulero e il metodo di Eulero modificato (cenni) Saper implementare il modello di costo per il calcolo del tempo di esecuzione Saper implementare l’algoritmo per il calcolo della complessità in funzione del passo base Saper confrontare gli algoritmi Saper determinare la complessità mediante l’istruzione dominante 16 Saper calcolare la complessità temporale di un algoritmo. Saper classificare gli algoritmi in base alle classi di complessità Saper classificare i problemi Saper individuare i problemi non computabili UdA 3 – RC UdA 4 – IS UdA 5 – AL Conoscere gli elementi fondamentali di una rete Conoscere le topologie di rete Conoscere il concetto di protocollo Conoscere i compiti dei livelli ISO/OSI e TCP/IP Conoscere la struttura e le classi degli indirizzi IP Conoscere il funzionamento del protocollo DHCP Conoscere il concetto di applicazione di rete Conoscere le tipologie di applicazione di rete Conoscere il concetto di porta e di socie Conoscere l’architettura peer – to – peer (P2P) La programmazione di pagine web attive Conoscere le caratteristiche di JavaScript I box di input/output La gestione degli eventi Istruzioni condizionali e iterative L’oggetto Array L’elaborazione degli elementi di un form Saper classificare le reti in base alla topologia Saper riconoscere i dispositivi di rete Saper classificare le reti in base all’uso dei mezzi trasmissivi Saper collocare le funzioni ai diversi livelli protocollari Differenze tra indirizzamento pubblico e privato Saper assegnare in modo statico e dinamico gli indirizzi IP Saper configurare manualmente un PC Saper configurare automaticamente un PC tramite DHCP Visualizzare lo stato di un PC Saper utilizzare le principali applicazioni di rete Saper confrontare il modello ISO/OSI con il modello TCP/IP Riconoscere i contesti in cui è opportuno configurare manualmente o tramite DHCP un PC Sapare utilizzare i costrutti elementari del linguaggio JavaScript Saper riconoscere i contesti in cui è opportuno implementare il linguaggio JavaScript Riconoscere i contesti per le principali applicazioni di rete NOTA BENE: Eventuali argomenti non svolti l’anno precedente potranno essere trattati durante l’anno in corso con tempi e modalità opportuni Le programmazioni potranno essere suscettibili di eventuali modifiche da parte del Dipartimento o del singolo docente, anche nel corso dell’anno scolastico se, alla luce dell’esperienza nelle classi, lo si riterrà opportuno 17