Fundamental data structures: Arrays, stacks, queues, heaps (priority queues), lists, maps (associative arrays), search trees and graphs. Algorithms to manipulate the above structures. Sorting and tree-exploration algorithms. Divide-and-conquer algorithms. Basic graph algorithms. Asymptotic analysis of algorithm time complexity and correctness proof. Design, analysis and implementation that uses data structures and algorithms to solve practical and modern-day engineering problems, such as machine learning, artificial intelligence, fuzzy control, system simulation, etc.