Knowledge and understanding - By means of lectures attended in the context of the course, the student will acquire the methods and knowledge that are necessary to understand how abstract machines work. The student will learn the most important computational complexity classes. The student will also learn principles and technologies of parallel computing architectures, as well as design and implementation parallel algorithms. The student will learn simulation techniques, with particular emphasis on discrete event simulation. Finally, the student will acquire the methods and knowledge that are necessary to understand how quantum computers work, and to design quantum algorithms and protocols.
Applying knowledge and understanding - By means of lectures and practical activities in the context of the course, the student will learn how to apply the acquired knowledge in a real design environment. In particular, the student will learn to: design efficient parallel algorithms, design and implement parallel programs, design and implement discrete event simulators, design quantum algorithms and protocols.
Making Judgements - The student will be able understand and critically evaluate the main types of high performance computing systems.
Communication Skills - By means of the lectures and the discussions with the teacher, the student will acquire the specific lexicon related to high performance computing systems. It is expected that, at the end of the course, the student will be able to transmit, both in oral and written form, the main topics of the course, like ideas, engineering problems and related solutions.
Learning skills - The student that will attend the course will be able to improve its knowledge about high performance computing systems, by autonomously referring to specialized books, scientific publications, also beyond the topics presented by the teacher during the lectures, in order to effectively face the entry into employment and undertake further training paths.
Course contents summary
1. Theory of Computing
2. Parallel Computing
3. Simulation Techniques
4. Quantum Computing
1. Theory of Computation (8 hours) 1.1. Information theory; 1.2. Automata and computability; 1.3. Computational complexity
2. Parallel Computing (18 hours) 2.1. Parallel architectures; 2.2. Parallel algorithms; 2.3. Performance evaluation; 2.4. Message Passing Interface (MPI); 2.5. MapReduce; 2.6. Multicore systems, OpenMP; 2.7. General Purpose GPU Programming, CUDA
3. Simulation techniques (6 hours) 3.1. General concepts about simulation; 3.2. Discrete event simulation; 3.3. DEVS models; 3.4. DEUS simulation platform
5. Quantum computing (18 hours) 4.1. History and perspectives of quantum computing; 4.2. Linear algebra (recap); 4.3. Postulates of Quantum Mechanics; 4.4. Quantum bits; 4.5. Quantum circuit model of computation; 4.6. Quantum computers; 4.7. Quantum algorithms; 4.8. Protocols for quantum cryptography; 4.9. Quantum Internet
- M. Sipser, Introduction to the Theory of Computation, Cengage Learning, 2013
- E. Aubanel, Elements of Parallel Computing, CRC Press, 2017
- B.P. Zeighler, H. Praehofer, T.G. Kim, Theory of Modeling and Simulation, Second Edition, Academic Press, 2000
- M. Nielsen, I. Chuang, Quantum Computation and Quantum Information, Cambridge University Press, 2010
Teaching activities will be mostly performed in terms of lectures given by the teacher, showing slides and writing on the blackboard.
Some hours will be devoted to the practice of parallel programming, discrete event simulation and quantum programming.
Teaching materials (including slides, lecture notes, source code, scientific articles) will be weekly uploaded on the Elly platform.
To download teaching materials, on line subscription to the course is mandatory.
Students that won't attend the lectures are invited to check the available teachning materials and recommendations provided by the teacher through the Elly platform.
Assessment methods and criteria
The learning evaluation consists of two moments:
1) a written exam lasting 3 hours, with open questions related to the theoretical topics of the course;
2) a practical project (software development) on one of the following topics:
- parallel computing
- discrete event simulation
- quantum computing
It is mandatory to write a short report and to make an oral presentation of the work done.
The written exam is evaluated on a 0-30 scale. The project is evaluated on a 0-30 scale. The final grade is the average of the two partial grades. There won't be midterm exams.