This course covers the algorithmic techniques and approaches required to handle various types of structured, semi-structured and unstructured data. The goal of the course is to teach algorithmic methods that serve as the cornerstones for handling and analyzing large datasets in a variety of formats. The course specifically covers how to pre-process big datasets, store big datasets effectively, design quick algorithms for big datasets, and evaluate the performance of designed algorithms. Algorithms for sorting, searching and matching as well as graph and streaming algorithms will be introduced. Upon completion of this course, students will have a broad knowledge of different algorithms for pre-processing, organizing, manipulating and storing different data types. Students will also be able to carry out performance analysis of each algorithm.