diff --git a/README.md b/README.md index 768fea6..c14e1a3 100644 --- a/README.md +++ b/README.md @@ -20,75 +20,74 @@ - 第一学期 -| Week | Point | Detail | Project | Further Reading | -| :--: | :--: | -- | -- | -- | -| [1](./Week1-Database-Introduction) | 数据库分类及内部组件功能 | 数据库与文件系统的区别,数据库产生的原因;学习关系型、文档型、KV 型、图数据库等不同类别等数据库,了解其中架构及功能模块,理解不同数据库的应用场景。
学习使用git进行协作开发 | 1. 安装相关类别的数据库并简单使用(可以使用 [Docker](https://www.docker.com/) 等工具)
2. 以3人小组为单位整理相关文档,并进行分享。(使用markdown格式撰写文档,并上传至github) | | -| 2 | 数据结构 1 | 熟悉开发流程与规范
[Bloom Filter](https://llimllib.github.io/bloomfilter-tutorial/)
[Cuckoo Filter](https://en.wikipedia.org/wiki/Cuckoo_filter)
[Consistent Hash](https://en.wikipedia.org/wiki/Consistent_hashing)
[Chord](https://en.wikipedia.org/wiki/Chord_(peer-to-peer)) | 实现两种过滤器:要求具有单元测试,与性能测试。
使用 UML 建模完成功能和测试(代码符合统一规范,具有完备的测试用例)最后形成文档。(后续的 Project 同样的要求) | | -| 3 | 关系型数据库 1 | 学习关系型数据库的基本概念:关系模型,SQL语句,索引,buffer pool,事务,存储等,学习各个模块在关系型数据库中所处位置 | 以3人小组为单位,对关系型数据库各个部分进行分析,并撰写相关文档
| | -| 4-5 | 关系型数据库 1 | 以个人为单位,实现一个buffer pool,并测试其性能及内存占用。并撰写相关文档 | [项目地址](https://15445.courses.cs.cmu.edu/fall2020/project1/) | | -| 6-7 | 数据结构 2 | [B-Tree](https://en.wikipedia.org/wiki/B-tree)
[B+ Tree](https://en.wikipedia.org/wiki/B%2B_tree)
| 在buffer pool的基础上,实现一个B+树,需包含单元测试及测试性能。[项目地址](https://15445.courses.cs.cmu.edu/fall2020/project2/) | [Mass-Tree](https://pdos.csail.mit.edu/papers/masstree:eurosys12.pdf)
[Bw-Tree](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/bw-tree-icde2013-final.pdf)
[Bz-Tree](http://www.vldb.org/pvldb/vol11/p553-arulraj.pdf) | -| 8-9 | 数据结构 3 | [Skip List](https://en.wikipedia.org/wiki/Skip_list)、[LSM Tree](https://en.wikipedia.org/wiki/Log-structured_merge-tree) 分析其在LevelDB中的实现方式
分析B+树与LSM Tree的特点及应用场景。 | 继续完成B+树项目
对leveldb中跳表与lsm tree的实现方式进行分析,以3人为单位撰写leveldb代码分析文档 | | -| 10-12 | SQL Engine & Parser & Executor | 了解 SQL Engine 组件及功能,学习 SQL 解析流程及抽象语法树。学习执行算子,如 Join, Agg, Scan 的不同实现。了解基本的查询优化方法,了解 Volcano 及 Vectorized 执行器架构 | 撰写相关文档
实现数据库的执行器。[项目地址](https://15445.courses.cs.cmu.edu/fall2020/project3/) | | -| 13-15 | 数据库事务 | 理解事务的概念及产生原因、理解ACID特性
并发控制(乐观、悲观)
数据持久化和故障恢复(日志、检查点、快照) | 撰写相关文档
基于锁实现数据库的并发控制,要求保证事务的ACID特性 [项目地址](https://15445.courses.cs.cmu.edu/fall2020/project4/) | [Percolator](http://notes.stephenholiday.com/Percolator.pdf)
| -| 16 | 分布式基础 议 | 分布式相关概念、时钟
CAP、BASE
拜占庭问题
[Zab](https://marcoserafini.github.io/papers/zab.pdf)
[Gossip](https://flopezluis.github.io/gossip-simulator/)
| 实现单机的kv server [Project1 StandaloneKV](https://github.com/tidb-incubator/tinykv/blob/course/doc/project1-StandaloneKV.md) | [LCN](https://github.com/codingapi/tx-lcn)
[Seata](http://seata.io/en-us/)
Quorum | -| 17-20 | 分布式基础 议 | [Paxos](https://en.wikipedia.org/wiki/Paxos_(computer_science))
[Raft](https://raft.github.io/)
RPC | 基于raft实现高可用的key-value server
[Project2 RaftKV](https://github.com/tidb-incubator/tinykv/blob/course/doc/project2-RaftKV.md) | Multi-Raft
Parallel-Raft | +| Week | Point | Detail | Project | Further Reading | +|:----------------------------------:|:------------------------------:| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [1](./Week1-Database-Introduction) | 数据库分类及内部组件功能 | 数据库与文件系统的区别,数据库产生的原因;学习关系型、文档型、KV 型、图数据库等不同类别等数据库,了解其中架构及功能模块,理解不同数据库的应用场景。
学习使用git进行协作开发 | 1. 安装相关类别的数据库并简单使用(可以使用 [Docker](https://www.docker.com/) 等工具)
2. 以3人小组为单位整理相关文档,并进行分享。(使用markdown格式撰写文档,并上传至github) | | +| 2 | 数据结构 1 | 熟悉开发流程与规范
[Bloom Filter](https://llimllib.github.io/bloomfilter-tutorial/)
[Cuckoo Filter](https://en.wikipedia.org/wiki/Cuckoo_filter)
[Consistent Hash](https://en.wikipedia.org/wiki/Consistent_hashing)
[Chord](https://en.wikipedia.org/wiki/Chord_(peer-to-peer)) | 实现两种过滤器:要求具有单元测试,与性能测试。
使用 UML 建模完成功能和测试(代码符合统一规范,具有完备的测试用例)最后形成文档。(后续的 Project 同样的要求) | | +| 3 | 关系型数据库 1 | 学习关系型数据库的基本概念:关系模型,SQL语句,索引,buffer pool,事务,存储等,学习各个模块在关系型数据库中所处位置 | 以3人小组为单位,对关系型数据库各个部分进行分析,并撰写相关文档
| | +| 4-5 | 关系型数据库 1 | 以个人为单位,实现一个buffer pool,并测试其性能及内存占用。并撰写相关文档 | [项目地址](https://15445.courses.cs.cmu.edu/fall2020/project1/) | | +| 6-7 | 数据结构 2 | [B-Tree](https://en.wikipedia.org/wiki/B-tree)
[B+ Tree](https://en.wikipedia.org/wiki/B%2B_tree)
| 在buffer pool的基础上,实现一个B+树,需包含单元测试及测试性能。[项目地址](https://15445.courses.cs.cmu.edu/fall2020/project2/) | [Mass-Tree](https://pdos.csail.mit.edu/papers/masstree:eurosys12.pdf)
[Bw-Tree](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/bw-tree-icde2013-final.pdf)
[Bz-Tree](http://www.vldb.org/pvldb/vol11/p553-arulraj.pdf) | +| 8-9 | 数据结构 3 | [Skip List](https://en.wikipedia.org/wiki/Skip_list)、[LSM Tree](https://en.wikipedia.org/wiki/Log-structured_merge-tree) 分析其在LevelDB中的实现方式
分析B+树与LSM Tree的特点及应用场景。 | 继续完成B+树项目
对leveldb中跳表与lsm tree的实现方式进行分析,以3人为单位撰写leveldb代码分析文档 | | +| 10-12 | SQL Engine & Parser & Executor | 了解 SQL Engine 组件及功能,学习 SQL 解析流程及抽象语法树。学习执行算子,如 Join, Agg, Scan 的不同实现。了解基本的查询优化方法,了解 Volcano 及 Vectorized 执行器架构 | 撰写相关文档
实现数据库的执行器。[项目地址](https://15445.courses.cs.cmu.edu/fall2020/project3/) | | +| 13-15 | 数据库事务 | 理解事务的概念及产生原因、理解ACID特性
并发控制(乐观、悲观)
数据持久化和故障恢复(日志、检查点、快照) | 撰写相关文档
基于锁实现数据库的并发控制,要求保证事务的ACID特性 [项目地址](https://15445.courses.cs.cmu.edu/fall2020/project4/) | [Percolator](http://notes.stephenholiday.com/Percolator.pdf)
| +| 16 | 分布式基础 议 | 分布式相关概念、时钟
CAP、BASE
拜占庭问题
[Zab](https://marcoserafini.github.io/papers/zab.pdf)
[Gossip](https://flopezluis.github.io/gossip-simulator/)
| 实现单机的kv server [Project1 StandaloneKV](https://github.com/tidb-incubator/tinykv/blob/course/doc/project1-StandaloneKV.md) | [LCN](https://github.com/codingapi/tx-lcn)
[Seata](http://seata.io/en-us/)
Quorum | +| 17-20 | 分布式基础 议 | [Paxos](https://en.wikipedia.org/wiki/Paxos_(computer_science))
[Raft](https://raft.github.io/)
RPC | | Multi-Raft
Parallel-Raft | 说明:整个学习流程的作业和文档需要在实验室 Github 仓库里面提交,每个 Project 会事先建立好框架,每个同学按照框架进行代码和文档的撰写。并且在代码过程中抽象公共代码库方便后续同学的使用,且需做好 todo-list,方便功能的完善。 - 第二学期 - + 承接上学期理论学习,下学期的新生培养以动手实践为主。项目1选取TiDB Talent Plan中TinyKV项目,目标是实现一个可扩展、高可用、支持分布式事务的KV数据库,使用golang进行开发[项目地址](https://github.com/tidb-incubator/tinykv)。项目2选取TiDB Talent Plan中的TinySQL项目。 - -| Week | Point | Detail | Project | Further Reading | -| :---: | ---------- | :----------------------------------------------------------: | :----------------------------------------------------------: | ------------------------------------------------------------ | -| 1-3 | raft进阶 | 基于multi-raft实现可扩展的key-value server | [Project3 MultiRaftKV](https://github.com/tidb-incubator/tinykv/blob/course/doc/project3-MultiRaftKV.md) | | -| 2-5 | 分布式事务 | 分布式事务(2PC / 3PC)
基于Percolator实现分布式事务,分析Percolaor的优缺点 | [Project 4 Transactions](https://github.com/tidb-incubator/tinykv/blob/course/doc/project4-Transaction.md) | [Percolator](http://notes.stephenholiday.com/Percolator.pdf)
| -| 6-9 | | TinySQL项目 | | | -| 10-13 | | TinySQL项目 | | | -| 14-16 | | TinySQL项目 | | | - +| Week | Point | Detail | Project | +|:-----:| --------- |:----------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:| +| 1-4 | raft基础 | 基于raft实现高可用的key-value server | [Project2 RaftKV](https://github.com/tidb-incubator/tinykv/blob/course/doc/project2-RaftKV.md) | +| 6-9 | raft进阶 | 基于multi-raft实现可扩展的key-value server | [Project3 MultiRaftKV](https://github.com/tidb-incubator/tinykv/blob/course/doc/project3-MultiRaftKV.md) | +| 10-12 | 分布式事务 | 分布式事务(2PC / 3PC)
基于Percolator实现分布式事务,分析Percolaor的优缺点 | [Project 4 Transactions](https://github.com/tidb-incubator/tinykv/blob/course/doc/project4-Transaction.md) | +| 13 | 数据挖掘 | 数据预处理(滤波、插值、降维)
关联分析 
图挖掘,序列模式挖掘 | 1. 整理相关算法说明文档
2. 使用现有工具库分析图数据中的重要节点、社团关系等,并对结果进行展示
 [项目地址](./SpringTerm-Week13-DataMining) | +| 14 | 机器学习&深度学习 | 分类算法(KNN、贝叶斯、SVM、决策树)
聚类算法(kmeans、DBSCAN)
常用模型(CNN、RNN、LSTM) | 1. 整理相关算法说明文档
 2. 使用机器学习和深度学习方法实现手写数字识别
3. 空气质量数据集进行预处理,使用深度学习方法,实现空气质量预测
[项目地址](./SpringTerm-Week14-DeepLearning) | +| 15 | 深度学习 | Attention机制、Transformer、GAN
自然语言处理基础:分词、去除停用词、命名实体识别、预训练模型 | 1. 使用NLP工具实现命名实体识别
2. 搭建模型,实现情感分析
[项目地址](SpringTerm-Week15-NLP) | ## 如何提交作业 1. 第一次提交作业的时候请先 `fork` 当前项目到自己的仓库 2. 在自己的仓库里面进行作业的更新 - + 以第一次作业为例,比如你 `fork` 之后你的代码地址为 `git@github.com:ehds/training-plan.git` - + 1. 克隆仓库到本地: - + `git clone git@github.com:ehds/training-plan.git` - + 2. 进入当前实验文件夹`Week1-Databse-Introduction` - + `cd Week1-Databse-Introduction` - + 3. 新建一个自己的文件夹,名字+实验名称,参考 Example - + `cp -r Example DongShengHe-Week1` - + 完善实验文档 Markdown 文件 - + 4. add 作业内容 - + `git add .` - + 5. commit 修改 - + `git commit -m "message"` (message使用英文填写你所做的修改)如 `git commit -m “complete week1 experiment` - + 6. push 分支 - + `git push origin master` 3. 提交 PR - + 在 Gihub 仓库界面新建一个 pull request 到实验室仓库 4. 审核与修改 - + 待审核人审核后,根据修改意见进行修改,待通过后即可 ## 如何提问 diff --git a/SpringTerm-Week13-DataMining/README.md b/SpringTerm-Week13-DataMining/README.md new file mode 100644 index 0000000..2c2c7f1 --- /dev/null +++ b/SpringTerm-Week13-DataMining/README.md @@ -0,0 +1,21 @@ +# SpringTerm-Week13-DataMining +## 数据挖掘常用算法: + +1. 数据预处理算法 + 1. 滤波算法:中值滤波、均值滤波、卡尔曼滤波 + 2. 插值算法:最近邻插值、拉格朗日插值 + 3. 降维算法:PCA +2. 关联分析算法:Apriori、FP-Growth +3. 图算法 + 1. 关键节点:PageRank、k-shell + 2. 社团发现:Girvan Newman、Fast Newman + 3. 频繁子图挖掘:GSpan +4. 序列模式挖掘:PrefixSpan + +## Project +- 数据集:安然邮件数据集 [地址](https://www.cs.cmu.edu/~./enron/) +- 项目要求: + 1. 根据数据集构建安然公司内部邮件网络 + 2. 选择适当的算法分析网络中的重要节点 + 3. 选择适当的算法分析网络中的社团关系 + 4. 对最终的结果进行可视化展示 \ No newline at end of file diff --git a/SpringTerm-Week14-DeepLearning/README.md b/SpringTerm-Week14-DeepLearning/README.md new file mode 100644 index 0000000..ba7cf65 --- /dev/null +++ b/SpringTerm-Week14-DeepLearning/README.md @@ -0,0 +1,35 @@ +# SpringTerm-Week14-DeepLearning +## 常用机器学习算法 + +1. 分类算法 + 1. 最近邻分类 + 2. 朴素贝叶斯 + 3. SVM + 4. 决策树 +2. 聚类算法 + 1. 基于划分:k-means + 2. 基于层次 + 3. 基于密度:DBSCAN + 4. ... + +## 常用深度学习模型 +1. CNN +2. RNN & LSTM + +## Project1 +- 实现手写数字识别 +- 数据集:MNIST数据集 [地址](http://yann.lecun.com/exdb/mnist/) +- 项目要求: + 1. 使用机器学习方法实现手写数字识别 + 2. 使用深度学习方法实现手写数字识别 + 3. 对比两种方法差异及结果 + +## Project2 +- 空气污染预测 +- 数据集:[Beijing PM2.5 Data Data Set](https://archive.ics.uci.edu/ml/datasets/Beijing+PM2.5+Data) +- 项目要求: + 1. 根据历史气象数据,预测接下来一个小时的空气污染状况 + 2. 自己选择合适的预处理方式 + 3. 自己选择合适的深度学习模型 + 4. 使用pytorch实现 + 5. (选做)分析一天中污染较高的时段 diff --git a/SpringTerm-Week15-NLP/README.md b/SpringTerm-Week15-NLP/README.md new file mode 100644 index 0000000..c30730e --- /dev/null +++ b/SpringTerm-Week15-NLP/README.md @@ -0,0 +1,19 @@ +# SpringTerm-Week15-NLP +## 常用深度学习模型: +1. Attention +2. Transformer +3. GAN + +## 自然语言处理基础: +1. 预处理:分词分句、去除停词 +2. 命名实体识别 +3. 情感分析 +4. 预训练模型:Bert + +## Project +- 情感分析 +- 数据集:[Yelp-5](https://www.kaggle.com/datasets/yelp-dataset/yelp-dataset) +- 项目要求: + 1. 使用Yelp-5数据集 + 2. 使用NLP工具,尝试提取数据集中的命名实体 + 3. 基于Bert,选择合适的网络模型,实现情感分析 \ No newline at end of file