The student who successfully completes the course will have the ability to design and analyze algorithms and data structures for massive datasets by deploying the best known and advanced algorithmic tools in this context.
The student will be assessed on his/her demonstrated ability to discuss the main course contents using the appropriate terminology, to show his/her problem solving capabilities given the tools teached in class.
Methods:
Further information:
Basic Algorithms
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
In this course we will study, design and analyze (theoretically and experimentally) advanced algorithms and data structures for the efficient solution of combinatorial problems involving all basic data types, such as integers, strings, (geometric) points, trees and graphs. These algorithmic tools will be designed and analyzed in several models of computation— such as RAM, 2-level memory, cache-oblivious, streaming— in order to take into account the architectural features and the memory hierarchy of modern PCs. Every lecture will follow a problem-driven approach that starts from a real software-design problem, abstracts it in a combinatorial way (suitable for an algorithmic investigation), and then introduces algorithmic solutions aimed at minimizing the use of some computational resources like time, space, communication, I/O, energy, etc.
No slides for teaching, and use just the old-fashioned blackboard. Since the course covers many different algorithmic themes and will deal with advanced results and issues which are not yet part of books.
I'll distribute notes and copies of papers/books which will constitute the reading material of the course.
http://didawiki.di.unipi.it/doku.php/magistraleinformaticanetworking/ae/ae2016/start