Questa è una vecchia versione del documento!
Indice
Advanced Programming
Teacher: Giuseppe Attardi Question Time: Wednesday, 11:00 AM
Assistant: Cristian Dittamo
Master (Laurea Magistrale): Informatics and Networking and Informatics.
Schedule | ||
---|---|---|
Day | Hour | Room |
Tuesday | 11-13 | C, Polo Fibonacci |
Wednesday | 14-16 | B, Polo Fibonacci |
Friday | 9-11 | A, Polo Fibonacci |
Tests and Exams
Final Test: Final Term, deadline 28/2/2011.
Midterm Test: Revised version, deadline 6/12/2010.
Summer Session Final Test: available from 16/6/2011 to 30/6/2011. Send mail to attardi@di.unipi.it to receive it: deadline one month from receipt.
Fall Session Final Test: Final Term: deadline 20/9/2011.
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
- Programming Language Foundations
- Syntax, Parsing, Abstract Syntax Tree, Parser Generators
- Names, Scope, Binding
- Parameter Passing
- Static and Dynamic Allocation: Stack, Heap
- Types, Inheritance, Polymorphism, Virtual Functions, Overloading
- Delegates, Closures
- Exception Handling
- Run-Time Systems
- Virtual Execution Environment
- Memory Management
- Thread Management
- Exception Handling
- Security
- Debugging Support
- AOT and JIT Compilation
- Dynamic Link/Load
- Reflection
- Examples
- JVM
- CLR
- Verification
- Language Interoperability
- Generic Programming
- C++ templates
- Java Generics
- C# Generics
- Bounded Polymorphism
- Class Libraries and Frameworks
- Object-Oriented Programming and Frameworks
- Use of polymorphism in framework design
- Extensibility, adaptability, performance of OOP
- Inversion of control
- .NET Framework Class Library
- Java Class Library
- Generative Programming
- MetaProgramming
- Reflection
- Template C++
- Aspect Oriented Programming
- Runtime code generation: LINQ
- Generators
- Program optimization and transformation
- Partial evaluation
- Interoperability
- Process level: interprocess communication
- Language level: CORBA/IDL
- Object level: DCOM
- Component Based Programming
- COM
- JavaBeans
- .NET (Assembly, Reflection, Interfaces, Attributes)
- OSGi
- Web Services
- XML, XML-Schema
- SOAP, RPC, Rest
- WSDL
- UDDI
- Web Frameworks and Applications
- Asp.Net
- ADO.Net
- J2EE
- Java Server Faces
- AJAX: XHR, YUI, GWT
- Mashup and Service Oriented Architecture
- Scripting
- Perl, Python, JavaScript, PHP, Ruby, Guile
Lecture Notes
Date | Lecture | Notes |
---|---|---|
19/10/2010 | Introduction to the course | Intro.ppt |
20/10/2010 | Parsing | Parsing.ppt |
22/10/2010 | LL(1) Languages | |
26/10/2010 | Recursive Descent Parsing | |
27/10/2010 | Regular Languages and Expressions | |
29/10/2010 | Bindings and Object Lifetime | |
2/11/2010 | Names, Scopes, Binding | name-scopes-binding.ppt |
5/11/2010 | Parameter Passing | parameterpassing.pdf |
9/11/2010 | Memory management | malloc.pdf |
10/11/2010 | Garbage Collection | gcoverview.ppt |
12/11/2010 | Visita alberi a memoria costante | |
16/11/2010 | Static Linking | buildingrunnableprogram.pdf |
17/11/2010 | Dynamic Linking | buildingrunnableprogram.pdf |
19/11/2010 | Introduction to COM | |
23/11/2010 | sospensione didattica | |
24/11/2010 | sospesa per occupazione | |
26/11/2010 | sospesa per occupazione | |
30/11/2010 | Sospensione didattica | |
1/12/2010 | Sospesa per occupazione | |
3/12/2010 | Introduction to COM (2) | |
7/12/2010 | Types | types.ppt |
9/12/2010 | Late Binding | |
14/12/2010 | Polymorphism | polymorphism.ppt |
15/12/2010 | Parametric Polymorphism | |
17/12/2010 | Bounded Parametric Polymorphism | |
21/12/2010 | C++ Template Metaprogramming | templatemetaprogramming.pdf |
Text books
Programming Language Pragmatics, third ed., Michael L. Scott, Morgan-Kaufmann, 2009. Google Books preview.
Generative Programming: Methods, Tools, and Applications, Krzysztof Czarnecki, Ulrich Eisenecker, Addison-Wesley, 2000.
Object Thinking, David West, Microsoft Press, 2004.