Questa è una vecchia versione del documento!
Indice
Advanced Programming
Teacher: Giuseppe Attardi Question Time: Wednesday, 11:00 AM
Master (Laurea Magistrale): Informatics.
Schedule | ||
---|---|---|
Day | Hour | Room |
Monday | 16-18 | B, Polo Fibonacci |
Wednesday | 11-13 | A1, Polo Fibonacci |
Friday | 14-16 | L1, Polo Fibonacci |
Tests and Exams
Midterm Test: Mid Term, deadline 20/11/2013.
Final Test: Final Term (versione con esempio XML aggiornato), consegna entro 14/2/2014.
Special session for working students: deadline 31/3/2014.
Final Test: Final Term, deadline 9/6/2014
Final Test: Final Term, deadline 29/6/2014
Final Test: Final Term, deadline 24/7/2014
Final Test: Final Term, deadline 12/9/2014
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, jQuery, GWT
- Mashup and Service Oriented Architecture
- HTML 5
- Scripting
- Perl, Python, JavaScript, PHP, Ruby
Lecture Notes
Date | Lecture | Notes |
---|---|---|
23/09/2013 | Motivation of the course | Introduction |
25/09/2013 | Introduction and objectives | |
27/09/2013 | Grammars and Parsing | Parsing |
30/09/2013 | LL(1) grammars, Recursive Descent Parsing | |
2/10/2013 | Regular languages | |
4/10/2013 | Names, Sopes, Bindings | name-scopes-binding.ppt |
7/10/2013 | Storage Management | malloc |
9/10/2013 | Storage Management | malloc |
11/10/2013 | Garbage Collection | gcoverview.ppt |
14/10/2013 | Incremental, Generational Garbage Collection | gctechniques2.ppt |
16/10/2013 | Scope Rules: static and dynamic | |
18/10/2013 | Parameter Passing | parameterpassing.ppt |
21/10/2013 | Parameter Passing | parameterpassing.ppt |
23/10/2130 | Static and Dynamic Linking | buildingrunnableprogram.pdf |
25/10/2013 | Introduction to C# | IntroToC# |
28/10/2013 | Introduction to COM | com_fundamentals1.pdf |
11/11/2013 | Introduction to COM | com_fundamentals1.pdf |
13/11/2013 | Common Language Runtime | CLI+CLR.pdf,inside_clr.pptx |
15/11/2013 | Web Services | webservices.pdf |
18/11/2013 | Web Services | webservices.pdf |
20/11/2013 | Dynamic Web Pages | asp.net.pdf |
22/11/2013 | Correction MidTerm | |
25/11/2013 | Generators | generators.pdf |
27/11/2013 | Generic Programming | polymorphism.ppt |
29/11/2013 | Parametric Polymorphism | parametricpolymorphism.ppt |
Bounded Parametric Polymorphism | ||
02/12/2013 | C++ Template Metaprogramming | templatemetaprogramming.pdf |
04/12/2013 | Standard Template Library | STL.ppt |
Types | Types.ppt | |
06/12/2013 | LINQ | LINQ |
09/12/2013 | AJAX, Json | AJAX Overview, JSON |
11/12/2013 | nodejs, jQuery | jQuery, Javascript Practice,Javascipt Language |
13/12/2013 | Symfony2 | Introduction to Symfony2 |
Perpectives | Web 2.0 |
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.
jQuery in Action, B. Bibeault, Y. Katz, Manning, 2010.