Strumenti Utente

Strumenti Sito


magistraleinformatica:pa:start

Advanced Programming

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

Teaching Assistant: TBD

Master (Laurea Magistrale): Informatics.

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

Piazza

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

Tests and Exams

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, 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 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
Aspect Oriented Programming AspectJ Tutorial
Midterm correction
AJAX, Json AJAX Overview, JSON
Map Reduce Map Reduce & Pig & Spark
Symfony Introduction to Symfony
Symfony Introduction to Symfony
Node.js node.js explained
Node Tutorial Building a ToDo list
Canceled because of strike Javascipt Language JavaScript
Correction to MidTerm
nodejs, jQuery jQuery
Asynchronous IO, Socket.io Chat Room Implementation
React React Tutorial
Software Testing Software Testing
JavaScript Language The JavaScript Language
JavaScript Object Model JavaSCript OM
Common Language Runtime CLI+CLR.pdf,inside_clr.pptx
Introduction to C# IntroToC#
LINQ LINQ
Standard Template Library STL.ppt
Perpectives Web 2.0

Text books

Similar Courses

Additional Readings

Previous Editions

magistraleinformatica/pa/start.txt · Ultima modifica: 28/03/2017 alle 08:55 (2 giorni fa) da Giuseppe Attardi