Questa è una vecchia versione del documento!
Indice
Advanced Programming
Teacher: Giuseppe Attardi Question Time: Wednesday, 11:00 AM
Assistant: Antonio Valerio Miceli Barone
Master (Laurea Magistrale): Informatics and Networking and Informatics.
Schedule | ||
---|---|---|
Day | Hour | Room |
Monday | 16-18 | C1, Polo Fibonacci |
Wednesday | 11-13 | C1, Polo Fibonacci |
Friday | 14-16 | C1, Polo Fibonacci |
Tests and Exams
Midterm Test: Mid Term, deadline 13/11/2012.
Final Term: Final Term (mispell corrections), deadline 28/1/2013
Final Term: Final Term, deadline: 15/2/2013
Final Term: Final Term, deadline 1/7/2013
Final Term: Final Term, deadline on 22/7/2013
Final Term: Final Term, deadline on 23/9/2013
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
- HTML 5
- Scripting
- Perl, Python, JavaScript, PHP, Ruby
Lecture Notes
Date | Lecture | Notes |
---|---|---|
19/9/2012 | Programming Preliminaries | precorso.pdf |
21/9/2012 | Programming Preliminaries | |
24/9/2012 | Programming Preliminaries | |
26/9/2012 | Programming Preliminaries | |
28/9/2012 | Programming Preliminaries | |
1/10/2012 | Programming Preliminaries, Visitor Pattern | |
3/10/2012 | Introduction to the course | Introduction |
5/10/2012 | Grammars and Parsing | Parsing |
8/10/2012 | LL(1) grammars, Recursive Descent Parsing | |
10/10/2012 | Regular languages | |
12/10/2012 | Names, Sopes, Bindings | name-scopes-binding.ppt |
15/10/2012 | Scope Rules: static and dynamic | |
17/10/2012 | Storage Management | malloc |
19/10/2012 | Garbage Collection | gcoverview.ppt |
22/10/2012 | Parameter Passing | parameterpassing.pdf |
24/10/2012 | Static and Dynamic Linking | buildingrunnableprogram.pdf |
26/10/2012 | Introduction to COM | com_fundamentals1.pdf |
29/10/2012 | Web Services | webservices.pdf |
31/10/2012 | Dynamic Web Pages | asp.net.pdf |
7/11/2012 | Generic Programming | polymorphism.ppt |
9/11/2012 | Parametric Polymorphism | parametricpolymorphism.ppt |
12/12/2012 | Bounded Parametric Polymorphism | |
14/11/2012 | Correction MidTerm | |
16/11/2012 | C++ Template Metaprogramming | templatemetaprogramming.pdf |
19/11/2012 | Standard Template Library | STL.ppt |
21/11/2012 | Generators | generators.pdf |
23/11/2012 | Types | Types.ppt |
26/11/2012 | Introduction to C# | IntroToC#.ppt |
28/11/2012 | Common Language Runtime | CLI+CLR.pdf |
30/11/2012 | LINQ | linq.ppt |
3/12/2012 | AJAX, Json | ajaxoverview.ppt, json.ppt |
5/12/2012 | jQuery | jquery.ppt |
7/11/2012 | HTML 5 | Advanced HTML: HTML 5 |
10/12/2012 | 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.