一、課程說明(Course Description)
This course introduces the basic concepts of data structures. A data structure is
a particular way of storing and organizing data in a computer so that the data can
be managed and used efficiently. Data structures are particular critical when
manipulating large amounts of data and they play an important role in developing
efficient algorithms to solve problems. In view of the importance of data
structures, modern programming languages, such as C++, emphasize data structures,
rather than procedures, as the key organizing factor in software design. Their
object-oriented approach to software development makes them very suitable for
studying data structures. In this course, we will use C++ as the vehicle to study
various data structures, including arrays, stacks, queues, linked list, trees, and
graphs.

Prerequisite Courses: C/C++ Programming Language

二、指定用書(Text Books)
Fundamentals of Data Structures in C++, 2nd ed., by Ellis Horowitz,
Sartaj Sahni, and Dinesh Mehta.

三、參考書籍(References)
Introduction to Algorithms, 3rd ed., by Cormen et al.
C++ reference (http://www.cplusplus.com/reference/)

四、教學方式(Teaching Method)
Lectures, Quiz

五、教學進度(Syllabus)
- Introduction to C++ and Algorithm
- Arrays
- Stacks and Queues
- Linked Lists
- Trees
- Graphs
- Sorting
- Hashing

六、成績考核(Evaluation)
(以上課講義為準,以下僅供參考)
- Program Assignments: 30%
- Online Lab Quizzes: 15%
- Midterm Exam: 20%
- Final Project: 25%
- 程式檢定: 3%
- Class Participation: 7%

七、可連結之網頁位址
ILMS (http://lms.nthu.edu.tw/)
http://www.cs.nthu.edu.tw/~king/courses/cs2351