Indice
Advanced Programming
Teacher: Giuseppe Attardi, Room: 292 DE, Office Hours: Monday, 15:00
Teaching Assistant: Andrea Madotto
Master (Laurea Magistrale): Informatics.
Schedule | ||
---|---|---|
Day | Hour | Room |
Monday | 11-13 | C1, Polo Fibonacci |
Tuesday | 9-11 | C1, Polo Fibonacci |
Friday | 11-13 | N1, Polo Fibonacci |
Piazza
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: Assignment, deadline 26/7/2017.
Final Term: Assignment deadline 28/9/2017.
Final Term: Assignement, deadline 31/1/2018.
Final Term: upon request on 26/1/2018, deadline 16/2/2018.
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 | 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 Forms | ASP.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, Socket.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# | |
LINQ | LINQ | |
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.