Programmazione Avanzata

Primo Semestre 2008/2009

 

Professore

Assistente

Giuseppe Attardi

mail: attardi@di.unipi.it

mail:

Ufficio: 292

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 appieno 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 e contribuisce a formare la figura professionale del software architect.

Orario

Giorno

Ora

Aula

Lunedí

11-13

C1

Martedí

11-13

C

Martedí

16-18

B

Giovedí

11-13

A

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 Generics
  3. C# Generics

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

  1. XML, XML-Schema
  2. SOAP, RPC, Rest
  3. WSDL
  4. UDDI

Web Frameworks and Applications

  1. Asp.Net
  2. ADO.Net
  3. J2EE
  4. Java Server Faces
  5. AJAX

Scripting

  1. Perl, Python, JavaScript, PHP, Ruby, Guile

 

Lezioni

Data

Materiale

Argomento

22/09

 

Presentazione degli argomenti del corso

23/9

Introduzione

Introduzione al corso

23/9

Programming Language Shootout

Confronto di efficienza tra diversi linguaggi di programmazione

2/10

Names, Scopes, Binding

Binding

6/10

GC Overview

Allocazione: statica, stack, heap

7/10

Scoping delle variabili

7/10

Informatica e Mercati Finanziari (parte I). Enrico Dameri, List Group

14/10

Informatica e Mercati Finanziari (parte II). Enrico Dameri, List Group

21/10

Types

Tipi di dato

21/10

Rappresentazione dei tipi di dato

23/10

Polymorphism

Polymorphism

27/10

Java Generics

28/10

C# Generics

28/10

STL
MetaProgramming

Standard Template Library. Template Metaprogramming.

30/10

Parametric Polymorphism

ParametricPolymorphism

06/11

Parsing

Parsing

06/11

MidTerm. Scadenza consegna 13/11/2008

10/11

Grammatiche LL(1) e grammatiche regolari

11/11

Recursive Descent Parser

Recursive Descent Parsing

11/11

Compiler Organization

Compiler Architecture

13/11

BuildingRunnableProgram

Building a runnable program

17/11

Runtime: CLR e JVM

Execution Environments: Common Language Runtime e JVM

18/11

Generative Programming

Generative Programming

18/11

AspectJ Tutorial

AspectJ

20/11

MetaProgramming

Metaprogramming

24/11

Sospensione per assemblea, Facoltà

25/11

Reflection

Reflection

25/11

COM Fundamentals (Part 1), by Don Box

COM Fundamentals

27/11

Web Services

Web Services

1/12

J2EE

Java Enterprise

2/12

A Comparison Between J2EE and .Net, by Peter Ty

Java Enterprise and .Net

2/12

Introduction to F#, Don Syme

Introduzione a F#

9/12

Dynamic Web Pages with ASP.NET, H. Praehofer

Architecture of ASP.NET

9/12

Introduction to Java Server Faces, D. Goyal, V. Varma

Java Server Faces

11/12

Data Access with ADO.NET, H. Praehofer, D. Birngruber

Correzione Mid Term

15/12

The YUI Library, S. Willison

Yahoo! User Interface

16/12

GWT: Getting Started

Google Web Toolkit

16/12

What is Web 2.0?, E. Lee, A. Bigdeli, R. Chiu

Direzioni future

22/12

Final Term (aggiornato al 14/1/09). Scadenza consegna 31/1/2009

Edizioni precedenti

Anno Accademico 2002
Anno Accademico 2003
Anno Accademico 2004
Anno Accademico 2005
Anno Accademico 2006

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í, Martedí e Giovedí:
presentazione di argomenti
Martedí pomeriggio:
seminari o discussione

Modalità di esame

Formulazione del voto:

Homework, seminari, discussioni:     20%

                                MidTerm Paper:     30%

                                       Term Paper:     50%

Lista di Homework

Argomenti dei Term Paper