Advanced Programming (Programmazione Avanzata)
Fall Semester 2009/2010
|
Language is an instrument of human reason,
not merely a medium for the expression of thought.
G. Boole, An Investigation of the Laws of Thought, 1854
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 the structure and capabilities of these
techniques 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 contribuites to prepare professionals for the role of software architect.
Schedule
Day
|
Time
|
Room
|
Wednesday
|
9-11
|
B
|
Thursday
|
2-4 pm
|
E
|
Friday
|
9-11
|
B
|
Syllabus
Programming Language Foundations
- Syntax, Parsing, Abstract Syntax Tree, Parser Generators
- Names, Scope, Binding
- Parameter Passing
- Static and Dynamic Allocaltion: 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
- Verification
- Language Interoperability
Generic Programming
- C++ templates
- Java Generics
- C# Generics
- Bounded Polymorphism
Class Libraries and Frameworks
- Object-Oriented Programming and Frameworks
- Use of polumorphism 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)
- ODGi
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
|
Material
|
Topics
|
23/09
|
Introduction
|
Introuction to the course
|
Previous Editions
Year 2002
Year 2003
Year 2004
Year 2005
Year 2006
Year 2008
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.
-

-
Shared Source CLI Essentials, David Stutz,
Geoff Shilling,
Ted Neward, O’Reilly, 2003.
Reference Material
- Refactoring
- Refactoring: Improving the Design of Existing Code, M. Fowler, K. Beck, J. Brant, W. Opdyke and Don Roberts, Addison-Wesley, 1999
- Rotor
-
Rotor Sources
- Java2C#
-
Introduction to C# for Java programmers
- J2EE
-
J2EE Tutorial
- J2EE
-
C++ Templates and Generic Programming, E. Zueff, ETH
Assessment
- Mid Term Paper: early November, one week homework
- Term Paper: at the end of the course, one month homework
Sample Term Paper Subjects
- Code generator for ASP and regular expression matcher
- Implementing a DSL for dealing with containers of persistent objects
- Protocol SOAP and server SOAP
- Code generator for searching objects in an SQL database
- Intepreter for XPath and XSLT
- Language for generating protocols
- AJAX Framework
Courses Elsewhere