Strumenti Utente

Strumenti Sito


Questa è una vecchia versione del documento!

Advanced Programming

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

Master (Laurea Magistrale): Informatics.

Day Hour Room
Monday 16-18 B, Polo Fibonacci
Wednesday 11-13 A1, Polo Fibonacci
Friday 14-16 L1, Polo Fibonacci

Tests and Exams

Midterm Test: Mid Term, deadline 20/11/2013.

Final Test: Final Term (versione con esempio XML aggiornato), consegna entro 14/2/2014.

Special session for working students: deadline 31/3/2014.

Final Test: Final Term, deadline 9/6/2014

Final Test: Final Term, deadline 29/6/2014

Final Test: Final Term, deadline 24/7/2014

Final Test: Final Term, deadline 12/9/2014


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, jQuery, GWT
    6. Mashup and Service Oriented Architecture
    7. HTML 5
  10. Scripting
    1. Perl, Python, JavaScript, PHP, Ruby

Lecture Notes

Date Lecture Notes
23/09/2013 Motivation of the course Introduction
25/09/2013 Introduction and objectives
27/09/2013 Grammars and Parsing Parsing
30/09/2013 LL(1) grammars, Recursive Descent Parsing
2/10/2013 Regular languages
4/10/2013 Names, Sopes, Bindings name-scopes-binding.ppt
7/10/2013 Storage Management malloc
9/10/2013 Storage Management malloc
11/10/2013 Garbage Collection gcoverview.ppt
14/10/2013 Incremental, Generational Garbage Collection gctechniques2.ppt
16/10/2013 Scope Rules: static and dynamic
18/10/2013 Parameter Passing parameterpassing.ppt
21/10/2013 Parameter Passing parameterpassing.ppt
23/10/2130 Static and Dynamic Linking buildingrunnableprogram.pdf
25/10/2013 Introduction to C# IntroToC#
28/10/2013 Introduction to COM com_fundamentals1.pdf
11/11/2013 Introduction to COM com_fundamentals1.pdf
13/11/2013 Common Language Runtime CLI+CLR.pdf,inside_clr.pptx
15/11/2013 Web Services webservices.pdf
18/11/2013 Web Services webservices.pdf
20/11/2013 Dynamic Web Pages
22/11/2013 Correction MidTerm
25/11/2013 Generators generators.pdf
27/11/2013 Generic Programming polymorphism.ppt
29/11/2013 Parametric Polymorphism parametricpolymorphism.ppt
Bounded Parametric Polymorphism
02/12/2013 C++ Template Metaprogramming templatemetaprogramming.pdf
04/12/2013 Standard Template Library STL.ppt
Types Types.ppt
06/12/2013 LINQ LINQ
09/12/2013 AJAX, Json AJAX Overview, JSON
11/12/2013 nodejs, jQuery jQuery, Javascript Practice,Javascipt Language
13/12/2013 Symfony2 Introduction to Symfony2
Perpectives Web 2.0

Text books

Previous Editions

magistraleinformatica/pa/start.1408726633.txt.gz · Ultima modifica: 22/08/2014 alle 16:57 (9 anni fa) da Giuseppe Attardi