This course explores the principles, design, and implementation of essential data structures and algorithms in computing, and involves problem-solving, algorithmic analysis, and efficient software development. This course covers the role of data structures and algorithms in solving real-world problems and optimizing software solutions; arrays and linked structures; stacks and queues; trees and graphs; sorting algorithms; searching algorithms; recursion; dynamic programming; algorithmic analysis; and graph algorithms. This course uses programming tools and programming languages to illustrate the algorithms. This course requires MAT-201 as a prerequisite.