This course is a project-based course that studies basic techniques for abstracting data, creating algorithms that can access that data, and manipulating the abstract structure. In this course, space and time complexity analysis will also be introduced in implementing an algorithm. Topics covered include: abstract data type concepts, linear data models (array and dynamic list, stack and queue), sets, hierarchical data models (binary tree, heap, binary search tree, AVL-tree, B-Tree), graph data structure model, tracking algorithm. Students will create group projects to apply data structure theories and concepts to problems in the field of Data Science.