实验说明
代码位置
对于基础功能,仅需要正确补充填空区域的代码,实现对应的功能即可。 各次实验的填空区域均进行了注释,以LAB 1为例,仅需要在如下区间内填充代码即可。
// LAB 1 BEGIN
// LAB 1 END
各位同学仅需要搜索对应的注释"// LAB N BEGIN"即可快速定位补充代码的区域。
更新说明
实验框架可能会有更新,此时需要将实验框架更新部分添加到当前的实验框架上。为了新增一个远程仓库,在你的 dbtrain-lab 仓库目录下执行:
git remote add upstream git@git.tsinghua.edu.cn:dbtrain/dbtrain-lab-template.git
之后每次需要拉取新的分支时,执行
git fetch upstream
然后再将更新的分支并入你的代码,例如将 upstream 的 master 分支以 merge 方式并入当前分支,执行
git merge upstream/master
merge 后可能产生冲突(如果你和上游仓库对同样的地方进行了不同的修改),这种情况请手动解决所有冲突并执行 git 的 add 和 commit 指令完成合并。
提交说明
评测通过 CI 进行,每当你在 master 分支上 push 更新时,评测机会自动将仓库的 src 文件夹进行编译,然后运行测试脚本进行测试。
不要私自修改 .gitlab-ci.yml 文件。
评测机环境为 Ubuntu 22.04,各工具版本如下:
cmake 3.22.1
make 4.3
g++ 11.3.0
flex 2.6.4
bison 3.8.2
第 N 次实验截止后发布第 N + 1 次实验,防止出现提交错误。
第 N 次实验截止后发布一个 10 天的作业补交窗口。
作业仅需要提交对应版本的 commit id 以及实验报告,commit id 直接使用提交窗口的输入框提交,报告以 pdf 形式通过附件提交。
补交说明
CI 评测默认情况下只会进行当前阶段实验的测试,如在 lab 3 实验阶段会对 lab 1 至 lab 3 的相关测试进行评测,因此,若在 lab 2 补交阶段(同时也是 lab 3 实验阶段)才完成 lab 2 的实验,则会导致评测结果失败。
对于在 lab 3 实验阶段补交 lab 2 实验的同学,如想要只进行 lab 1 和 lab 2 的评测,可在实验仓库根目录下新建 LAB.txt 文件,文件内容为 2,表示想要进行 lab 2 阶段的测试,评测机会读取 LAB.txt 文件内容进行 lab 1 和 lab 2 相关测试。后续实验补交流程同理。
高级功能
高级功能不要求严格按照各次实验文档给出的推荐选项,只需要选择老师课程讲解过程中与实验相关的知识即可。
高级功能的添加要尽可能设计对应的测试用例,可以使用 SQL 测例,也可以使用 google-test 等工具进行单元测试。
高级功能的总评为 3 分,只需要给出一个合理的设计也能获得部分分数,但是希望取得高分则必须实现一些有挑战性的功能。
评分说明
每次实验 20 分,五次实验共 100 分。
对于每次实验:
- 15 分是自动化测试的结果,通过所有测试即可得到满分,可在 gitlab 的 CI 中查看测试结果。
- 2 分是实验报告分,具体见报告说明。
- 3 分是高级功能分,具体见每次实验的高级功能说明。
报告说明
内容要求
报告需要至少包括如下内容:
- 基本功能的实现难点。
- 实现每个功能大致用了多少时间,实验总耗时多少(该条仅用于课程调查,不影响评分)。
- (可选)高级功能的设计与实现方式,以及代码对应的分支和commit id(如果有的话)。
报告格式
- 要求为 pdf 格式。
- 没有具体内容模板,但是建议从报告结构上突出重点内容,例如采用标题突出段落重点。
- 不要直接将大段代码复制到报告中。
- 报告不要过长,过于冗长的报告可能会影响你的分数。
- 可以使用标准的示意图来展示自己的设计,不要使用过于抽象的手绘示意图。
BUG Report
对于实验框架的BUG可以在网络学堂的课程讨论区进行发布,方便其他同学查看。此处给出BUG Report的标准格式。
【重要BUG】\【一般BUG】
位置: xxx.cpp(文件名) 117(debug分支中对应起始行号)
说明: ......(简要的说明文字)
(如果有补丁文件,直接利用git diff创建补丁,置于附件中即可)
git diff补丁文件制作方法教程:
## 建议每次修复BUG重新建立分支
git checkout -b debug-patch(任意分支名)
## 修复BUG
git add .
git commit -m "Fix a bug in ..."
git diff debug > xxx.patch(任意patch名)
## 提交xxx.patch文件到讨论区
其他说明
1.时间规范
各位同学需要严格按照各个实验的截止时间完成各次实验任务,对于没有按时完成实验的同学会在实验得分上收到一定影响。 迟交实验具体的惩罚措施如下: 迟交成绩 = MAX(0, 实际成绩 × (1 - 0.1 × 迟交天数))
2.诚信规范
各位同学一定要独立完成各次实验,本课程鼓励同学们思想上的交流,但不建议同学们直接进行代码交换,也不要抄袭往届学长学姐的代码。如果发现严重的代码雷同,可能会面临助教谈话甚至于实验记为0分的风险。
3.保密规范
各位同学一定不要将本实验放到公共仓库上。