This course examines the concepts of data structures and algorithms that can be applied to computer programs. The discussion begins with basic data structures which include linked-list, stack, queue, and tree. Then we discuss simple algorithms that use these data structures, such as searching and sorting. Next we discuss algorithms and data structures that are suitable for solving problems in everyday life through individual and group task-based learning, presented in theory and practice and demonstrating the results in computer programs.