Programmazione Avanzata

Primo Semestre 2004/2005

 

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í

9-11

C

Venerdí

14-16

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. Memory Management
  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

28/09

 

Presentazione degli argomenti del corso.

30/9

Introduzione

Introduzione al corso

1/10

Names, Scopes, Binding

Binding

1/10

 

Allocazione: statica, stack, heap

5/10

 

Esercitazione: implementazione malloc e free

7/10

Scoping delle variabili

8/10

Passaggio dei parametri. Chiusure

8/10

GC Overview

Garbage Collection

12/10

Building a Runnable Program

Compilazione. Architettura e fasi di compilazione.

14/10

Building a Runnable Program

COFF. Linking: statico e dinamico.

15/10

Parsing

Linguaggi formali: grammatiche context-free

15/10

Coco/R

Assegnazione Midterm

26/10

Soluzione MidTerm

Correzione MidTerm

28/10

Types

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

29/10

 

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

29/10

Runtime: CLR e JVM

Common Language Runtime. Delegates.

2/11

Navigare i sorgenti di Rotor: struttura di un runtime.

5/11

Estending SSCLI

Estendere Rotor con un'istruzione

5/11

Polymorphism

Subtype polymorphism

11/11

Bounded Parametric Polymorphism

Bounded Polymorphism: GJ, C#

12/11

Generic Programming in C++

Parametric Polymorphism. C++ templates

12/11

Tavola rotonda su insegnamento della programmazione: M. Danelutto, S. Coriani, A. Cisternino

18/11

Risultati MidTerm

19/11

GenerativeProgramming.ppt
AspectJ Tutorial

Generative Programming

19/11

MetaProgramming.ppt

C++ template meta-programming

23/11

Reflection.ppt

Reflection

25/11

COM fundamentals (Part 1), by Don Box

I principi di COM

26/11

Web Services

Web Services

26/11

Web Services

2/12

jws.zip

Web Services: Interoperability, Java SOAP

3/12

Web Services

Clienti Web per usare Web Services

3/12

J2EE.ppt

A Comparison Between J2EE and .Net, by Peter Ty

Introduzione a J2EE

7/12

Programmazione ASP.NET

Programmazione ASP.Net

9/12

Dynamic Web Pages with ASP.NET, Herbert Praehofer

Architettura di ASP.Net

10/12

Data Access with ADO.NET, Herbert Praehofer, Dietrich Birngruber

Introduzione a ADO.Net

10/12

WebApplication2.zip

Esempi di programmazione in ADO.Net

14/12

Introduction to Java Server Faces

Java Server Faces

16/12

Prospettive

Prospettive future sullo sviluppo di componenti

17/12

Assegnazione Final Term (versione aggiornata al 8/1/05)

26/01/2005

Assegnazione Mid Term

06/06/2005

Final Term (versione aggiornata 12/07/05). Scadenza consegna 22/7/2005.

22/08/2005

Final Term. Scadenza consegna 23/9/2005.

Edizioni precedenti

Anno Accademico 2002
Anno Accademico 2003

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.
Object Thinking , David West, Microsoft Press, 2004.

Materiale di Riferimento

Rotor
Sorgenti di Rotor
Java2C#
Introduzione a C# per programmatori Java
J2EE
J2EE Tutorial
J2EE
C++ Templates and Generic Programming, E. Zueff, ETH

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