Strumenti Utente

Strumenti Sito


Questa è una vecchia versione del documento!

Advanced Programming

Teacher: Giuseppe Attardi, Room: 292 DE, Office Hours: Monday, 15:00

Teaching Assistant: Andrea Madotto

Master (Laurea Magistrale): Informatics.

Day Hour Room
Monday 11-13 C1, Polo Fibonacci
Tuesday 9-11 C1, Polo Fibonacci
Friday 11-13 N1, Polo Fibonacci


The Piazza Community for this course. Follow instructions to enroll.

Tests and Exams

Midterm Assignment (updated 8/4/17: deadline 15/05/2017.

Final Term: Assignment, deadline 26/6/2017.

Final Term: Assignment}, deadline 20/7/2017. Final Term: published on 6/7/20017, deadline 26/7/2017. ====== 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 ^ | 21/02/2017 | Motivation of the course | {{:magistraleinformatica:pa:intro.ppt|Introduction |

22/02/2017 Names, Bindings name-scopes-binding.ppt
24/02/2017 Bindings and Scopes name-scopes-binding.ppt
27/02/2017 Garbage Collection gcoverview.pptgctechniques.ppt
28/02/2017 Scope Rules: static and dynamic name-scopes-binding.ppt
03/03/2017 Lambda, Delegates, Closures name-scopes-binding.ppt
06/03/2017 Dynamic Scope. Parameter Passing parameterpassing.ppt
07/03/2017 Polymorphism polymorphism.ppt
10/03/2017 Inheritance and Polymorphism inheritancepolymorphism.ppt
14/03/2017 C++ Template Metaprogramming templatemetaprogramming.pptx
Generic Programming genericprogramming.ppt
17/03/2017 Parametric Polymorphism genericprogramming.ppt
20/03/2017 Iterators and Generators generators.ppt
Recursive Descent Parsing Parsing
21/03/2017 Introduction to COM com_fundamentals1.ppt
24/03/2017 Web Services webservices.ppt
27/03/2017 Web Services: Visual Studio demo
28/03/2017 Dynamic Web Pages, ASP.NET, Web FormsASP.NET
31/03/2017 Canceled because of strike
21/04/2017 Midterm correction Midterm Solution
24/03/2017 Aspect Oriented Programming AspectJ Tutorial
28/03/2017 JavaScript Javascipt Language
02/05/2017 AJAX, Json AJAX Overview, JSON
05/05/2017 jQuery jQuery
08/05/2017 Node.js node.js explained
09/05/2017 Node.js Tutorial Building a ToDo list Code
12/05/2017 React React Tutorial
15/05/2017 Asynchronous IO, and React Chat Room Implementation
Symfony Introduction to Symfony
Symfony Introduction to Symfony
Map Reduce Map Reduce & Pig & Spark
Software Testing Software Testing
JavaScript Object Model JavaSCript OM
Common Language Runtime CLI+CLR.pdf,inside_clr.pptx
Introduction to C# IntroToC#
Standard Template Library STL.ppt
Perpectives Web 2.0

Text books

Similar Courses

Additional Readings

Previous Editions

magistraleinformatica/pa/start.1498762116.txt.gz · Ultima modifica: 29/06/2017 alle 18:48 (6 anni fa) da Giuseppe Attardi