如何完成大作业

我们的目标是实现一个 Mini-Lisp 语言的解释器。为了达到这个目标,本文档将整个过程划分为多个 Level,每个 Level 实现一小部分功能,一步步达到预期的结果。

凡事开始之前……

准备工作是必须的。我们在 前置知识 中列举了为了完成这份作业所需要的必要知识点。这其中主要包括:

  • C++ 的面向对象风格编程(这是前半学期的授课内容);
  • Lisp 编程语言大致是什么东西;
  • Git 的使用
  • 调试器的使用(推荐了解,不做要求)。

如果你《计算概论》基础扎实且前半学期的作业按部就班地完成了,那你只需要阅读一下 Lisp 教程open in new window 就可以了。学习之后,我们建议你试用一下 Lisp 语言;比如下载一个 Racket,写一写,有一个基本的感觉。

随后,我们就可以开始动笔写代码了。

写代码

正如开篇所述,我们代码的编写分为若干个 Level。首个 Level —— Lv.0,则会提供给你现成的框架代码,你需要阅读并回答一些问题。接下来的 Lv.1 到 Lv.7,则会引导你亲自编写代码,直到完成我们的作业目标。最后的 Lv.7+,提供了一些扩展的方向和思路,供学有余力的学生进一步努力。

除 Lv.0 外,每一个 Level 都有配套的“测试方法”,来检测你是否正确完成了当前 Level 的要求。此外,为了督促同学们有计划地完成各个 Level,我们在每一个 Level 结尾给出“阶段性检查”的方法。我们要求同学们定期按照阶段性检查的说明,提交对应的材料到教学网。

提交 Lv.7 的阶段性检查即视为你完成了大作业;该检查的通过测试的比例将作为你的大作业分数的一部分硬性指标。

测评

在完成大作业之后,请按照中作业文档open in new window中的指示,将你的 GitHub 用户名GitHub 仓库名和生成的用户令牌提交到教学网中。

除此之外,如果你实现了 Lv.7+ ,请提交一份报告,说明其中添加的扩展功能和实现思路。

除了 Lv.7 阶段性检查之外,在截止日期之后我们还将进行额外的测试,该测试的通过率也将作为你大作业分数的一部分。因此,请不要更改最终可执行文件的生成路径和名称

TIP

由于大作业脚手架刚刚更新,如果有同学在此之前就下载了脚手架并已经开始写代码了,请重新下载脚手架并把其中的 .github 文件夹复制过来。

由于自动测试使用 main 分支进行,请把主分支名称设为 main ,具体的设置方法请看 Lv.0 中的教程。如果 Lv.7+ 中添加的额外功能导致行为无法符合文档规约,请把 Lv.7+ 放在一个不同于 main 的分支上。

我们会综合各种因素,包括自动测试通过率、代码结构、代码风格、创新点,以及阶段性检查的提交情况,甚至所有同学的整体得分情况,来设置或调整最终的分数计算方法。

另外,请不要借鉴其他同学代码或者往年代码,我们会进行查重,抄袭的同学会受到严肃处理。


准备好的话,就开始写代码吧~

Last Updated:
Contributors: 1-rambo