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 |
Tuesday | 11-13 | C, Polo Fibonacci |
Wednesday | 14-16 | B1, Polo Fibonacci |
Friday | 9-11 | A, Polo Fibonacci |
Tests and Exams
Midterm Test: Mid Term, deadline 21/11/2011.
Final Test: Final Term, deadline 12/02/2012.
Final Test: Final Term, deadline 21/07/2012.
Final Test: Final Term, deadline 11/09/2012.
Warning
The text of the project has been posted illegally to the site Freelancer, violating both the rules of the test as well as copyright laws. As a consequence all submissions will be carefully scrutinized for authenticating their author and it is possible that the whole test will be canceled. Any further attempts to illegally post the project in similar ways will be monitored.
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 |
---|---|---|
13/9/2011 | Programming Preliminaries | |
14/9/2011 | Programming Preliminaries | |
16/9/2011 | Programming Preliminaries | |
20/9/2011 | Programming Preliminaries | |
21/9/2011 | Programming Preliminaries | |
23/9/2011 | Programming Preliminaries | |
27/9/2011 | Introduction to the course | Intro.ppt |
28/9/2011 | Parsing | Parsing.ppt |
30/9/2011 | LL(1) Languages | |
4/10/2011 | Recursive Descent Parsing | |
5/10/2011 | Regular Languages and Expressions | |
7/10/2011 | Names, Scopes, Binding | name-scopes-binding.ppt |
11/10/2011 | Memory management | malloc.pdf |
11/10/2011 | Garbage Collection | gcoverview.ppt |
12/10/2011 | Scoping: static, lexical, dynamic | |
14/10/2011 | Parameter Passing | parameterpassing.pdf |
Static and Dynamic Linking | buildingrunnableprogram.pdf | |
19/10/2011 | Introduction to COM | COM Fundamentals |
Types | types.ppt | |
21/10/2011 | Web Services | Web Services |
25/10/2011 | The Java Virtual Machine | JVM |
26/10/2011 | CLI and the Common Language Runtime | CLR |
28/10/2011 | Delegates, Lambdas and Closures in CLR | |
8/11/2011 | Generic Programming | polymorphism.ppt |
9/11/2011 | Parametric Polymorphism | |
11/11/2011 | Bounded Parametric Polymorphism | Generative Programming |
15/11/2011 | C++ Template Metaprogramming | templatemetaprogramming.pdf |
16/11/2011 | Generators | Generators |
18/11/2011 | Apect Oriented Programming | AspectJ Tutorial |
22/11/2011 | Correction to Mid Term | |
23/11/2011 | Introduction to C# | Introduction to C# |
29/11/2011 | LINQ | Introduction to LINQ |
30/11/2011 | Dynamic Web Pages | ASP .NET |
2/12/2011 | AJAX, Json | Ajax Overview Json |
6/12/2011 | jQuery | Introduction to jQuery |
7/12/2011 | HTML 5 | HTML 5 |
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.