| | | 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.
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
- PAL
- Inheritance, Polymorphism, Virtual Functions, Overloading
- JIT
- Delegates, Closures
Generic Programming
- C++ templates
- Java Pizza
- 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
- Generators
Interoperability
- socket
- linguaggio: CORBA/IDL
- oggetti: COM+
Componenti
- COM
- JavaBeans
- .NET (Assembly, Reflection, Interfaces, Attributes)
Web Services
- XML, XML-Schema
- SOAP, RPC, Rest
- WSDL
- UDDI
Transaction Server (EJB, MTS)
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