Strumenti Utente

Strumenti Sito


Advanced Programming

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

Teaching Assistant: Andrea Madotto

Master (Laurea Magistrale): Informatics.

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


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

Tests and Exams

Midterm Assignment (updated 8/4/17: deadline 15/05/2017.

Final Term: Assignment, deadline 26/6/2017.

Final Term: Assignment, deadline 20/7/2017.

Final Term: Assignment, deadline 26/7/2017.

Final Term: Assignment deadline 28/9/2017.

Final Term: Assignement, deadline 31/1/2018.

Final Term: upon request on 26/1/2018, deadline 16/2/2018.


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
21/02/2017 Motivation of the course Introduction
22/02/2017 Names, Bindings name-scopes-binding.ppt
24/02/2017 Bindings and Scopes name-scopes-binding.ppt
27/02/2017 Garbage Collection gcoverview.pptgctechniques.ppt
28/02/2017 Scope Rules: static and dynamic name-scopes-binding.ppt
03/03/2017 Lambda, Delegates, Closures name-scopes-binding.ppt
06/03/2017 Dynamic Scope. Parameter Passing parameterpassing.ppt
07/03/2017 Polymorphism polymorphism.ppt
10/03/2017 Inheritance and Polymorphism inheritancepolymorphism.ppt
14/03/2017 C++ Template Metaprogramming templatemetaprogramming.pptx
Generic Programming genericprogramming.ppt
17/03/2017 Parametric Polymorphism genericprogramming.ppt
20/03/2017 Iterators and Generators generators.ppt
Recursive Descent Parsing Parsing
21/03/2017 Introduction to COM com_fundamentals1.ppt
24/03/2017 Web Services webservices.ppt
27/03/2017 Web Services: Visual Studio demo
28/03/2017 Dynamic Web Pages, ASP.NET, Web FormsASP.NET
31/03/2017 Canceled because of strike
21/04/2017 Midterm correction Midterm Solution
24/03/2017 Aspect Oriented Programming AspectJ Tutorial
28/03/2017 JavaScript Javascipt Language
02/05/2017 AJAX, Json AJAX Overview, JSON
05/05/2017 jQuery jQuery
08/05/2017 Node.js node.js explained
09/05/2017 Node.js Tutorial Building a ToDo list Code
12/05/2017 React React Tutorial
15/05/2017 Asynchronous IO, and React Chat Room Implementation
Symfony Introduction to Symfony
Symfony Introduction to Symfony
Map Reduce Map Reduce & Pig & Spark
Software Testing Software Testing
JavaScript Object Model JavaSCript OM
Common Language Runtime CLI+CLR.pdf,inside_clr.pptx
Introduction to C# IntroToC#
Standard Template Library STL.ppt
Perpectives Web 2.0

Text books

Similar Courses

Additional Readings

Previous Editions

magistraleinformatica/pa/start.txt · Ultima modifica: 01/02/2018 alle 11:50 (6 anni fa) da Giuseppe Attardi