This course introduces basic algorithms, including sorting and searching, divide and conquer, etc.,and their related date structures, to undergraduate students with some programming skills. After completing this course, students should have a conceptual understanding of the algorithms and have necessary knowledge on implementing the algorithms.