At the end of this course, students will be able to:
- design and analyze basic algorithms such as sorting and searching
- learn basic algorithm design principles such as dynamic programming, divide and conquer, and backtracking
- learn and use basic data structures such as stack, queues and trees