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 | A1, Polo Fibonacci |
Wednesday | 11-13 | A1, Polo Fibonacci |
Friday | 14-16 | A1, Polo Fibonacci |
Tests and Exams
Midterm Test: Mid Term Assignment, deadline 16/11/2014.
Final Test: Final Term Assignment (with corrections), deadline 1/2/2015.
Final Test: Final Term Assignment, deadline 20/2/2015.
Final Test: Final Term Assignment, deadline 24/6/2015.
Final Test: Final Term Assignment (with corrections), deadline 7/7/2015.
Final Test: Final Term Assignment, deadline 23/7/2015.
Final Test: Final Term Assignment, deadline 11/9/2015.
Appello Straordinario novembre: il test verrà inviato via mail il 2/11/2015 agli studenti iscritti.
Final Test: Final Term Assignment, deadline 5/2/2016.
Final Test: Final Term Assignment, deadline 19/2/2016.
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 |
---|---|---|
22/09/2014 | Motivation of the course | Introduction |
24/09/2014 | Grammars and Parsing | Parsing |
26/09/2014 | LL(1) grammars | |
29/09/2014 | Recursive Descent Parsing | |
01/10/2014 | Regular languages | |
03/10/2014 | Names, Sopes, Bindings | name-scopes-binding.ppt |
06/10/2014 | Storage Management | malloc |
08/10/2014 | Garbage Collection | gcoverview.ppt |
10/10/2014 | Incremental, Generational Garbage Collection | gctechniques2.ppt |
13/10/2014 | Scope Rules: static and dynamic | |
15/10/2014 | Parameter Passing | parameterpassing.ppt |
17/10/2014 | Sospesa per sciopero | |
20/10/2014 | Compilers and code generation | buildingrunnableprogram.pdf |
22/10/2014 | Static and Dynamic Linking | buildingrunnableprogram.pdf |
24/10/2014 | Introduction to COM | com_fundamentals1.pdf |
27/10/2014 | Introduction to COM | com_fundamentals1.pdf |
29/10/2014 | Web Services | webservices.pdf |
31/10/2014 | Web Services | webservices.pdf |
10/11/2014 | Common Language Runtime | CLI+CLR.pdf,inside_clr.pptx |
12/11/2014 | sospensione didattica | |
14/11/2014 | Introduction to C# | IntroToC# |
17/11/2014 | CLR, CLI and JIT | |
19/11/2014 | LINQ | LINQ |
21/11/2014 | Polymorphism | Types.ppt |
24/11/2014 | Parametric Polymorphism | parametricpolymorphism.ppt |
26/11/2014 | Dynamic Web Pages, ASP.NET, Web Forms | ASP.NET |
28/11/2014 | Correction MidTerm | |
1/12/2014 | Generators | generators.pdf |
3/12/2014 | Generic Programming | polymorphism.ppt |
5/12/2014 | C++ Template Metaprogramming | templatemetaprogramming.pdf |
Standard Template Library | STL.ppt | |
10/12/2104 | AJAX, Json | AJAX Overview, JSON |
12/12/2014 | Sospesa per sciopero | |
15/12/2014 | nodejs, jQuery | jQuery, Javascript Practice,Javascipt Language |
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.