| Understand the fundamental principles of recursion and its relationship with mathematical induction. |
| Use recursion as a problem-solving and programming technique. |
| Develop design and implementation skills for key abstract data types such as linked lists, doubly linked lists, stacks, and queues. |
| Analyze discrete data structures, such as trees, using combinatorial methods. |
| Understand algorithmic solutions for sorting and searching problems and design common search structures like binary search trees. |