Advanced Programming

Teacher: Giuseppe Attardi

Assistant: Haoyuan Li

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

Schedule
Day Hour Room
Wednesday 9-11 B, Polo Fibonacci
Thursday 14-16 E, Polo Fibonacci
Friday 9-11 A, Polo Fibonacci

Announcement

The class hours of December 16th and 17th, will be dedicated to programming practice excercises in preparation for the Final Term. The schedule is as follows:

Day Hour Room
Wednesday Dec. 16 9-11 Room O
Thursday Dec. 17 14-16 Room R1

Objectives

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.

Syllabus

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

Tests

Date Deadline Test
23/12/2009 5/2/2010 Final Term
07/11/2009 14/11/2009 Mid Term

Lecture Notes

Date Lecture Notes
23/09/2009 Introduction to the course Intro.ppt
24/09/2009 Presentation of the course syllabus
25/09/2009 Syntax: Context-free Grammars Parsing.ppt
1/10/2009 Ambiguity, LL(1) Grammars, Regular Grammars
2/10/2009 Parsing: recursive descent, scanner
7/10/2009 Binding. Object Lifetime Names, scopes, bindings
8/10/2009 Memory Allocation: static, stack, heap
9/10/2009 Malloc and free Malloc
14/10/2009 Garbage Collection GC Overview
15/10/2009 Traversing trees without extra memory
16/10/2009 Building a runnable program BuildingRunnableProgram.pdf
21/10/2009 Parameter Passing ParameterPassing.pdf
22/10/2009 Linking
23/10/2009 Dynamic Linking
28/10/2009 COM Architecture COM Fundamentals(1)
29/10/2009 COM Architecture COM FUndamentals (2)
30/10/2009 Virtual Machines JVM.pdf
5/11/2009 Generic Programming Generic Programming
6/11/2009 Generic Programming Generic Programming
11/11/2009 Common Language Runtime CLI+CLR.pdf
12/11/2009 .Net Overview DotNet.pdf
13/11/2009 Web Services WebServices.pdf
18/11/2009 Building Web Services WebServices.pdf
19/11/2009 Web Application Frameworks Architecture ASP .NET
20/11/2009 Event Handling in Web Applications ASP .NET
25/11/2009 Generative Programming
26/11/2009 C++ Template Metaprogramming. Aspect Oriented Programming Template Metaprogramming, Aspect-Oriented Programming with AspectJ
27/11/2009 Reflection
2/12/2009 Reflection. MidTerm Solution
3/12/2009 Generators, Linq Generators and Linq
4/12/2009 Scripting Computer Language Benchmark
9/12/2009 ADO.Net
10/12/2009 AJAX, Jason, Rest
11/12/2009 YUI
16/12/2009 GWT
17/12/2009 Mashup and SOA
18/12/2009 Future Directions

Text books

Previous Editions

 
magistraleinformatica/pa/start.txt · Ultima modifica: 2009/12/23 12:39 da Giuseppe Attardi
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki