This subject introduces you to fundamentals of recursion and data structures in solving problems using a programming language. The subject aims to help you learn various methods of storing and manipulating data to solve problems with the help of linked lists, trees, stacks and queue data structures. You will also learn the fundamentals of searching techniques and sorting algorithms.