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)

3 Assignments (Programming) 40%

3 Exams (Programming) 60%

-------------------------------------------------

Total 100%