elenco   
        corso   

Programmazione avanzata

Codice: AA033Crediti: 12Semestre: 1Sigla: PA 
 
Settore disciplinare: INF/01 - Informatica

Docente

Giuseppe Attardi   attardi@di.unipi.it  Home Page di Giuseppe Attardi  Stanza 292  Tel. 0502212744

Prerequisiti

conoscenza ed esperienza di programmazione in un linguaggio a oggetti (Java, C++)

Obiettivi di apprendimento

L'evoluzione dei sistemi software verso il Web Computing coinvolge una varietà di tecniche e strumenti articolati e complessi, dalla programmazione a oggetti, alla programmazione a componenti, alla programmazione di Web Services. Per poter sfruttare a pieno le potenzialità di queste tecniche, occorre avere una comprensione approfondita della loro struttura e del loro funzionamento.
Conoscenze.

Al termine del corso lo studente avrà approfondito la struttura dei runtime dei linguaggi di programmazione, incluse le librerie standard. Conoscerà tecniche di programmazione che hanno un ruolo sempre più importanti, quali la meta-programmazione, la programmazione riflessiva, la programmazione AOP, la programmazione generativa. Conoscerà inoltre il funzionamento dei principali elementi di un runtime quali il JIT, il garbage collector e i thread, sapendo come questi influiscano sulle performace di un programma. La serializzazione di oggetti e XML saranno affrontati con l'obiettivo di comprendere l'infrastruttura dei Web Services.

Capacità.

Il corso richiede la realizzazione individuale di un meta-programma che generi un qualche programma, come ad esempio un serializzatore di strutture. Lo studente può quindi approfondire le varie tecniche illustrate durante il corso scrivendo codice in modo più coscienzioso e consapevole, utilizzando in modo appropriato i vari strumenti visti a lezione.

Descrizione

Il corso presenta i modelli di esecuzione, le tecniche e gli strumenti di programmazione avanzati. Si pone particolare attenzione al supporto necessario per il funzionamento di questi strumenti, in modo che lo studente abbia una visione chiara delle conseguenze che le scelte di design possono comportare a tutti i livelli del sistema. Il corso è tra i fondamentali della Laurea Specialistica in Tecnologie Informatiche.

English Description

Software systems are evolving towards Web Computing, which involves a variety of techniques from object-oriented programming to component programming and Web Serivices. The course presents advanced programming techniques, such as templates, generic programming, object-oriented design, design patterns, generative programming and large-scale software design.

Programma

Rassegna concetti di base di LP

  1. Syntax (Regular Expressions, Context Free Grammars)
  2. Scope
  3. Parameter Passing
  4. Stack, Heap
  5. Runtime
  6. Type Systems (System F, Kind)

RunTime

  1. Memory Management
  2. Execution Engine
  3. Verification
  4. Interoperability
  5. Link/Load
  6. Thread
  7. Inheritance, Polymorphism, Virtual Functions, Overloading
  8. JIT
  9. Delegates, Closures

Generic Programming

  1. C++ templates
  2. Java Generics
  3. Generics C#

Class Libraries and Frameworks

  1. .NET Framework Class Library
  2. Java Class Library

Generative Programming

  1. MetaProgramming
  2. Reflection
  3. Template C++
  4. Aspect Oriented Programming, Subject Oriented Programming
  5. Intentional Programming
  6. Generator s

Interoperability

  1. socke t
  2. linguaggio: CORBA/IDL
  3. oggetti: COM+

Componenti

  1. COM
  2. JavaBeans
  3. .NET (Assembly, Reflection, Interfaces, Attributes)

Web Services

Scripting

  1. Perl, Python, Jscript, PHP, Guile, Rebol
     

Bibliografia

Modalità di esame

Prova intermedia, Term paper finale e prova orale

home


email