Strumenti Utente

Strumenti Sito


Questa è una vecchia versione del documento!

Advanced Programming

Teacher: Giuseppe Attardi, Room: 292 DE, Office Hours: Monday, 15:00

Teaching Assistant: Ioanna Miliou

Master (Laurea Magistrale): Informatics.

Day Hour Room
Monday 11-13 N1, Polo Fibonacci
Tuesday 9-11 B, Polo Fibonacci
Friday 11-13 L1, Polo Fibonacci


The Piazza Community for this course. Follow instructions to enroll.

Tests and Exams

Midterm Paper: deadline 5/4/2016.

Final Term (revised): deadline 24/6/2016.

Final Term, deadline July 25th.

Final Term, deadline 13/9/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, 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 Frameworks
    1. Object-Oriented Programming and Frameworks
    2. Inversion of control
    3. Dependency Injection
  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 Components
    4. OSGi
  8. Web Services
    1. XML, XML-Schema
    2. SOAP, RPC, Rest
    3. WSDL
    4. UDDI
  9. Service Components
    1. Service Oriented Architecture
    2. Microservices
    3. Flow Based Programming
  10. Scaling
    1. Map/Reduce
    2. CUDA Architecture
  11. Web Frameworks and Applications
    1. Asp.Net
    2. AJAX
    3. jQuery
    4. Symfony
    5. HTML 5
  12. Scripting
    1. Perl, Python, JavaScript, PHP, Ruby


Lecture Notes

Date Lecture Notes
22/02/2016 Motivation of the course Introduction
23/02/2016 Names, Sopes, Bindings name-scopes-binding.ppt
26/02/2016 Garbage Collection gcoverview.pptgctechniques.ppt
29/02/2016 Scope Rules: static and dynamic name-scopes-binding.ppt
1/03/2016 Lambda, Delegates, Closures
2/03/2016 Polymorphism polymorphism.ppt
7/03/2016 Recursive Descent Parsing Parsing
8/03/2016 Iterators generators.ppt
11/03/2016 Generators generators.ppt
14/03/2016 Generic Programming genericprogramming.ppt
15/03/2016 C++ Template Metaprogramming templatemetaprogramming.pptx
18/03/2016 Introduction to COM com_fundamentals1.ppt
21/03/2016 Introduction to COM com_fundamentals1.pdf
22/03/2016 Aspect Oriented Programming AspectJ Tutorial
8/04/2016 Midterm correction
11/04/2016 Web Services webservices.pdf
12/04/2016 Web Services: demo in Visual Studio
15/04/2016 Dynamic Web Pages, ASP.NET, Web Forms ASP.NET
18/4/2016 AJAX, Json AJAX Overview, JSON
19/4/2016 Map Reduce Map Reduce & Pig & Spark
22/4/2016 Symfony Introduction to Symfony
26/4/2016 Symfony Introduction to Symfony
2/5/2016 Node.js node.js explained
3/5/2016 Node Tutorial Building a ToDo list
6/5/2016 Canceled because of strike Javascipt Language JavaScript
09/5/2016 Correction to MidTerm
10/05/2016 nodejs, jQuery jQuery
13/05/2016 Asynchronous IO, Chat Room Implementation
16/05/2016 React React Tutorial
20/05/2016 Software Testing Software Testing
23/05/2016 JavaScript Language The JavaScript Language
24/05/2016 JavaScript Object Model JavaSCript OM
Common Language Runtime CLI+CLR.pdf,inside_clr.pptx
Introduction to C# IntroToC#
Parametric Polymorphism parametricpolymorphism.ppt
Standard Template Library STL.ppt
Perpectives Web 2.0

Text books

Similar Courses

Additional Readings

Previous Editions

magistraleinformatica/pa/start.1487577245.txt.gz · Ultima modifica: 20/02/2017 alle 07:54 (6 anni fa) da Giuseppe Attardi