SCUOLA SCUOLA DELLE SCIENZE DI BASE E APPLICATE ANNO ACCADEMICO OFFERTA 2016/2017 ANNO ACCADEMICO EROGAZIONE 2017/2018 CORSO DILAUREA INFORMATICA INSEGNAMENTO LINGUAGGI DI PROGRAMMAZIONE TIPO DI ATTIVITA' B AMBITO 50166-Discipline Informatiche CODICE INSEGNAMENTO 04758 SETTORI SCIENTIFICO-DISCIPLINARI INF/01 DOCENTE RESPONSABILE FICI GABRIELE Ricercatore a tempo determinato Univ. di PALERMO ALTRI DOCENTI CFU 9 NUMERO DI ORE RISERVATE ALLO STUDIO PERSONALE 153 NUMERO DI ORE RISERVATE ALLA DIDATTICA ASSISTITA 72 PROPEDEUTICITA' 05880 - PROGRAMMAZIONE E LABORATORIO C.I. 16448 - METODI MATEMATICI PER L'INFORMATICA ANNO DI CORSO 2 PERIODO DELLE LEZIONI 1° semestre MODALITA' DI FREQUENZA Facoltativa TIPO DI VALUTAZIONE Voto in trentesimi ORARIO DI RICEVIMENTO DEGLI STUDENTI FICI GABRIELE Lunedì 15:00 16:00 Stanza 202, Dipartimento di Matematica e Informatica, Via Archirafi 34, Palermo Mercoledì 15:00 16:00 Stanza 202, Dipartimento di Matematica e Informatica, Via Archirafi 34, Palermo DOCENTE: Prof. GABRIELE FICI ORGANIZZAZIONE DELLA DIDATTICA Lezioni frontali in laboratorio. Gli studenti avranno a disposizione dei computer per seguire le lezioni in modo interattivo. La frequenza delle lezioni e' fortemente raccomandata. VALUTAZIONE DELL'APPRENDIMENTO Verso la meta' del corso e' prevista una prova in itinere (facoltativa) con le stesse modalita' della prova d'esame (vedi oltre) che permette a chi la supera di sostenere l'esame finale solo sulla seconda parte del corso. Il voto finale sara' la media tra il voto ottenuto nella prova in itinere e il voto ottenuto all'esame finale. La validita' del voto della prova in itinere termina con l'ultimo appello di esami previsto per l'a.a. di riferimento. L'esame finale consiste in una prova scritta e una prova orale. La prova scritta e' costituita da un test a risposta multipla di tipo vero/falso (5 opzioni di risposta per ogni domanda, una sola risposta esatta), costituito da 30 domande (12 per chi ha superato la prova in itinere). Ogni risposta esatta vale un punto, ogni risposta sbagliata vale -0.25 punti, ogni risposta non fornita vale 0 punti. Il voto dello scritto, in trentesimi, non costituisce voto di partenza e non fa media. Esso serve solamente allo studente per accertare di avere il livello sufficiente per sostenere la prova orale. La prova orale consiste in un colloquio che verte ad approfondire le conoscenze acquisite e la capacita' di scrivere codice corretto in Java. Il punteggio massimo si ottiene se la verifica accerta il pieno possesso dei tre seguenti aspetti: una capacita di giudizio in grado di rappresentare aspetti approfonditi della materia; una spiccata capacita di rappresentare l'impatto dei contenuti oggetto del corso all'interno della disciplina nel quale i contenuti si iscrivono, ovvero di sapere applicare le metodologie esposte nel corso alle soluzioni di problemi algoritmici legati alla programmazione orientata agli oggetti in particolare, e alla programmazione in generale; infine, una padronanza nella capacita di rappresentare idee e/o soluzioni innovative all'interno del contesto professionale, tecnologico o socioculturale di riferimento. Per quanto attiene alla verifica delle capacita espositive, si ha una valutazione minima nel caso in cui l’esaminando dimostri si una proprieta di linguaggio adeguata al contesto professionale di riferimento ma questa non sia sufficientemente articolata, mentre la valutazione massima potra essere conseguita da chi dimostri piena padronanza del linguaggio tecnico relativo ai linguaggi di programmazione. RISULTATI DI APPRENDIMENTO ATTESI Conoscenza e capacita' di comprensione Conoscenza delle macchine astratte. Conoscenza panoramica dei vari paradigmi di programmazione. Conoscenza del paradigma orientato agli oggetti. Conoscenza del linguaggio Java. Capacita' di applicare conoscenza e comprensione Capacita' di valutare le funzionalita' dei diversi paradigmi di programmazione. Capacita' di scrivere un codice nel linguaggio di programmazione Java. Autonomia di giudizio Capacita' di valutare e comparare autonomamente le soluzioni di un problema di limitata complessita. Abilita' comunicative Capacita' di organizzarsi in gruppi di lavoro. Capacita' di comunicare efficacemente in forma orale, anche utilizzando termini in inglese. Capacita' di apprendere Capacita' di catalogare, schematizzare e rielaborare le nozioni acquisite. OBIETTIVI FORMATIVI Fornire le competenze di base, sia metodologiche che tecniche, sui linguaggi di programmazione, in particolar modo sui linguaggi orientati agli oggetti. PREREQUISITI Conoscenze di programmazione in C, matematica discreta (array, liste, relazioni, calcolo combinatorio), conoscenze di base di logica (calcolo proposizionale, inferenza, tipi di dimostrazione, principio di induzione). TESTI CONSIGLIATI M. Gabbrielli, S. Martini, Linguaggi di programmazione, principi e paradigmi, Mc GrawHill; P. Principe, Java 7 Guida completa, Apogeo; C. Horstmann, Concetti di informatica e fondamenti di Java, Apogeo; C. Demetrescu, U. Ferraro Petrillo, I. Finocchi, G. F. Italiano, Progetto di algoritmi e strutture dati in Java, Mc GrawHill; R. Sedgewick, K. Wayne, Algorithms, 4th edition, Addison-Wesley. PROGRAMMA ORE Lezioni 12 Concetti base sui linguaggi di programmazione: linguaggi interpretati e compilati, macchine astratte, regole di visibilita, gestione della memoria, paradigmi di programmazione. 12 Paradigma di programmazione orientato agli oggetti: classi, attributi e metodi, incapsulamento. PROGRAMMA ORE Lezioni 6 Caratteristiche di base del linguaggio Java: struttura delle classi, strutture di controllo del flusso, stringhe, array e arraylist. 12 Caratteristiche OOP di Java: ereditarieta' e polimorfismo, overloading e overriding di metodi, static type checking e dynamic late binding. 12 Caratteristiche avanzate di Java: classi astratte e interfacce, gestione dell'input output, gestione delle eccezioni. 12 Strutture dati in Java (liste, pile, code, alberi, visite). 6 Interfacce grafiche con Swing.