Algorithm engineering

Code 531AA
Credits 9

Learning outcomes

Study, design and analyze advanced algorithms and data structures for the efficient solution of combinatorial problems involving all basic data types, such as integer sequences, strings, (geometric) points, trees and graphs. The design and analysis will involve several models of computation — such as RAM, 2-level memory, cache-oblivious, streaming — in order to take into account the architectural features of modern PCs and the availability of Big Data upon which algorithms could work on. We will add to such theoretical analysis several engineering considerations spurring from the implementation of the proposed algorithms and from experiments published in the literature
· Design of algorithms for massive datasets: disk aware or cache oblivious
· Design of advanced data structures in hierarchical memories for atomic or string data
· Data compression for structured and unstructured data
· Algorithms for large graphs
· Engineering considerations about the implementation of algorithms and data structures