[
  {
    "slug": "implement-a-mini-distributed-relational-database",
    "title": "路径（一）实现一个 Mini 版本的分布式关系型数据库",
    "thumbnail": "assets/talent-plan/images/step1.png",
    "body": "<div class=\"markdown markdown-body column is-10\"><h1>学习目标</h1>\n<ol>\n<li>了解分布式数据库所需的基础知识</li>\n<li>熟悉 Online DDL 的实现</li>\n<li>熟悉数据库的优化层和计算层</li>\n</ol>\n<h1>面向对象</h1>\n<ul>\n<li>对数据库感兴趣的初学者</li>\n<li>想了解数据库如何优化 SQL 语句的爱好者</li>\n<li>想了解数据库如何对数据进行计算的爱好者</li>\n</ul>\n<h1>Prerequisites</h1>\n<ul>\n<li>完成 <a href=\"https://tour.golang.org/welcome/1\">A Tour of Go</a> 的学习</li>\n<li>完成 <a href=\"https://github.com/pingcap/talent-plan/blob/master/courses/tp102-how-to-use-git-github.md\">TP 102: How to Use Git and GitHub</a> 的学习</li>\n</ul>\n<h1>推荐课程/学习资料</h1>\n<ul>\n<li><a href=\"https://github.com/pingcap-incubator/tinysql\">TP 301: TinySQL, a distributed relational database in Go</a></li>\n</ul>\n<h1>课程作业</h1>\n<ul>\n<li>完成 <a href=\"https://github.com/pingcap-incubator/tinysql\">TinySQL Project</a> 1~5</li>\n</ul>\n<h1>作业评估规则/考核要点</h1>\n<ul>\n<li>正确性测试 70%<ul>\n<li>根据各个子项任务的得分情况分步得分</li>\n</ul>\n</li>\n<li>文档情况 30%</li>\n<li>额外加分 10%<ul>\n<li>润色或者简化代码</li>\n<li>发现并修复 bug</li>\n<li>补充课程材料文档</li>\n<li>添加代码注释</li>\n<li>修正错别字</li>\n</ul>\n</li>\n</ul></div>"
  },
  {
    "slug": "implement-a-mini-distributed-key-value-database",
    "title": "路径（二）实现一个 Mini 版本的分布式 Key-value 数据库",
    "thumbnail": "assets/talent-plan/images/step2.png",
    "body": "<div class=\"markdown markdown-body column is-10\"><h1>学习目标</h1>\n<ol>\n<li>了解分布式存储基础知识</li>\n<li>熟悉并实现 Raft 一致性算法</li>\n<li>熟悉并实现 Percolator 事务算法</li>\n<li>了解 TiKV 的基本架构设计</li>\n</ol>\n<h1>面向对象</h1>\n<ul>\n<li>对分布式存储感兴趣的初学者</li>\n<li>看 TiKV 源码一头雾水的爱好者</li>\n<li>想加深巩固算法理解的实践者</li>\n</ul>\n<h1>Prerequisites</h1>\n<ul>\n<li>完成 <a href=\"https://tour.golang.org/welcome/1\">A Tour of Go</a> 的学习</li>\n<li>完成 <a href=\"https://github.com/pingcap/talent-plan/blob/master/courses/tp102-how-to-use-git-github.md\">TP 102: How to Use Git and GitHub</a> 的学习</li>\n</ul>\n<h1>推荐课程/学习资料</h1>\n<ul>\n<li><a href=\"https://github.com/pingcap-incubator/tinykv\">TP 302: TinyKV, a distributed key value database in Go</a></li>\n</ul>\n<h1>课程作业</h1>\n<ul>\n<li>完成 <a href=\"https://github.com/pingcap-incubator/tinykv\">TinyKV</a> 的 Project 1、2、3、4</li>\n</ul>\n<h1>作业评估规则/考核要点</h1>\n<ul>\n<li>正确性测试 50%<ul>\n<li>根据 make test 的测试用例通过比例得分</li>\n<li>运行多次取平均分</li>\n</ul>\n</li>\n<li>性能测试 30%</li>\n<li>文档情况 20%</li>\n<li>\n额外加分 10%\n<ul>\n<li>润色或者简化代码</li>\n<li>发现并修复 bug</li>\n<li>补充课程材料文档</li>\n<li>添加代码注释</li>\n<li>修正错别字</li>\n</ul>\n</li>\n</ul></div>"
  },
  {
    "slug": "become-a-tidb-contributor",
    "title": "路径（三）参与工业级开源分布式关系型数据库 TiDB 的开发实践",
    "thumbnail": "assets/talent-plan/images/step3.png",
    "body": "<div class=\"markdown markdown-body column is-10\"><h1>学习目标</h1>\n<ol>\n<li>熟悉 TiDB 源代码</li>\n<li>提交 PR 成为 Contributor</li>\n</ol>\n<h1>面向对象</h1>\n<ul>\n<li>已经有分布式相关知识的爱好者</li>\n</ul>\n<h1>Prerequisites</h1>\n<ul>\n<li>完成 <a href=\"https://university.pingcap.com/talent-plan/implement-a-mini-distributed-relational-database\">路径 1：实现一个简易版的分布式关系型数据库</a> 的学习</li>\n</ul>\n<h1>推荐课程/学习资料</h1>\n<ul>\n<li>阅读 <a href=\"https://pingcap.com/blog-cn/#TiDB-%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB\">TiDB 源码阅读</a> 24 章经</li>\n<li>阅读 <a href=\"https://github.com/pingcap/community/blob/master/contributors/README.md\">Contribution Guide</a></li>\n</ul>\n<h1>课程作业</h1>\n<ul>\n<li>通过 <a href=\"https://github.com/pingcap/tidb-map/blob/master/maps/contribution-map.md\">Contribution Map</a> 为 TiDB 项目做贡献</li>\n</ul>\n<h1>作业评估规则/考核要点</h1>\n<ul>\n<li>提交 PR 并合并</li>\n</ul></div>"
  },
  {
    "slug": "become-a-tikv-contributor",
    "title": "路径（四）参与工业级开源分布式 Key-value 数据库 TiKV 的开发实践",
    "thumbnail": "assets/talent-plan/images/step4.png",
    "body": "<div class=\"markdown markdown-body column is-10\"><h1>学习目标</h1>\n<ol>\n<li>熟悉 TiKV 源代码</li>\n<li>提交 PR 成为 Contributor</li>\n</ol>\n<h1>面向对象</h1>\n<ul>\n<li>掌握分布式存储相关知识的爱好者</li>\n</ul>\n<h1>Prerequisites</h1>\n<ul>\n<li>完成 <a href=\"https://university.pingcap.com/talent-plan/implement-a-mini-distributed-key-value-database\">路径 2：实现一个简易版的分布式 Key-value 数据库</a> 的学习</li>\n<li>完成 <a href=\"https://github.com/pingcap/talent-plan/blob/master/courses/rust/README.md\">TP 201: Practical Networked Applications in Rust</a> 课程的学习</li>\n</ul>\n<h1>推荐课程/学习资料</h1>\n<ul>\n<li>阅读 <a href=\"https://pingcap.com/blog-cn/#TiKV-%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90\">TiKV 源码解析</a>（持续更新中）</li>\n<li>阅读 <a href=\"https://github.com/pingcap/community/blob/master/contributors/README.md\">Contribution Guide</a></li>\n</ul>\n<h1>课程作业</h1>\n<ul>\n<li>通过 <a href=\"https://github.com/pingcap/tidb-map/blob/master/maps/contribution-map.md\">Contribution Map</a> 为 TiKV 项目做贡献</li>\n</ul>\n<h1>作业评估规则/考核要点</h1>\n<ul>\n<li>提交 PR 并合并</li>\n</ul></div>"
  },
  {
    "slug": "rust-programming",
    "title": "路径（五）Rust 编程原理与实践",
    "thumbnail": "assets/talent-plan/images/step5.png",
    "body": "<div class=\"markdown markdown-body column is-10\"><h1>学习目标</h1>\n<ol>\n<li>掌握 Rust 语言高级特性，并发编程，异步编程等</li>\n<li>熟练使用 Rust 语言进行编程</li>\n<li>使用 Rust 实现基于 Raft 的分布式 KV 服务</li>\n</ol>\n<h1>面向对象</h1>\n<ul>\n<li>Rust 语言爱好者</li>\n</ul>\n<h1>Prerequisites</h1>\n<ul>\n<li>了解 C 或者 C++ 编程语言</li>\n<li>有一定的编程经验</li>\n</ul>\n<h1>推荐课程/学习资料</h1>\n<ul>\n<li><a href=\"https://github.com/pingcap/talent-plan/blob/master/courses/rust/README.md\">TP 201: Practical Networked Applications in Rust</a></li>\n<li><a href=\"https://github.com/pingcap/talent-plan/blob/master/courses/dss/README.md\">TP 202: Distributed Systems in Rust</a></li>\n</ul>\n<h1>课程作业</h1>\n<ul>\n<li>完成 <a href=\"https://github.com/pingcap/talent-plan/blob/master/courses/rust/README.md\">Practical Networked Applications in Rust</a> 中 Project 1、2、3、4</li>\n</ul>\n<h1>作业评估规则/考核要点</h1>\n<ul>\n<li>完成作业要求</li>\n<li>完善的代码注释</li>\n</ul></div>"
  }
]
