diff --git a/docs/好书推荐.md b/docs/好书推荐.md
index 7b63033c..0937ab5e 100644
--- a/docs/好书推荐.md
+++ b/docs/好书推荐.md
@@ -69,6 +69,7 @@
- Database System Concepts
- [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf)
+- [Readings in Database Systems, 5th Edition](http://www.redbook.io/)
## 计算机图形学
diff --git a/docs/数据库系统/CS122.md b/docs/数据库系统/CS122.md
new file mode 100644
index 00000000..e0d12ec4
--- /dev/null
+++ b/docs/数据库系统/CS122.md
@@ -0,0 +1,38 @@
+# Caltech CS 122: Database System Implementation
+
+## 课程简介
+
+- 所属大学:Caltech
+- 先修要求:无
+- 编程语言:Java
+- 课程难度:🌟🌟🌟🌟🌟
+- 预计学时:150 小时
+
+加州理工的这门课,不同于没有提供 SQL 层功能的 CMU15-445 课程。CS122 课程 Lab 的侧重点在于 SQL 层的相关实现,涉及查询优化器的各个模块,比如SQL的解析,Translate,如何实现 Join,统计信息以及代价估计,子查询实现,Agg,Group By 的实现等。除此之外,还有 B+树,WAL 相关实验。本门课程适合在学完 CMU15-445 课程之后,对查询优化相关内容有兴趣的同学。
+
+下面介绍一下这门课的前 3 个 Assignment 也就是实验 Lab 所要实现的功能:
+
+### Assignment1:
+- 为 NanoDB 提供 delete,update 语句的支持。
+- 为 Buffer Pool Manager 添加合适的 pin/unpin 代码。
+- 提升 insert 语句的性能, 同时不使数据库文件大小过分膨胀。
+
+### Assignment2:
+- 实现一个简单的计划生成器,将各种已经 Parser 过的 SQL 语句转化为可执行的执行计划。
+- 使用 nested-loop join 算法,实现支持 inner- and outer-join 的 Join 计划节点。
+- 添加一些单元测试, 保证 inner- and outer-join 功能实现正确。
+
+### Assignment3:
+- 完成收集表的统计信息。
+- 完成各种计划节点的计划成本计算。
+- 计算可出现在执行计划中的各种谓词的选择性。
+- 根据谓词更新计划节点输出的元组统计信息。
+
+剩余 Assignment 和 Challenges 可以查看课程介绍,推荐使用 IDEA 打开工程,Maven 构建,注意日志相关配置。
+
+## 课程资源
+
+- 课程网站:
+- 课程代码:
+- 课程教材:无
+- 课程作业:7 Assignments + 2 Challenges
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index 65b07b6b..8a4f6170 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -141,6 +141,7 @@ nav:
- 数据库系统:
- "UCB CS186: Introduction to Database System": "数据库系统/CS186.md"
- "CMU 15-445: Database Systems": "数据库系统/15445.md"
+ - "Caltech CS122: Database System Implementation": "数据库系统/CS122.md"
- 编译原理:
- "Stanford CS143: Compilers": "编译原理/CS143.md"
- 计算机图形学: