一、課程說明 (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.

[In fact, an even better scheme exists!]

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

2. Fundamentals of Data Structures in C++, by E. Horowitz, S. Sahni,

and D. Mehta

四、教學方式 (Teaching Method)

Lectures in English

Tutorials every Tuesday, 7:00--8:00pm (Voluntary Basis)

五、教學進度 (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

Please check last year's homepage [link] for a reference.

六、成績考核 (Evaluation)

6 Assignments (Written or Programming) 45%

3 Exams (Written, 1 hour) 45%

1 Project (Programming) 10%

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

Total 100%

Remark 1: In previous years, approximately 80% of the students passed

the course. The average score is between 75 and 80.

Remark 2: We normally will not make any score adjustment unless we

have made serious mistakes that affect the assessment.

Please think twice before joining our class.

Good news: It is possible that all students get A.

Bad news: It is possible that we are failing all students.