Strumenti Utente

Strumenti Sito


Questa è una vecchia versione del documento!

Advanced Programming

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

Assistant: Antonio Valerio Miceli Barone

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

Day Hour Room
Monday 16-18 C1, Polo Fibonacci
Wednesday 11-13 C1, Polo Fibonacci
Friday 14-16 C1, Polo Fibonacci

Tests and Exams

Midterm Test: Mid Term, deadline 13/11/2012.

Final Term: Final Term (mispell corrections), deadline 28/1/2013

Final Term: Final Term, deadline: 15/2/2013

Final Term: Final Term, deadline 1/7/2013

Final Term: Final Term, deadline on 22/7/2013

Final Term: Final Term, deadline on 23/9/2013


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
    7. HTML 5
  10. Scripting
    1. Perl, Python, JavaScript, PHP, Ruby

Lecture Notes

Date Lecture Notes
19/9/2012 Programming Preliminaries precorso.pdf
21/9/2012 Programming Preliminaries
24/9/2012 Programming Preliminaries
26/9/2012 Programming Preliminaries
28/9/2012 Programming Preliminaries
1/10/2012 Programming Preliminaries, Visitor Pattern
3/10/2012 Introduction to the course Introduction
5/10/2012 Grammars and Parsing Parsing
8/10/2012 LL(1) grammars, Recursive Descent Parsing
10/10/2012 Regular languages
12/10/2012 Names, Sopes, Bindings name-scopes-binding.ppt
15/10/2012 Scope Rules: static and dynamic
17/10/2012 Storage Management malloc
19/10/2012 Garbage Collection gcoverview.ppt
22/10/2012 Parameter Passing parameterpassing.pdf
24/10/2012 Static and Dynamic Linking buildingrunnableprogram.pdf
26/10/2012 Introduction to COM com_fundamentals1.pdf
29/10/2012 Web Services webservices.pdf
31/10/2012 Dynamic Web Pages
7/11/2012 Generic Programming polymorphism.ppt
9/11/2012 Parametric Polymorphism parametricpolymorphism.ppt
12/12/2012 Bounded Parametric Polymorphism
14/11/2012 Correction MidTerm
16/11/2012 C++ Template Metaprogramming templatemetaprogramming.pdf
19/11/2012 Standard Template Library STL.ppt
21/11/2012 Generators generators.pdf
23/11/2012 Types Types.ppt
26/11/2012 Introduction to C# IntroToC#.ppt
28/11/2012 Common Language Runtime CLI+CLR.pdf
30/11/2012 LINQ linq.ppt
3/12/2012 AJAX, Json ajaxoverview.ppt, json.ppt
5/12/2012 jQuery jquery.ppt
7/11/2012 HTML 5 Advanced HTML: HTML 5
10/12/2012 Perpectives Web 2.0

Text books

Previous Editions

magistraleinformatica/pa/start.1378219723.txt.gz · Ultima modifica: 03/09/2013 alle 14:48 (10 anni fa) da Giuseppe Attardi