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 A1, Polo Fibonacci
Wednesday 11-13 A1, Polo Fibonacci
Friday 14-16 A1, Polo Fibonacci

Tests and Exams

Midterm Test: Mid Term Assignment, deadline 16/11/2014.

Final Test: Final Term Assignment (with corrections), deadline 1/2/2015.

Final Test: Final Term Assignment, deadline 20/2/2015.

Final Test: Final Term Assignment, deadline 24/6/2015.

Final Test: Final Term Assignment (with corrections), deadline 7/7/2015.

Final Test: Final Term Assignment, deadline 23/7/2015.

Final Test: Final Term Assignment, deadline 11/9/2015.

Appello Straordinario novembre: il test verrà inviato via mail il 2/11/2015 agli studenti iscritti.

Final Test: Final Term Assignment, deadline 5/2/2016.

Final Test: Final Term Assignment, deadline 19/2/2016.


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
22/09/2014 Motivation of the course Introduction
24/09/2014 Grammars and Parsing Parsing
26/09/2014 LL(1) grammars
29/09/2014 Recursive Descent Parsing
01/10/2014 Regular languages
03/10/2014 Names, Sopes, Bindings name-scopes-binding.ppt
06/10/2014 Storage Management malloc
08/10/2014 Garbage Collection gcoverview.ppt
10/10/2014 Incremental, Generational Garbage Collection gctechniques2.ppt
13/10/2014 Scope Rules: static and dynamic
15/10/2014 Parameter Passing parameterpassing.ppt
17/10/2014 Sospesa per sciopero
20/10/2014 Compilers and code generation buildingrunnableprogram.pdf
22/10/2014 Static and Dynamic Linking buildingrunnableprogram.pdf
24/10/2014 Introduction to COM com_fundamentals1.pdf
27/10/2014 Introduction to COM com_fundamentals1.pdf
29/10/2014 Web Services webservices.pdf
31/10/2014 Web Services webservices.pdf
10/11/2014 Common Language Runtime CLI+CLR.pdf,inside_clr.pptx
12/11/2014 sospensione didattica
14/11/2014 Introduction to C# IntroToC#
17/11/2014 CLR, CLI and JIT
19/11/2014 LINQ LINQ
21/11/2014 Polymorphism Types.ppt
24/11/2014 Parametric Polymorphism parametricpolymorphism.ppt
26/11/2014 Dynamic Web Pages, ASP.NET, Web Forms ASP.NET
28/11/2014 Correction MidTerm
1/12/2014 Generators generators.pdf
3/12/2014 Generic Programming polymorphism.ppt
5/12/2014 C++ Template Metaprogramming templatemetaprogramming.pdf
Standard Template Library STL.ppt
10/12/2104 AJAX, Json AJAX Overview, JSON
12/12/2014 Sospesa per sciopero
15/12/2014 nodejs, jQuery jQuery, Javascript Practice,Javascipt Language
Symfony2 Introduction to Symfony2
Perpectives Web 2.0

Text books

Previous Editions

magistraleinformatica/pa/start.1454234315.txt.gz · Ultima modifica: 31/01/2016 alle 09:58 (7 anni fa) da Giuseppe Attardi