选题和需求说明

选题说明——编译课程平台

编译课程是计算机学院、软件学院的核心专业课,每年有着400+的学生用户量。现有的编译课程平台使用judge平台开发,在UI布局、实验指导书、评测反馈、评测功能、讨论区设计等方面存在问题。

我们希望设计一个集成学生端和管理端的编译课程平台。

Need 需求

学生用户

学生用户在该产品中占比最高,是课程的主要参与者,主要活动为进行课下学习、讨论交流、完成作业和期中期末考试等。具体需求分析如下:

接收通知

  • 学生用户应当可以接收老师或助教发布的通知,涉及作业题面修改、课程进度公告、考试等,类似下图。
     oo通知界面

查看指导书

  • 学生用户需要查看实验教程,教程需要有检索功能便于定位,类似下图。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hvbeYwvk-1680012039587)(%E9%80%89%E9%A2%98%E8%AF%B4%E6%98%8E%E2%80%94%E2%80%94%E7%BC%96%E8%AF%91%E8%AF%BE%E7%A8%8B%E5%B9%B3%E5%8F%B0%2070525954db234a829e4c867ba2894803/Untitled.png)]
  • 学生用户可能需要一个GPT辅助阅读指导书,进行对话式辅助学习、快速答疑等。
    在这里插入图片描述

查看和提交作业

  • 学生用户需要查看每次作业的要求和截至时间。
    在这里插入图片描述

  • 学生用户可以选择完成不同难度的实验,分别对应三种目标代码。学生用户需要选择自己提交的目标代码版本(llvm、mips或者pcode)

查看评测反馈

  • 学生用户需要查看提交作业的得分情况和具体的反馈信息,类似下图。
    在这里插入图片描述

  • 对开放测试的的评测结果,学生用户需要对比自己答案和正确答案,类似下图。
    在这里插入图片描述

性能排序(针对最后一次作业)

编译课程在实验的最后阶段有需要性能排序的竞速作业。

学生用户的需求为:

  • 查看最近一次提交的作业性能在总榜单中的情况,分析优化空间。如下图。
    在这里插入图片描述

  • 查看最近历次提交在各个测试点中的性能变化情况,分析优化效果。如下图。(由于需要看对比,学生需要确定自己当前提交的名称)
    在这里插入图片描述

讨论区

  • 学生用户可以在讨论区发帖、查看已有帖子、将帖子按tag分组筛选等,类似下图。
    在这里插入图片描述

管理员

本部分主要阐述助教/教师用户(下文统称为管理员)的需求,由于学生用户和管理员共用一套前端,管理员用户应当能看到学生看到的内容,并额外拥有删改权限。

发布通知

  • 管理员需要发布通知,涉及作业题面修改、课程进度公告、考试等。

用户管理

  • 管理员需要批量导入学生信息
  • 需要课程管理功能,区分不同年份的课程,以便平台持续使用

教程管理

  • 管理员需要新增、修改、删除、查看教程

作业/考试管理

作业与考试需求一致不做区分,统称为作业。管理员需求如下:

  • 增删改作业,包括增删改题面、测验题目、评测点、起始截止时间
  • 应对特殊情况,对特定的学生用户修改起始截止时间
  • 修改评测分数,文档类作业评测结果默认100,其他评测结果按公式计算,管理员有权修改评测得分。
  • 对于竞速作业,管理员应当有权设置排序规则

统计数据

  • 管理员需要查看学生用户的作业进度,作业情况,成绩分布
  • 支持画图等统计方法直观展示,并支持导出

评测管理(成绩管理)

  • 管理员用户需要查看学生用户的提交记录,若出现评测问题可以及时溯源,类似下图。
    在这里插入图片描述

讨论区

  • 管理员需要对讨论区的内容进行审核与管理
  • 管理员需要将指定帖子加精或加助教认证
  • 管理员需要置顶某些重要帖子

评测功能

  • 平台需要对学生用户的提交进行评测并给予反馈
  • 需要较高的评测效率,需要较强的承压能力

Approach 方法

通知

一个可以分类筛选不同通知的版块,学生有查看权限,管理员有查看和修改权限
在这里插入图片描述

指导书

具有章节索引和目录,以及搜索功能。使用markdown编写,前端渲染。

右侧可以添加训练好的编译bot,使用ChatGPT API,提供交流对话的方式学习,同时对教程中不清晰之处进行简要快速的答疑。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

作业

一个显眼的选择框来确认提交语言为mips/llvm/pcode,避免学生用户错交。提交界面UI清晰。

页面设置导航栏,可以在介绍、测验、评测间切换查看,类似下图。
在这里插入图片描述
在这里插入图片描述

作业反馈

评测首先应当反映评测分数构成、评分方法与原则、晚交扣分机制、提交的文档也应当将分数进行反馈。

提供开放测试点的编译命令,测试结果,标准答案,学生答案的下载。减少前端评测结果比对显示量,防止浏览器卡死
在这里插入图片描述

竞速作业

提供两个视图:

  • 第一个是所有用户最新提交排名,用于和其他人进行逐case对比(不给出具体testfile的rank, 只提供排序)
    在这里插入图片描述

  • 第二个显示该用户近5次提交testfile记录,全部的提供下载为csv文件(由于需要看对比,学生需要设置自己每次提交的名称)
    在这里插入图片描述

讨论区

学生端管理端看到的一样,权限不同。

支持讨论区加精、发帖次数统计、看到往届讨论区、置顶讨论区(参考oo),支持讨论区分类、搜索功能
在这里插入图片描述

成绩分析

普通用户可以查看自己历次成绩并统计绘图。

管理员用户可以统计所有/指定学生成绩,并导出为csv等常见表格格式。管理员用户还应当可以查看题目通过率、测试点通过率等。
在这里插入图片描述

评测及管理

我们希望通过Go实现高并发,并使用docker容器保证安全性,最终实现一个分布式可扩容的评测机。

Benefit 好处

管理员用户

  • 管理:对各部分的管理(通知、讨论区、作业题目等)更合直觉、更容易统计使用不同开发语言、使用mips/llvm/pcode的人数比例
  • 统计:学生成绩、测试通过率可以绘图直观统计
  • 迭代:提供了迭代学生届数的功能,保存了多届学生的讨论区及成绩数据

学生用户

  • 通知:通知形式更加直观且便于分类查看
  • 指导书:比起pdf指导书,网页版提供了更好的检索定位功能;提供了GPT对话交流,指导书阅读更方便。
  • 讨论区:使用md编辑器,比富文本编辑器更加方便
  • 作业:deadline更明显、模块划分更清晰、可以直接从作业进入对应的讨论区更方便讨论,更容易选择自己的使用语言及中间代码
  • 评测:评测速度更快
  • 评测结果反馈:评测结果展示更加合理清晰

Competitors 竞争

唯一竞品就是编译judge平台,在上述需求场景下都有较大问题,会被我们的平台爆杀。以下以对比的形式给出judge平台和本平台在学生用户需求场景下的实现对比。

接收通知

  • judge
    无通知功能,依靠微信课程群通知

  • 本平台
    消息可以按tag筛选、折叠、分页
    在这里插入图片描述

查看指导书

  • judge
    指导书只能以pdf方式下载,下载位置很刁钻。同时pdf不易定位检索。
    在这里插入图片描述

  • 本平台
    指导书提供pdf下载与网页浏览两种方式,网页浏览可以检索定位,同时有GPT辅助学习、快速答疑。
    在这里插入图片描述
    在这里插入图片描述

查看和提交作业

  • judge
    题面和评测信息混杂,题干要求不集中,阅读体验差
    在这里插入图片描述

  • 本平台
    作业题面、测验、评测分栏展示,功能解耦
    在这里插入图片描述

查看评测反馈

  • judge
    评测界面反馈较长、不直观,体验较差
    在这里插入图片描述

  • 本平台
    清晰看到评测得分、时间、各个评测点的正确性,点开还能进一步和正确结果进行比较。
    在这里插入图片描述
    在这里插入图片描述

性能排序

  • judge
    besttestfile无意义
    在这里插入图片描述

  • 本平台
    删除judge无意义的besttestfilex、新增了个人历次提交的性能变化视图
    在这里插入图片描述

讨论区

  • judge
    没有检索分类分页功能、没有加精认证等功能。UI布局不好看。发帖只能使用富文本编辑器。
    其优点在于可以查看到往年的讨论帖。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 本平台
    可以从每次作业或者左侧sidebar进入讨论区,讨论区提供不同tag供筛选,助教可以加精认证。
    在这里插入图片描述
    在这里插入图片描述

评测功能

  • judge
    现有的judge平台存在以下问题:
    - 服务器资源,由于北航有不少课程都选择judge平台,所以在进行大量评测的时候可能会导致平台崩溃,例如我们大一数据结构考试的时候遇到大规模查重,导致课程平台崩溃,2019级学生进行期中考试的时候有过一次提交需要等大量时间的情况
    - llvm版本不对。大部分同学在完成llvm生成时使用的都是llvm10以上的版本,而评测机的版本似乎是llvm6.0,导致有很多本地能过但是交上去评测不过的问题
    - 评测文件名的问题。现有的评测机批量上传测试点的时候只能从1开始,且中间不能有隔断的测试点
    - java和cpp的识别有问题,当cpp工程多压缩了一层文件夹之后会被识别错误
  • 本平台
    我们在解决以上问题的基础上,通过Go实现高并发进行提速,并使用docker容器保证安全性,最终实现一个分布式可扩容的评测机。

Delivery

可以通过部分20级学生体验功能进行对比、编译课程老师体验功能、开放部分21级学生提前感受课程平台等。预期规模可以达到100-200人。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部