This curriculum of the PhD school in Computer Science of the University of Milan focuses on the most recent and advanced development techniques and on their limitations. In particular the activated courses cover the whole software lifecycle (designing, programming, testing, debugging and development tools) providing a complete overview of the current trends in software development research area.
To complement the curriculum the interested student can attend:
Curricula Coordinators: Walter Cazzola and Sebastiano Vigna.
Scientific and Teaching Board.
Paolo Boldi, Walter Cazzola, Mattia Monga Giovanni Pighizzini, Massimo Santini, Sebastiano Vigna
In this curriculum of the PhD school in Computer Science we have activated five courses that cover the whole software development process with particular attention to programming techniques. Courses are listed sorted by time; details can be found following the links.
| Schedule | Course's Title | Lecturer |
|---|---|---|
| June 2009 | Search Engines Design and Development | Sebastiano Vigna |
| Sep. 2009 | Advanced Programming Techniques | Walter Cazzola |
| Oct. 2009 | Implementation Techniques of AOP and Reflection | Shigeru Chiba |
| Jan. 2011 | Systematic Debugging Techniques | Massimo Santini |
| Feb. 2011 | Functional Programming in a Nutshell with Haskell and F# | Microsoft |
| Jul. 2012 | An Introduction to Reflection and Context-Oriented Programming | Kim Mens, S. Gonzalez |
| Sep. 2012 | Computational Types, Collection Types and Monads | Eugenio Moggi |
| TBD | Development by Contract | Mattia Monga |
Schedule
| Day | Time | Room |
|---|---|---|
| 03 June 2009 | 10:00-12:00 | Auletta 5 |
| 03 June 2009 | 14:30-16:30 | Auletta 5 |
| 04 June 2009 | 10:00-12:00 | Auletta 6 |
| 05 June 2009 | 10:00-12:00 | Auletta 5 |
| 08 June 2009 | 14:30-16:30 | Auletta 5 |
| 09 June 2009 | 10:00-12:00 | Auletta 5 |
Lecturer
![]() | Sebastiano Vigna (Ph.D.) is currently an associate professor at the Department of Computer Science Department of the University of Milano, and a member of the Laboratory for Web Algorithmics. His research interests include web-graph compression and analysis, indexing of large document collections, high-performance parallel web crawling and automatic generation of software from conceptual models. He has written more than 70 technical papers about these research topics. |
Topics
References
Schedule
This lecture has been split in two parts: the first part introduces some basic concepts on reflection and aspect-oriented programming and is propaedeutic to Chiba's lectures in the last week of September; second part will present some advance in aspect-oriented programming research, open issues and applications.
Fist Part
| Day | Time | Room | Slides |
|---|---|---|---|
| 23 September 2009 | 10:30-12:30 | Auletta 5 | theory |
| 23 September 2009 | 14:00-16:00 | Auletta 5 | |
| 24 September 2009 | 10:30-12:30 | Auletta 5 | java |
| 24 September 2009 | 14:00-16:00 | Auletta 5 | |
| 25 September 2009 | 10:30-12:30 | Auletta 5 | AOP |
| 25 September 2009 | 14:00-16:00 | Auletta 5 |
Second Part
| Day | Time | Room | Slides |
|---|---|---|---|
| 20 January 2010 | 09:00-13:00 | Aula τ | |
| 20 January 2010 | 14:00-18:00 | Aula τ | |
| 22 January 2010 | 09:00-13:00 | Aula 5 |
Note that on Wednesday we will have a hands-on-session on aspect-oriented programming whereas on Friday the students will propose their seminars.
Lecturer
![]() | Walter Cazzola (Ph.D.) is currently an associate professor at the Department of Computer Science of the Università degli Studi di Milano, Italy and the chair of the ADAPT research group. His research interests include reflection, aspect-oriented programming, programming methodologies and languages. He is the designer of the mChaRM framework, of the @Java, [a]C#, Blueprint programming languages and he is currently involved in the designing of the neverlang general purpose compiler generator. He has written more than 70 technical papers about reflection and aspect-oriented programming. |
This lecture will present one of the most recent approached to the software development, that is, the aspect-oriented programming and software development.
Topics
Aspect Oriented Programming and Software Development
Asymmetric Approaches: AspectJ and Prose
Symmetric Approaches: HyperJ
Aspect-Oriented at Work
Open Issues and Future Perspectives
References
Schedule
| Day | Time | Room | Slides |
|---|---|---|---|
| 28 September 2009 | 9:00-13:00 | Auletta 4 | modularization |
| 29 September 2009 | 9:00-13:00 | Auletta 4 | AOP-impl |
| 30 September 2009 | 9:00-13:00 | Aula Tau | refl-impl |
Lecturer
![]() | Shigeru Chiba (Ph.D.) is currently a full professor at the Department of Mathematical and Computing Sciences of the Tokyo Institute of Technology, Japan. His main research interests concern programming language design, open compilers, meta-object protocols, reflection, and aspect-oriented programming. Chiba is the designer of OpenC++, OpenJava, and Javassist. Javassist is his most successful software, which is now a core component of Redhat/JBoss products. He has written and has served as a reviewer of a number of technical papers about computational reflection and aspect-oriented programming. |
Hands-on-session. The last day of the lecture will be partially devoted to a hands-on-session to develop an aspect-oriented framework. To deal with the hands-on-session each student should have their own laptop (the labs are busy with the grad/undergrad lectures) with JDK 1.5/1.6, Javassist and JastAddJ installed and running. Please let me know if you have problems in preparing your system.
This lecture presents implementation techniques for Aspect-Oriented Programming (AOP) and/or reflective languages. The reflection mechanism is one of the source of AOP. This lecture introduces the implementation of reflective languages as the basis of the implementation of early AOP languages.
Topics
References
The lecturers can be found here
Schedule
| Day | Time | Room |
|---|---|---|
| 01 February 2011 | 10:00-14:00 | sala riunioni 1º piano |
| 02 February 2011 | 10:00-14:00 | sala riunioni 1º piano |
| 03 February 2011 | 10:00-14:00 | sala riunioni 1º piano |
| 04 February 2011 | 10:00-14:00 | sala riunioni 1º piano |
Lecturer
![]() | Massimo Santini (Ph.D.) is currently an assistant professor at the Department of Computer Science of the University of Milano, and a member of the Laboratory for Web Algorithmics. His research interests include design and analysis of algorithms with particular regard to distributed high performance web algorithmics. He has written and has served as reviewer of several technical papers about these research topics. |
Topics
References
Schedule
| Day | Time | Room | Slides |
|---|---|---|---|
| 07 February 2011 | 9:00-13:00 | sala lauree | intro |
| 07 February 2011 | 14:30-16:30 | sala lauree | haskell 1 2 |
| 08 February 2011 | 9:00-13:00 | sala lauree | F# |
| 08 February 2011 | 14:30-16:30 | aula τ |
A hands-on-session is foreseen for the 8 of February for those that want to use their laptops (mandatory for those not enrolled at the University of Milano) you need to install F# (it works on linux as well but it is better to have visual studio 2010) and XNA 4.0.
Code for the hands-on session ZIP
Note that, the exam consists on a 2-page paper on the benefits/drawbacks of using functional languages in your research area. The paper is due by the 15th of March and should be sent to giotam[_AT_]microsoft.com.
Lecturers
![]() | Giordano Tamburrelli is Academic Developer Evangelist at Microsoft Italia. He is currently responsible for all the academic initiatives for faculties and students in Italy. Giordano is currently a PhD candidate at the Politecnico di Milano in the DeepSe Group. During his research activity he was visiting Ph.D. student at Swinburne University in Melbourne, Australia. His research interests include : Service Oriented Architectures, Context-Aware Systems, and Non-Functional Requirements. Finally, he obtained in 2007 a Master in Computer Science Engineering from University of Illinois at Chicago, US. |
![]() | Matteo Pradella is a researcher at the IEIIT (Istituto di Elettronica e di Ingegneria dell'Informazione e delle Telecomunicazioni) of the Italian National Research Council (CNR) since December 2001. He received his Ph.D. in January 2001 from Politecnico di Milano. In 2000, 2001, and 2002 he was first visiting Ph.D. student, then visiting reasearcher at the Software Engineering group (code 5546) of the Naval Research Laboratory, Washington, DC. His research interests are mainly in formal languages and automata theory, picture languages, and formal methods for safety-critical and real time systems. |
![]() | Matteo Rossi received a PhD in Compouter Engineering from Politecnico di Milano in 2003. Since 2005 he is an assistant professor at the Dipartimento di Elettronica e Informazione of Politecnico di Milano. His research interests are centered on Software Engineering, with a focus on languages (in particular formal ones), methods and tools for the specification and analysis of time- and safety-critical systems. He is the co-chair of the Student Contest on Software Engineering (SCORE), which will be held as part of the 33rd International Conference on Software Engineering (ICSE 2011). |
![]() | Giuseppe Maggiore obtained a Master's Degree in Computer Science from Università Ca' Foscari di Venezia a few years ago. He is now completing a Ph.D. in Computer Science on functional languages, videogames and software engineering. Giuseppe teaches computer graphics and game development at Università di Verona. In the meantime he is also working as a Metro Trainer for the upcoming Windows Phone 7 and he is consulting for various firms on XNA. |
Abstract
The functional programming paradigm has received increasing attention in the last few years, as the level of abstraction it provides is well-suited to programming complex applications such as concurrent ones. In this lecture we will present the basic concepts underlying the functional programming paradigm, using the Haskell language as reference. We will also present some more advanced concepts, like type classes and monadic computations.
In the second part of the lecture we will study the functional language F#. F# is unique in that it is the first functional language with a clear commercial (rather than academic) target, and as such is supported by very advanced tools and IDEs. We will start with the basic operators (bind and lambda) and data structures (tuples and lists); then we will move to the imperative constructs (refs and mutable binding); we will study functional datatypes in more detail (tuples, records, discriminated unions); we will see ActivePatterns, a powerful form of computed patterns and we will build a simple and small monadic-style parser; we will study the OO capabilities of the language and its interop capabilities with the rest of .Net; we will then move to computation expressions (monads) and finally we will see code quotations.
Schedule
| Day | Time | Room |
|---|---|---|
| 03 July 2012 | 9:00-13:00 | 1st floor meeting room |
| 04 July 2012 | 9:00-13:00 | 1st floor meeting room |
| 05 July 2012 | 9:00-13:00 | 1st floor meeting room |
| 09 July 2012 | 9:00-13:00 | 1st floor meeting room |
Some hands-on-sessions are foreseen during the lectures, due to the variability of the teaching mechanism we chosed to have the lectures in a normal classroom without PCs and you will do the exercises on your own laptop. To do so, you have to install the Pharo system. In case of problems with the installation contact the lecturers that will be happy to help you.
Lecturers
![]() | Kim Mens is full Professor in Computer Science at the Université Catholique de Louvain (UCL), Belgium where he leads the REsearch Laboratory on software Evolution And Software Development technology (RELEASeD). He holds the degrees of Licentiate in Mathematics, Licentiate in Computer Science, and PhD in Computer Science from the Vrije Universiteit Brussel (VUB), Belgium. His main research interests include software development, software maintenance and software evolution with a particular emphasis on the programming aspect and tool support. He is one of the originators of the reuse contracts technique for automatically detecting conflicts in evolving software, of the IntensiVE toolsuite for documenting, checking and correcting structural regularities in the source code of software systems. Other research topics that fit this common theme and in which he is interested are software architecture, software variability, reverse engineering, software transformation, software restructuring and renovation, and co-evolution between source code and earlier life-cycle software artifacts. In addition to that he is interested in language engineering and a variety of programming language paradigms such as object-oriented and aspect-oriented programming, reflection and metaprogramming, logic metaprogramming and, more recently, context-oriented programming. |
![]() | Sebastián González is a postdoc research fellow at the Computing Science Engineering pole of the ICTEAM institute at Université Catholique de Louvain, Belgium. His research currently focuses on programming language engineering for adaptive systems and dynamic software composition. He is the main driving force behind the context-oriented software development research team that is part of the RELEASeD lab led by Prof. Kim Mens. Sebastián's principal areas of interest include programming paradigms, programming language design, formalization and implementation, meta-programming and computational reflection, adaptive computing, live software evolution, context-oriented programming, and software composition and variability. |
Abstract
The aim of this course is to take a closer look at the paradigm of computational reflection and the novel programming paradigm of context-oriented programming. The object-oriented programming language Smalltalk will be used as a vehicle to introduce the course matter. After having introduced the basics of reflection and the essence of the Smalltalk programming language, the reflective features and meta-object protocol of the Smalltalk language will be studied. The Smalltalk language was chosen because of its conceptual pureness and because it is a fully reflective language which has been a source of inspiration for many other languages (like Java, Ruby or Objective-C). All sessions will be a mixture of traditional course lectures and practical hands-on sessions on the computer. At the end of this course the students will have acquired both a conceptual knowledge of and hands-on experience with the concepts of computational reflection and context-oriented programming, while at the same time having being exposed to the Smalltalk programming language.
Course Organization
The course is organized in 4 slots of 3/4 hours.
Slot 1 : (4 hours) Introduction to reflection and Smalltalk
Slot 2 : (4 hours) Reflection in Smalltalk
Slot 3 : (4 hours) Context-oriented programming
Slot 4 : (~3 hours) Context-oriented programming (2)
For the hands-on sessions you need to install on your laptop the Pharo system.
Schedule
| Day | Time | Room |
|---|---|---|
| 06 Sept. 2012 | 10:00-13:00 | 1st floor meeting room |
| 06 Sept. 2012 | 14:00-17:00 | 1st floor meeting room |
| 11 Sept. 2012 | 10:00-13:00 | 1st floor meeting room |
| 11 Sept. 2012 | 14:30-17:00 | 1st floor meeting room |
Lecturers
![]() | Eugenio Moggi (Ph. D) is currently a full professor in computer science at Università degli Studi di Genova. Previously he was lecturer in computer science at the University of Edinburgh and assistant professor at Univesità degli Studi di Pisa. His research interests are semantics of programming languages and program logics. He first described the general use of monads to structure programs. Details are available from http://www.disi.unige.it/person/MoggiE/ . |
Abstract
In the context of programming languages type systems provide a general and convenient tool for classifying different kind of entities, and in doing so they are relevant for error detection and optimization. We introduce computational types and collection types, appropriate syntax associated to these types (borrowing mainly from Haskell), their mathematical semantics in terms of monads (and algebraic theories), and give an overview of their uses (mainly in the context of Haskell).
Lecturer
![]() | Mattia Monga (Ph.D.) is currently an associate professor at Università degli Studi di Milano (Department of Computer Science) where he teaches "operating systems" courses. He has also worked as a research assistant at the University of Italian Switzerland and as a lecturer at Politecnico di Milano. His main research interests concern software engineering and security. Further information about his research work can be found at http://homes.dico.unimi.it/~monga/ |
Design by contract (DBC) is an approach to the design and development of software based on explicit "contracts" between the provider and the user of a programming feature. Its roots are in the Hoare's work on the axiomatic basis of programming and was popularized by the Eiffel language. Today several tools can be used to apply DBC in mainstream systems: this course will present basic DBC techniques and explore how to use them to define and check contracts in Java programs.
Topics
What is a contract
Contracts and Abstract Data Types
Design by Contract in Java
References