This course offers an introductory exploration of data structures and algorithms, focusing on the essential concepts and techniques used in computer science. It encompasses the principles of data organization, storage, retrieval, and manipulation. The course comprises two core components. The first component aims to familiarize students with the most commonly used data structures in computer science. These structures include arrays, linked lists, stacks, queues, trees, hash tables, and graphs. You will gain an understanding of the characteristics, advantages, and disadvantages of each data structure and learn how to implement them using the C++ programming language. The second component explores algorithms, which are methods employed to manipulate and transform data structures. The course covers various types of algorithms, such as sorting and searching algorithms, graph algorithms, dynamic programming, and divide-and-conquer techniques. Additionally, students will learn how to analyse the time and space complexity of algorithms and select the most appropriate algorithm for specific problems. This course is tailored for students aiming to improve their programming skills and develop a deeper understanding of how computers process and manipulate data.