Strumenti Utente

Strumenti Sito


Questa è una vecchia versione del documento!

Advanced Programming

Teacher: Giuseppe Attardi Question Time: Wednesday, 11:00 AM

Assistant: Cristian Dittamo

Master (Laurea Magistrale): Informatics and Networking and Informatics.

Day Hour Room
Tuesday 11-13 C, Polo Fibonacci
Wednesday 14-16 B, Polo Fibonacci
Friday 9-11 A, Polo Fibonacci

Tests and Exams

Final Test: Final Term, deadline 28/2/2011.

Midterm Test: Revised version, deadline 6/12/2010.

Summer Session Final Test: available from 16/6/2011 to 30/6/2011. Send mail to to receive it: deadline one month from receipt.

Fall Session Final Test: Final Term: deadline 20/9/2011.


The evolution of software systems towards Web Computing involves a variety of complex techniques and tools, from object-oriented programming, to component-based programming, to Web Service programming. A deep understanding of these techniques and their capabilities is required in order to fully exploit their potential.

The objectives of this course are:

  • to provide the students with a deep understanding of how high level programming concepts and metaphors map into executable systems and which are their costs and limitations
  • to acquaint the students with modern principles, techniques, and best practices of advanced software construction
  • to introduce the students to techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing
  • to present state-of-the-art frameworks incorporating these techniques.

This course will provide a deep understanding of modern software technologies, so that the students will be able to evaluate the effects of each design choice through all levels of a software architecture, in terms of performance, reliability, adaptability and integrability into larger systems.

The course is a required course for the Laurea Magistrale in Informatica as well of the Laurea Magistrale in Informatica e Networking, and contributes to prepare professionals for the role of software architect.


  1. Programming Language Foundations
    1. Syntax, Parsing, Abstract Syntax Tree, Parser Generators
    2. Names, Scope, Binding
    3. Parameter Passing
    4. Static and Dynamic Allocation: Stack, Heap
    5. Types, Inheritance, Polymorphism, Virtual Functions, Overloading
    6. Delegates, Closures
    7. Exception Handling
  2. Run-Time Systems
    1. Virtual Execution Environment
      1. Memory Management
      2. Thread Management
      3. Exception Handling
      4. Security
      5. Debugging Support
      6. AOT and JIT Compilation
      7. Dynamic Link/Load
      8. Reflection
    2. Examples
      1. JVM
      2. CLR
    3. Verification
    4. Language Interoperability
  3. Generic Programming
    1. C++ templates
    2. Java Generics
    3. C# Generics
    4. Bounded Polymorphism
  4. Class Libraries and Frameworks
    1. Object-Oriented Programming and Frameworks
      1. Use of polymorphism in framework design
      2. Extensibility, adaptability, performance of OOP
    2. Inversion of control
    3. .NET Framework Class Library
    4. Java Class Library
  5. Generative Programming
    1. MetaProgramming
    2. Reflection
    3. Template C++
    4. Aspect Oriented Programming
    5. Runtime code generation: LINQ
    6. Generators
    7. Program optimization and transformation
    8. Partial evaluation
  6. Interoperability
    1. Process level: interprocess communication
    2. Language level: CORBA/IDL
    3. Object level: DCOM
  7. Component Based Programming
    1. COM
    2. JavaBeans
    3. .NET (Assembly, Reflection, Interfaces, Attributes)
    4. OSGi
  8. Web Services
    1. XML, XML-Schema
    2. SOAP, RPC, Rest
    3. WSDL
    4. UDDI
  9. Web Frameworks and Applications
    1. Asp.Net
    2. ADO.Net
    3. J2EE
    4. Java Server Faces
    5. AJAX: XHR, YUI, GWT
    6. Mashup and Service Oriented Architecture
  10. Scripting
    1. Perl, Python, JavaScript, PHP, Ruby, Guile

Lecture Notes

Date Lecture Notes
19/10/2010 Introduction to the course Intro.ppt
20/10/2010 Parsing Parsing.ppt
22/10/2010 LL(1) Languages
26/10/2010 Recursive Descent Parsing
27/10/2010 Regular Languages and Expressions
29/10/2010 Bindings and Object Lifetime
2/11/2010 Names, Scopes, Binding name-scopes-binding.ppt
5/11/2010 Parameter Passing parameterpassing.pdf
9/11/2010 Memory management malloc.pdf
10/11/2010 Garbage Collection gcoverview.ppt
12/11/2010 Visita alberi a memoria costante
16/11/2010 Static Linking buildingrunnableprogram.pdf
17/11/2010 Dynamic Linking buildingrunnableprogram.pdf
19/11/2010 Introduction to COM
23/11/2010 sospensione didattica
24/11/2010 sospesa per occupazione
26/11/2010 sospesa per occupazione
30/11/2010 Sospensione didattica
1/12/2010 Sospesa per occupazione
3/12/2010 Introduction to COM (2)
7/12/2010 Types types.ppt
9/12/2010 Late Binding
14/12/2010 Polymorphism polymorphism.ppt
15/12/2010 Parametric Polymorphism
17/12/2010 Bounded Parametric Polymorphism
21/12/2010 C++ Template Metaprogramming templatemetaprogramming.pdf

Text books

Previous Editions

magistraleinformatica/pa/start.1313804270.txt.gz · Ultima modifica: 20/08/2011 alle 01:37 (12 anni fa) da Giuseppe Attardi