Programmazione Avanzata Primo Semestre 2003/2004 |
---|
Professore |
Assistente |
---|---|
mail: attardi@di.unipi.it |
mail: cisterni@di.unipi.it |
Ufficio: 292 |
Ufficio: 383 |
Ricevimento: martedì ore 10:30 |
Ricevimento: mercoledì ore 10:30 |
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.
Giorno |
Ora |
Aula |
Martedì |
16-18 |
C |
Giovedì |
16-18 |
C |
Venerdì |
11-13 |
C |
Venerdì |
16-18 |
C |
Data |
Materiale |
Argomento |
---|---|---|
30/09 |
|
Presentazione degli argomenti del corso. |
2/10 |
Introduzione al corso |
|
3/10 |
|
|
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 |
Meccanismi di passaggio dei parametri |
|
16/10 |
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 |
Passaggio di parametri: chiusure. Fasi di compilazione |
|
23/10 |
Linguaggi formali: grammatiche context-free |
|
28/10 |
|
Homework: Costruzione di un parser a discesa ricorsiva |
30/10 |
Introduzione alle Virtual Machines, CLR Type System |
|
31/10 |
|
Delegates |
31/10 |
|
COFF. Linking: statico e dinamico. Esercizio: implementazione liste |
6/11 |
Sorgenti Rotor: organizzazione del codice e come navigare |
|
7/11 |
Estensione CLR con istruzione ldhw. |
|
7/11 |
|
Object Spaces e nuove tecnologie .NET in Yukon |
11/11 |
Polymorphism: subtype. |
|
13/11 |
Parametric Polymorphism. C++ templates |
|
14/11 |
Bounded Polymorphism: GJ, C# |
|
14/11 |
Correzione Homework. Assegnato MidTerm Paper |
|
18/11 |
C++ Standard Template Library |
|
21/11 |
Generative Programming Aspect Oriented Programming |
|
|
Template Metaprogramming |
|
|
Raccolta MidTerm Paper |
|
|
Reflection |
|
|
Reflection |
|
|
Esercizi di metaprogrammazione: serializzazione |
|
|
Software Components: cosa sono? |
|
|
Consegna MidTerm e correzione |
|
|
Correzione MidTerm |
|
|
Correzione Homework su parser |
|
|
COM Fundamentals, by Don Box |
|
|
COM Applications |
|
|
Mapping COM to Java. Marshalling: by value, by reference |
|
|
Web Services |
|
|
|
Enterprise Application Integrations vs Web Services |
|
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. |
Programming Language Pragmatics,
Michael L. Scott, Morgan-Kaufmann, 2000.
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.
Rotor Sorgenti di Rotor
Java2C# Introduzione a C# per programmatori Java
J2EE J2EE Tutorial
Homework, seminari, discussioni: 20%
MidTerm Paper: 30%
Term Paper: 50%