Questa è una vecchia versione del documento!
Indice
Advanced Programming
Teacher: Giuseppe Attardi, Room: 292 DE, Office Hours: Monday, 15:00
Teaching Assistant: Ioanna Miliou
Master (Laurea Magistrale): Informatics.
Schedule | ||
---|---|---|
Day | Hour | Room |
Monday | 11-13 | N1, Polo Fibonacci |
Tuesday | 9-11 | B, Polo Fibonacci |
Friday | 11-13 | L1, Polo Fibonacci |
Piazza
The Piazza Community for this course. Follow instructions to enroll.
Tests and Exams
Midterm Paper: deadline 5/4/2016.
Final Term (revised): deadline 24/6/2016.
Final Term, deadline July 25th.
Final Term, deadline 13/9/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, 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 Frameworks
- Object-Oriented Programming and Frameworks
- Inversion of control
- Dependency Injection
- 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 Components
- OSGi
- Web Services
- XML, XML-Schema
- SOAP, RPC, Rest
- WSDL
- UDDI
- Service Components
- Service Oriented Architecture
- Microservices
- Flow Based Programming
- Scaling
- Map/Reduce
- CUDA Architecture
- Web Frameworks and Applications
- Asp.Net
- AJAX
- jQuery
- Symfony
- HTML 5
- Scripting
- Perl, Python, JavaScript, PHP, Ruby
Lecture Notes
Date | Lecture | Notes |
---|---|---|
22/02/2016 | Motivation of the course | Introduction |
23/02/2016 | Names, Sopes, Bindings | name-scopes-binding.ppt |
26/02/2016 | Garbage Collection | gcoverview.pptgctechniques.ppt |
29/02/2016 | Scope Rules: static and dynamic | name-scopes-binding.ppt |
1/03/2016 | Lambda, Delegates, Closures | |
2/03/2016 | Polymorphism | polymorphism.ppt |
7/03/2016 | Recursive Descent Parsing | Parsing |
8/03/2016 | Iterators | generators.ppt |
11/03/2016 | Generators | generators.ppt |
14/03/2016 | Generic Programming | genericprogramming.ppt |
15/03/2016 | C++ Template Metaprogramming | templatemetaprogramming.pptx |
18/03/2016 | Introduction to COM | com_fundamentals1.ppt |
21/03/2016 | Introduction to COM | com_fundamentals1.pdf |
22/03/2016 | Aspect Oriented Programming | AspectJ Tutorial |
8/04/2016 | Midterm correction | |
11/04/2016 | Web Services | webservices.pdf |
12/04/2016 | Web Services: demo in Visual Studio | |
15/04/2016 | Dynamic Web Pages, ASP.NET, Web Forms | ASP.NET |
18/4/2016 | AJAX, Json | AJAX Overview, JSON |
19/4/2016 | Map Reduce | Map Reduce & Pig & Spark |
22/4/2016 | Symfony | Introduction to Symfony |
26/4/2016 | Symfony | Introduction to Symfony |
2/5/2016 | Node.js | node.js explained |
3/5/2016 | Node Tutorial | Building a ToDo list |
6/5/2016 | Canceled because of strike | Javascipt Language JavaScript |
09/5/2016 | Correction to MidTerm | |
10/05/2016 | nodejs, jQuery | jQuery |
13/05/2016 | Asynchronous IO, Socket.io | Chat Room Implementation |
16/05/2016 | React | React Tutorial |
20/05/2016 | Software Testing | Software Testing |
23/05/2016 | JavaScript Language | The JavaScript Language |
24/05/2016 | JavaScript Object Model | JavaSCript OM |
Common Language Runtime | CLI+CLR.pdf,inside_clr.pptx | |
Introduction to C# | IntroToC# | |
LINQ | LINQ | |
Parametric Polymorphism | parametricpolymorphism.ppt | |
Standard Template Library | STL.ppt | |
Perpectives | Web 2.0 |
Text books
Programming Language Pragmatics, third ed., Michael L. Scott, Morgan-Kaufmann, 2009. Google Books preview.
Software Components: Beyond Object-Oriented Programming, Clemens Szyperski, Dominik Gruntz, Stephan Murer, Addison-Wesley, 2002.
Similar Courses
- Advanced Programming Techniques, Brian Kernigham (President's Award for Outstanding Teaching), Princeton University.
Additional Readings
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.