TECNICHE DI PROGRAMMAZIONE AVANZATA

Informatica TECNICHE DI PROGRAMMAZIONE AVANZATA

0512100026
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA
INFORMATICA
2015/2016



ANNO ORDINAMENTO 2008
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
Obiettivi
CONOSCENZA E CAPACITÀ DI COMPRENSIONE:
IL CORSO PRESENTA MODELLI E TECNICHE DI PROGRAMMAZIONE UTILI PER AFFRONTARE PROBLEMI SU SCALA REALE. ATTRAVERSO IL LINGUAGGIO PYTHON ED UNA SERIE DI ESEMPI CONCRETI GLI ALLIEVI SARANNO GUIDATI ALL’UTILIZZO DI STRUMENTI COMPLESSI QUALI: CLASSI E TECNICHE DI PROGRAMMAZIONE OBJECT-ORIENTED, UTILIZZO DELL’EREDITARIETÀ MULTIPLA, RICORSIONE, GESTIONE DELLA CONCORRENZA, UTILIZZO DELLA TECNICA DELLE CONTINUAZIONI E PROGRAMMAZIONE AD EVENTI. TRA I VARI ESEMPI SARANNO SVILUPPATI CASI DI STUDIO RELATIVI ALLA GUI, WEB E DISTRIBUTED PROGRAMMING. NELLA PRESENTAZIONE DEL LINGUAGGIO PYTHON SARANNO INCLUSE LE PRINCIPALI STRUTTURE DATI (DIZIONARI, LISTE, ALBERI) E LE LIBRERIE PIÙ DIFFUSE NELL’AREA WEB PROGRAMMING.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE:
AL TERMINE DEL CORSO GLI STUDENTI DOVRANNO ESSERE IN GRADO DI RISOLVERE PROBLEMI COMPLESSI ELABORANDO UNA STRATEGIA RISOLUTIVA IN FUNZIONE DELLE LIBRERIE DI CLASSI PYTHON GIÀ DISPONIBILI E DELLE ESPERIENZE MATURATE DURANTE LE LEZIONI. UNA VOLTA FORNITE LE SPECIFICHE FUNZIONALI OGNI STUDENTE DOVRÀ INDIVIDUARE UNA SOLUZIONE OTTIMALE BASANDOSI SUGLI STRUMENTI DISPONIBILE E SULLA POSSIBILITÀ DI TRASFORMARE IL PROBLEMA IN INPUT AD UNA DELLE CLASSI DI PROBLEMI GIÀ AFFRONTATI

ABILITÀ COMUNICATIVE:
OGNI TECNICA DI PROGRAMMAZIONE SARÀ ANCHE RESA DIMOSTRABILE DURANTE LE ESERCITAZIONI IN LABORATORIO SVILUPPANDO PROGETTI AD-HOC E ESTENDENDO L’INSIEME DI CLASSI DI OGGETTI UTILIZZATE GRADUALMENTE.
FONDAMENTALE SARÀ IL CONFRONTO CON LE PRECEDENTI ESPERIENZE DI PROGRAMMAZIONE MATURATE NEL CORSO DI STUDI, PER EVIDENZIARE I VANTAGGI DEI NUOVI APPROCCI E PER COMPRENDERE CONCRETAMENTE QUANDO È POSSIBILE IMPIEGARE CON SUCCESSO IL NUOVO PATTERN DI PROGRAMMAZIONE INDICANDONE VANTAGGI E SVANTAGGI.

AUTONOMIA DI GIUDIZIO:
GLI STUDENTI SARANNO GUIDATI AD APPRENDERE IN MANIERA CRITICA E RESPONSABILE TUTTO CIÒ CHE VIENE INTRODOTTO IN CLASSE. LA LORO CAPACITÀ DI GIUDIZIO SARÀ ARRICCHITA ATTRAVERSO UN APPROCCIO COMPARATIVO CHE TENDERÀ SEMPRE A FAR EMERGERE MOTIVAZIONI E VANTAGGI DEI NUOVI APPROCCI RISPETTO A QUANTO GIÀ NOTO IN PRECEDENZA. IN PARTICOLARE, SFRUTTANDO L’ESTREMA POPOLARITÀ DEL LINGUAGGIO PYTHON SARÀ POSSIBILE ACCEDERE ALLE VASTE COMMUNITY DI SVILUPPATORI PER PROMUOVERE CONFRONTI CONDIVIDENDO PROBLEMI E SOLUZIONI.

CAPACITÀ DI APPRENDIMENTO:
IL CORSO È STATO PROGETTATO IN MODO DA FAVORIRE UN MODELLO DI APPRENDIMENTO INCREMENTALE, PASSANDO GRADUALMENTE DALLE TECNICHE DI PROGRAMMAZIONE GIÀ NOTE ALLE TECNICHE PIÙ SOFISTICATE. ATTRAVERSO LE ESERCITAZIONI IN LABORATORIO SARÀ MONITORATO COSTANTEMENTE IL LIVELLO DI APPRENDIMENTO RAGGIUNTO. LA REALIZZAZIONE DEI PROGRAMMI ESEMPIO SUGGERITI CONSENTIRÀ ANCHE AGLI ALLIEVI DI VERIFICARE IL PROPRIO LIVELLO DI APPRENDIMENTO ED I RISULTATI RAGGIUNTI NELLE VARIE FASI DEL CORSO.
TUTTI GLI STUDENTI SVILUPPERANNO UN PROGETTO SU SCALA REALE ORGANIZZANDOSI IN PICCOLI GRUPPI PER STIMOLARE UN MAGGIORE IMPEGNO E PER CONSENTIRE L’IMMEDIATA APPLICAZIONE DI QUANTO APPRESO.
Prerequisiti
IL CORSO ASSUME CHE OGNI STUDENTE ABBIA GIÀ SEGUITO ALMENO UN CORSO INTRODUTTIVO SULLA PROGRAMMAZIONE JAVA E SULLE STRUTTURE DATI. E' INOLTRE FORTEMENTE CONSIGLIATO AVER GIÀ ACQUISITO NOZIONI DI BASE SULLA PROGRAMMAZIONE DISTRIBUITA
Contenuti
ORE DI LEZIONI FRONTALI: 48
IL CORSO È SUDDIVISO IN 3 PARTI:

LA PRIMA PARTE INTRODUCE BREVEMENTE I CONCETTI LEGATI ALLA PROGRAMMAZIONE PROCEDURALE, LA SINTASSI DEL LINGUAGGIO, I TIPI DI DATI DI BASE E LA SEMANTICA DEI COSTRUTTI DISPONIBILI IN PYTHON (CONTROL STRUCTURE, FUNCTION, MODULE E PACKAGE, EXCEPTION HANDLING). SUCCESSIVAMENTE VENGONO INTRODOTTI I TIPI DI DATI ASTRATTI (COLLECTION ED ITERATORS) E LE LIBRERIE STANDARD DI PYTHON.
LA SECONDA PARTE È DEDICATA AD UNA RIVISITAZIONE DEI CONCETTI DELLA PROGRAMMAZIONE OBJECT ORIENTED NELLA LOGICA DI PYTHON, MOSTRANDO ANCHE COME UTILIZZARE LE CARATTERISTICHE DELLA PROGRAMMAZIONE FUNZIONALE.
L’ULTIMA PARTE DEL CORSO INTRODUCE I PRINCIPALI DESIGN PATTERN, TRA CUI: CREATIONAL DESIGN PATTERN, STRUCTURAL DESIGN PATTERN, BEHAVIORAL DESIGN PATTERNS. ATTRAVERSO QUESTI STRUMENTI SARANNO AFFRONTATI TEMI QUALI: PROGRAMMAZIONE CONCORRENTE (PROCESSI E THREAD), NETWORK PROGRAMMING, DB PROGRAMMING E SVILUPPO DELLA GUI (CENNI).
Metodi Didattici
LEZIONI FRONTALI (100%), DI CUI CIRCA IL 40% RIGUARDANTE ESERCIZI ED ESEMPI DI PROGRAMMAZIONE. AL TERMINE DEL CORSO SARÀ SVILUPPATO UN PROGETTO DA PICCOLI GRUPPI DI STUDENTI.
Verifica dell'apprendimento
L’ESAME PREVEDE UNA PROVA SCRITTA ED UNA PROVA ORALE, CON LA DISCUSSIONE DI UN PROGETTO ELABORATO DAGLI STUDENTI. LA PROVA SCRITTA CONSISTE NELLA IMPLEMENTAZIONE DI UNA SOLUZIONE AD UNO SPECIFICO PROBLEMA DI PROGRAMMAZIONE. IL PROGETTO PREVEDE LO SVILUPPO DI UNA APPLICAZIONE, CURANDO ANCHE LA REDAZIONE DELLA RELATIVA DOCUMENTAZIONE TECNICA. SARANNO VALUTATE LA QUALITÀ DELLA DOCUMENTAZIONE, LA MOTIVAZIONE DELLE SCELTE PROGETTUALI EFFETTUATE, L'EFFICACIA E L'EFFICIENZA DELLE SOLUZIONI PROPOSTE. L'ESITO DELLA PROVA SCRITTA, DELLA PROVA ORALE E DELLA DISCUSSIONE DEL PROGETTO CONCORRONO ALLA FORMULAZIONE DEL VOTO FINALE CON PESI 40%, 40%, 20%, RISPETTIVAMENTE.
Testi
MARK SUMMERFIELD, "PYTHON PROGRAMMAZIONE AVANZATA ",
EDITORE: APOGEO, LINGUA: ITALIANA, ISBN: 9788850333028

MARCO BUTTU, "PROGRAMMARE CON PYTHON. GUIDA COMPLETA",
EDITORE: LSWR; 1 EDIZIONE (26 FEBBRAIO 2014), LINGUA: ITALIANO, ISBN-10: 8868950243, ISBN-13: 978-8868950248

Altre Informazioni
E-MAIL DEL DOCENTE: CATTANEO@UNISA.IT
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2016-09-30]