一、 課程說明 (Course Description)

This course provides an overview of the current database management
systems. The goals are 1) to get students familiar with how to use a database
system to solve real problems; 2) the internals of a database and some state-
of-
the-art implementations (e.g., MySQL, PostgreSQL etc.).

Proper understanding of Java/OOP programming and data structure is required.
剛修完作業系統、演算法,對大型程式系統有興趣之學生優先。

二、 指定用書 (Textbook)
Lecture Notes

三、 參考書籍 (References)
[1] Database Management Systems, 3ed, by Raghu Ramakrishnan et al., ISBN:
0072465638
[2] Database System Concepts, 6ed, by Abraham Silberschatz et al, ISBN:
0073523321
[3] Database Design and Implementation, by Edward Sciore, ISBN: 0471757160
[4] Principles of Distributed Database Systems, 3ed, by M. Tamer Ozsu, iSBN:
1441988335

四、 教學方式 (Teaching Method)
Lecture and Lab

五、 教學進度 (Syllabus)
1. Introduction to database systems
A. Relational model, SQL, transactions, and ACID (with quiz)
B. Modern database systems for scalability, availability, and elasticity
2. Query engine
A. JDBC and DB server
B. Relational algebra
C. Query plans, scans, and the storage interface
D. Parsing
E. Planning
3. Storage engine
A. Disk and file management
B. Memory management
C. Transaction management (+OCC)
D. Record management
E. metadata management
4. Benchmarking with TPC-C
5. Optimizations
A. Indexing
B. Materialization and sorting
C. Multi-buffer plans
D. Query optimization
6. Distributed database systems and advanced topics
A. NoSQL database systems
B. NewSQL database systems
C. OLAP and datawarehousing

六、 成績考核 (Evaluation)
Midterm Exam 20%
Homework 60%
Term Project 20%