Programmazione Avanzata

Primo Semestre 2002/2003

 

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

Lunedì

14-16

C

Martedì

14-16

C

Giovedì

16-18

C

Venerdì

16-18

C

 

Syllabus

Rassegna concetti di base di LP

  1. Syntax (RE, CF)
  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

Transaction Server (EJB, MTS)

 

Scripting

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

 

Lezioni

Data

Materiale

Argomento

30/09

Introduzione

Introduzione al corso

1/10

Names, Scopes, Binding

 

3/10

GC Overview

Gestione memoria: statica, automatica, dinamica

4/10

 

Discussione: il  futuro del C++

7/10

Types

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

8/10

 

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

10/10

 

Homework: Implementazione malloc/free, reference-count

11/10

 

Tecniche di Garbage Collection
Discussione: Scripting Languages

14/10

Building a Runnable Program

Linking/loading (COFF)

15/10

Runtime: CLR e JVM

Introduzione alle Virtual Machines, CLR Type System

17/10

 

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

21/10

Estendere SSCLI con un'istruzione

Delegates. Estensione CLR con istruzione ldhw.

22/10

Subtype polymorphism

Polymorphism: subtype.

24/10

 

Homework: Disegnare una classe di albero i cui elementi foglia siano specializzabili

25/10

 

Introduzione a XML
Discussione: XML, the ASCII of the 21th century?
Ospite: Giorgio Ghelli

28/10

Generic Programming in C++

Parametric Polymorphism. C++ templates

29/10

Bounded Parametric Polymorphism

Bounded Polymorphism: GJ, C#

31/10

Correzione Homework. Bounded Polymorphism

7/11

Correzione Homework. Assegnato MidTerm Paper

8/11

STL

C++ Standard Template Library

11/11

GenerativeProgramming.ppt

Generative Programming

12/11

MetaProgramming.ppt

Template Metaprogramming

14/11

Raccolta MidTerm Paper

18/11

Reflection.ppt

Reflection

19/11

Reflection

21/11

Esercizi di metaprogrammazione: serializzazione

22/11

Software Components: cosa sono?

25/11

Consegna MidTerm e correzione

26/11

Correzione MidTerm

28/11

Correzione Homework su parser

29/11

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

COM Fundamentals, by Don Box

2/12

COM Applications

3/12

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

5/12

Web Services

6/12

Enterprise Application Integrations vs Web Services
by Gioacchino Lavecchia

9/12

WebServices.ppt

Web Services: client side

10/12

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

12/12

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

13/12

Seminario di Diego Colombo sulla compilazione usando le librerie Intel.

16/12

ASP.NET e Web Services: under the hood.

17/12

Assegnazione final term paper. Per chi non lo avesse fatto, il mid-term paper verrà pubblicato il 3/2/2003 per essere consegnato il 10/2/2003.

3/2/03

Assegnazione MidTerm paper per chi non lo ha fatto o lo vuole rifare. Consegna il 10/2/2003.

7/06/03

Assegnazione final term paper per l'appello del 7/7/03.

18/09/03

Assegnazione final term paper per l'appello del 18/9/03.

Testi di Riferimento

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

Shared Source CLI Essentials         Shared Source CLI Essentials, David StutzGeoff ShillingTed 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

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