This course introduces the elementary data structures and primary algorithms; Abstract thinking in problem solving using pseudo-code and implementation with C and Java Programming languages. Software development concepts of encapsulation and information hiding using Abstract Data Types (ADTs). The course covers the following data structures and their relevant algorithms: lists, linked lists, stacks, queues, hash tables and priority queues. It also covers recursion and primary algorithms like searching, binary search, and sorting.