The goal of the course is to give a complete overview of algorithms and data structures from a practical standpoint. The course begins with explaining data files and working with them. Then, algorithms are introduced, as well as algorithmic complexity, followed by showing the most standard algorithms for sorting, both interative and recursive. Then functional and class templates are introduced, which are used to explain working with linked lists, as well as algorithms for their sorting. In the second part, stacks, queues and trees are introduced. Also, standard algorithms for working with these structures are given. Finally, special attention is given to graphs, as especially important structures, as well as algorithms used upon working with graphs.