一、課程說明 (Course Description)

This course introduces some classical and smart methods to store the data so
that we can answer questions about the data efficiently. As an example, let us
imagine that we have the exam scores of all students, and from time to time
different student would ask how many other students get a higher score than
him/her. In order to speed up the query, one may store the scores in sorted
order rather than in a random order.

Our focus will be on both the theoretical performance and the practical
implementation of the data structures.


二、指定用書 (Text Book)
1. Introduction to Algorithms, 3rd edition, MIT Press, by T. Cormen, C. E.
Leiserson, and R. L. Rivest

三、參考書籍 (References)
1. Algorithms in C++, (or Algorithms in Java), by R. Sedgewick
2. The Art of Computer Programming, by D. E. Knuth
3. Fundamentals of Data Structures in C++, by E. Horowitz, S. Sahni, and
D. Mehta

四、教學方式 (Teaching Method)
Home Study + Classroom Discussion + Online Discussion

五、教學進度 (Syllabus)

Tentative topics to be covered:

1. Growth of Functions
2. Arrays
3. Heaps
4. Sorting
5. Lists, Stacks, and Queues
6. Trees and Graphs
7. Searching Set Data
8. Hashing

六、成績考核 (Evaluation)

4 Assignments (Written + Programming) 40%
2 Exams (Programming) 60%
-------------------------------------------------
Total 100%