The course provides a modern introduction to data mining, which spans techniques, algorithms and methodologies for discovering structure, patterns and relationships in data sets (typically, large ones) and making predictions. Applications of data mining are already happening all around us, and, when they are done well, sometimes they even go unnoticed. For instance, how does the Google web search work? How does Netflix recommend movies to its users? The principles of data mining provide answers to these and others questions. Data mining overlaps the fields of computer science, statistical machine learning and data bases. The course aims at providing the students with the knowldedge required to explore, analyze and leverage available data in order to turn the data into valuable and actionable information for a company, for instance, in order to facilitate a decision-making process.
The course provides a modern introduction to the design, analysis and implementation of sequential and parallel algorithms. Regarding sequential algorithms, the course provides an in-depth study of design techniques for sequential algorithms, and focuses on correctness and analysis. Regarding parallel algorithms, the course introduces parallel design and analysis. A pragmatic approach to parallel programming of message-passing based algorithms using the C language and the MPI library complements the theoretical approach.