Programmazione Avanzata

Primo Semestre 2003/2004

 

Professore

Assistente

Giuseppe Attardi

Antonio Cisternino

mail: attardi@di.unipi.it

mail: cisterni@di.unipi.it

Ufficio: 292

Ufficio: 383

Ricevimento: martedì ore 10:30

Ricevimento: mercoledì ore 10:30

Obiettivi

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.

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.

Orario

Giorno

Ora

Aula

Martedì

16-18

C

Giovedì

16-18

C

Venerdì

11-13

C

Venerdì

16-18

C

Syllabus

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. MM
  2. Execution Engine
  3. Verification
  4. Interoperability
  5. Link/Load
  6. Thread
  7. PAL
  8. Inheritance, Polymorphism, Virtual Functions, Overloading
  9. JIT
  10. Delegates, Closures

Generic Programming

  1. C++ templates
  2. Java Pizza
  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. Generators

Interoperability

  1. socket
  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

 

Lezioni

Data

Materiale

Argomento

30/09

 

Presentazione degli argomenti del corso.

2/10

Introduzione

Introduzione al corso

3/10

Names, Scopes, Binding

 

3/10

 

Approccio e metodi dello sviluppo Open Source

7/10

 

Allocazione a stack

9/10

 

Meccanismi di passaggio dei parametri

10/10

 

Homework: Implementazione malloc/free, stringhe C++ con reference count

10/10

 

Homework: Visita albero con algoritmo Schnorr-Waite

14/10

GC Overview

Meccanismi di passaggio dei parametri

16/10

Types

Tipi, Classificazione, Tipi Composti, Equivalenza, Conversione, Cast, Ereditarietà, Inferenza, Layout memoria struct e union

17/10

 

Moduli, Abstract Data Type, Classi, Oggetti, Late-binding, Ereditarietà singola/multipla/mixin, Implementazione vtable

21/10

Building a Runnable Program

Passaggio di parametri: chiusure. Fasi di compilazione

23/10

Parsing

Linguaggi formali: grammatiche context-free

28/10

 

Homework: Costruzione di un parser a discesa ricorsiva

30/10

Runtime: CLR e JVM

Introduzione alle Virtual Machines, CLR Type System

31/10

 

Delegates

31/10

 

COFF. Linking: statico e dinamico. Esercizio: implementazione liste

6/11

Rotor

Sorgenti Rotor: organizzazione del codice e come navigare
Homework: determinare come vengono gestiti gli oggetti "pinned" dal GC di Rotor

7/11

Estendere SSCLI con un'istruzione

Estensione CLR con istruzione ldhw.

7/11

 

Object Spaces e nuove tecnologie .NET in Yukon
Relatore: Silvano Coriani, Microsoft Italia

11/11

Subtype polymorphism

Polymorphism: subtype.

13/11

Generic Programming in C++

Parametric Polymorphism. C++ templates

14/11

Bounded Parametric Polymorphism

Bounded Polymorphism: GJ, C#

14/11

Correzione Homework. Assegnato MidTerm Paper

18/11

STL

C++ Standard Template Library

21/11

GenerativeProgramming.ppt
AspectJ Tutorial

Generative Programming
Aspect Oriented Programming

 

MetaProgramming.ppt

Template Metaprogramming

 

Raccolta MidTerm Paper

 

Reflection.ppt

Reflection

 

Reflection

 

Esercizi di metaprogrammazione: serializzazione

 

Software Components: cosa sono?

 

Consegna MidTerm e correzione

 

Correzione MidTerm

 

Correzione Homework su parser

 

COM fundamentals (Part 1)
COM fundamentals (Part 2)

COM Fundamentals, by Don Box

 

COM Applications

 

Mapping COM to Java. Marshalling: by value, by reference

 

Web Services

 

Enterprise Application Integrations vs Web Services
by Gioacchino Lavecchia

 

WebServices.ppt

Web Services: client side

 

Tratti delle architetture a componenti: esprimere COM in Java/C#. Esempio dell'interprete che usa la reflection per creare ed usare oggetti Java.

 

Correzione homework: contare le occorrenze delle parole in un testo.

 

Seminario di Diego Colombo sulla compilazione usando le librerie Intel.

 

ASP.NET e Web Services: under the hood.

19/12/03

Assegnazione Final Term Paper. Versione aggiornata al 15/1/04

8/2/04

Per ricevere il testo della prova di recupero del MidTerm, inviare una mail a Attardi

04/06/04

Assegnazione Final Term Paper.

10/09/04

Assegnazione Final Term Paper.

Testi di Riferimento

         Programming Language Pragmatics, Michael L. Scott, Morgan-Kaufmann, 2000.

Shared Source CLI Essentials          Shared Source CLI Essentials, David Stutz, Geoff Shilling, Ted Neward, O’Reilly, 2003.

        Generative Programming: Methods, Tools, and Applications, Krzysztof Czarnecki, Ulrich Eisenecker, Addison-Wesley, 2000.

     Applied Microsoft .NET Framework Programming , Jeffrey Richter, Microsoft Press, 2002.

Materiale di Riferimento

Rotor               Sorgenti di Rotor

Java2C#          Introduzione a C# per programmatori Java

J2EE                 J2EE Tutorial

Modalità di insegnamento

Lunedì e Martedì:
presentazione di argomenti
Giovedì:
We will issue a set of questions to guide your exploration. At the following meeting, a group of people will present their findings for the class and a general discussion will follow.
Venerdì:
seminari o discussione

Modalità di esame

Formulazione del voto:

Homework, seminari, discussioni:     20%

                                MidTerm Paper:     30%

                                       Term Paper:     50%

Lista di Homework

Esercizi