| | | corso | | | |
Programmazione avanzata
Codice: | AA033 | Crediti: | 12 | Semestre: | 1 | Sigla: | PA | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Prerequisiti
conoscenza ed esperienza di programmazione in un linguaggio a oggetti (Java, C++)
Obiettivi di apprendimento
L'evoluzione dei sistemi software verso il Web Computing coinvolge una varietà di tecniche e strumenti articolati e complessi, dalla programmazione a oggetti, alla programmazione a componenti, alla programmazione di Web Services. Per poter sfruttare a pieno le potenzialità di queste tecniche, occorre avere una comprensione approfondita della loro struttura e del loro funzionamento.
Conoscenze. Al termine del corso lo studente avrà approfondito la struttura dei runtime dei linguaggi di programmazione, incluse le librerie standard. Conoscerà tecniche di programmazione che hanno un ruolo sempre più importanti, quali la meta-programmazione, la programmazione riflessiva, la programmazione AOP, la programmazione generativa. Conoscerà inoltre il funzionamento dei principali elementi di un runtime quali il JIT, il garbage collector e i thread, sapendo come questi influiscano sulle performace di un programma. La serializzazione di oggetti e XML saranno affrontati con l'obiettivo di comprendere l'infrastruttura dei Web Services.
Capacità. Il corso richiede la realizzazione individuale di un meta-programma che generi un qualche programma, come ad esempio un serializzatore di strutture. Lo studente può quindi approfondire le varie tecniche illustrate durante il corso scrivendo codice in modo più coscienzioso e consapevole, utilizzando in modo appropriato i vari strumenti visti a lezione.
Descrizione
Il corso presenta i modelli di esecuzione, le tecniche e gli strumenti di programmazione avanzati. Si pone particolare attenzione al supporto necessario per il funzionamento di questi strumenti, in modo che lo studente abbia una visione chiara delle conseguenze che le scelte di design possono comportare a tutti i livelli del sistema.
Il corso è tra i fondamentali della Laurea Specialistica in Tecnologie Informatiche.
English Description
Software systems are evolving towards Web Computing, which involves a variety of techniques from object-oriented programming to component programming and Web Serivices.
The course presents advanced programming techniques, such as templates, generic programming, object-oriented design, design patterns, generative programming and large-scale software design.
Programma
Rassegna concetti di base di LP
- Syntax (Regular Expressions, Context Free Grammars)
- Scope
- Parameter Passing
- Stack, Heap
- Runtime
- Type Systems (System F, Kind)
RunTime
- Memory Management
- Execution Engine
- Verification
- Interoperability
- Link/Load
- Thread
- Inheritance, Polymorphism, Virtual Functions, Overloading
- JIT
- Delegates, Closures
Generic Programming
- C++ templates
- Java Generics
- Generics C#
Class Libraries and Frameworks
- .NET Framework Class Library
- Java Class Library
Generative Programming
- MetaProgramming
- Reflection
- Template C++
- Aspect Oriented Programming, Subject Oriented Programming
- Intentional Programming
- Generator
s
Interoperability
- socke
t
- linguaggio: CORBA/IDL
- oggetti: COM+
Componenti
- COM
- JavaBeans
- .NET (Assembly, Reflection, Interfaces, Attributes)
Web Services
- XML, XML-Schema
- SOAP, RPC, Rest
- WSDL
- UDD
I
Scripting
- Perl, Python, Jscript, PHP, Guile, Rebol
Bibliografia
- Programming Language Pragmatics, Michael L. Scott, Morgan-Kaufmann, 2000.
- Shared Source CLI Essentials, David Stutz, Geoff Shilling, Ted Neward, ÒReilly, 2003.
- Generative Programming: Methods, Tools, and Applications, Krzysztof Czarnecki, Ulrich Eisenecker, Addison-Wesley, 2000.
- Applied Microsoft .NET Framework Programming, Jeffrey Richter, Microsoft Press, 2002.
Modalità di esame
Prova intermedia, Term paper finale e prova orale