The aim of the course is to define and characterize computing systems, focusing on parallel and distributed computing systems. A sound theoretical foundation will be developed, related to performance evaluation and programming models of complex computing systems. From a practical point of view, some important tools for parallel and distributed programming will be illustrated. The course will also illustrate the peer-to-peer paradigm and the principles of autonomic computing, as well as a design solution for adaptive peer-to-peer systems. The last part of the course will be related to the simulation of complex systems, in particular peer-to-peer and autonomic systems.
Course contents summary
Systems e models
- State space
- Deterministic and stochastic models
- Complex systems
- Complex adaptive systems
- Population dynamics
- Network topologies
- DEVS models
- Information theory
- Taxonomy of computing systems
- Von Neumann architecture
- General concepts
- Parallel programming models
- Multicore systems, Cell, General Purpose GPU Programming
- NUMA architecture; Onyx2
- Massive parallelism, CM2
- Message Passing Interface (MPI)
- Cluster computing
- Grid computing
- Cloud computing
- State Variables
- Dynamics of peer-to-peer networks
- Design issues
- Design strategies
- Most important overlay schemes (Napster, BitTorrent, eMule, JXTA, Skype, Chord)
- Sip2Peer middleware
- The four principles of autonomic computing
- Networked Autonomic Machine
- Adaptive Evolutionary Framework
- General concepts about simulations
- Event oriented simulations
- DEUS: a tool for complex simulations
Practice with the Sip2Peer middleware.
Practice with the DEUS simulation tool.
1) C. Ghezzi, D. Mandrioli, "Informatica Teorica", Città Studi, 1989.
2) D. E. Culler, J. Pal Singh, “Parallel Computer Architecture: A Hardware/Software Approach”, Morgan Kaufman, 1999.
3) B.P. Zeighler, H. Praehofer, T.G. Kim, "Theory of Modeling and Simulation", Second Edition, Academic Press, 2000.