Compilify Beta阶段软件发布声明
Compilify编译课程平台 发布啦!本平台是一款用户友好的、用户管理一体化的课程平台,现行发布版本提供了课程公告、课程作业、小测、提交评测、 竞速排序、课程资料、个人中心、用户管理、课程管理、讨论区、通知、有AI对话的课程指导书等功能,期待您的使用反馈!
新功能特性
现行发布版本对学生用户提供了一系列基本功能:
- 个人相关
- 登录登出(注册方式见下方安装使用方法)
- 修改邮箱密码(其他信息不提供自由编辑,需联系助教/管理员修改)
- 公告相关
- 查看课程公告
- 资料相关
- 查看下载课程资料
- 作业相关
- 查看作业介绍、测验、评测
- 提交小测、查看小测答案
- 提交评测、获取评测结果、下载提交、查看详情
- 讨论区
- 创建、修改、删除讨论帖
- 根据 tag 关键词查找、筛选讨论帖
- 订阅、点赞讨论帖或回复
- 加精、助教认证讨论帖
- 即时通知
- 添加、删除、编辑、发布通知
- 未读通知标记提醒
- 确认阅读通知,筛选未读通知
- 作业指导书
- 查看作业指导书
- 向ChatGPT驱动的chatbot询问指导书对应内容
在学生用户的基础上,对管理员用户进一步提供了用于管理的基本功能:
- 用户管理
- 添加删除用户
- 修改用户信息、重置用户密码为默认值
- 课程管理
- 添加修改删除课程
- 添加删除课程开放用户
- 公告管理
- 修改删除课程公告
- 资源管理
- 添加更新删除资源
- 作业管理
- 添加删除作业、修改作业题面
- 创建更新删除小测
- 延长作业时间
- 评测管理
- 添加更新删除评测
- 添加更新删除数据点
- 上传测试点文件
- 成绩统计分析
- 根据班级和作业查看学生成绩分布
网页布局
页面主要由三个部分组成:顶栏、侧边栏和页面主体。
课程公告
实现需求
- 管理员增删改公告
- 用户查看公告
- 课程公告支持 markdown 渲染,可折叠,支持上传图片。
管理员视图
紫色部分为管理员增删改公告 UI,用户视图下不可见。
修改公告
普通用户视图
查看课程公告
应用场景
新一周的编译课程开始了,同时也到了新一次作业的开启时间。S 老师在课程平台上发布了新的课程公告,通知大家新一次作业的起止时间。B 同学很快从首页公告栏处得知了新作业和DDL,他打算立即开工。
课程作业
实现需求
- 管理员增删改作业、作业描述、作业时间,单独配置作业延时
- 用户查看作业
管理员视图
管理员可以看到所有作业。
管理员创建作业,支持 markdown 渲染
管理员通过右下角的悬浮球配置作业,包括编辑作业描述、删除作业、单独配置延时。
单独给某位用户延长时间。
用户视图
用户只能看到已激活的作业。
用户查看作业描述
应用场景
B 同学打开作业要求页面仔细阅读,但还是感到一些要求在细节上有些模糊。H 助教也因此关注到了这个问题,H 助教 修改了原先不清晰的作业要求。B 同学继续开心的做作业。
小测
实现需求
- 管理员增删改小测,配置选项和正确答案。
- 用户查看小测,做题、提交、查看做题结果。
管理员视图
用户视图
应用场景
为了加深同学们的对题面的理解,确保同学们注意到了作业要求细节,H 助教为作业设置了小测题目。
B 同学看完作业要求后,马上把小测都做完了,并进行了提交。页面上立即出现了小测结果,错误的题目会显示正确答案。B 同学对照答案后,更加深刻的理解了作业要求,他非常高兴的继续做作业。
提交评测
实现需求
- 管理员增删改评测,给评测添加测试点,配置测试点文件和 json
- 用户选择文件提交评测,确认提交类型和语言。
- 用户最后一次提交结果反馈,查看评测结果详情,下载最后一次提交的文件。
管理员视图
用户视图
应用场景
B 同学顺利的完成了作业。在提交作业时,B 同学先使用公开的辅助评测尝试提交。评测机很快给出了评判结果,果然没有一次通过。评测机提供了错误信息的前五行,B 同学为了查看详细错误信息,下载了标准输出和学生输出作为对比,并使用平台给出的编译命令复现错误。很快,B 同学找出了错误,改正后,他决定提交正式评测。由于初次接触编译实验,B 同学打算先完成较为简单的 PCODE 实验。在提交之前,平台提示他选择作业类型。确认作业类型无误后,B 同学提交并通过了评测。看到成绩一栏中出现了本次作业的有效成绩和折算成绩后,B 同学满意的关掉平台,睡大觉去了。
竞速排序
实现需求
- 用户查看竞速作业中的排名
- 用户查看历次提交的分数及对应的提交备注
- 用户导出竞速排序和提交记录的表格
用户视图
应用场景
激动人心的 MIPS 赛道竞速作业终于开启了,A 同学早就蓄势待发,第一时间提交了作业。果不其然,A 同学在排行榜上名列前茅。看着随排行榜实时更新的竞速成绩,A 同学十分满意,去学别的课了。
一段时间后,A 同学看到自己的排名位次逐渐下降,他决定进行进一步优化设计。通过查看历次提交的提交备注和性能详情,A 同学观察到了提升方向。一番修改后,A 同学添加了新的强力优化,并在提交时备注优化方便之后查看。A 同学再次查看历次提交性能记录,看到了各个优化的具体效果和不同优化组合带来的性能变化。A 同学十分满意,去学别的课了。
课程资料
实现需求
- 管理员增删课程资源
- 用户下载课程资源
管理员视图
用户视图
应用场景
写总结报告的时间到了,为了给大家一些方向,H 助教上传了往年的优秀报告供大家参考。A 同学看到后,立即进行下载。参考了往届优秀学长学姐的报告,A 同学的报告内容更加丰富起来,方向更加明确,最终提交了一份优秀的报告!
个人中心
实现需求
- 用户查看自己的用户信息
- 用户修改密码
- 用户修改邮箱
- 用户上传头像
- 用户切换课程
用户/管理员视图
应用场景
新的学期开始了!B 同学由于对上一学年的编译课程成绩不太满意,他今年决定重修编译课程!B 同学登陆了熟悉的账号,确认自己的信息无误后,将自己的课程切换到了新一年的编译课程。新年新气象,B 同学给自己挑选了新头像,并修改默认密码为自己的常用密码。做完这些,B 同学满意的退出登录,期待新一年能有更好的编译成绩!
讨论区
实现需求
- 用户发帖、根据关键字和tag搜索讨论、编辑自己发布的讨论
- 用户关注、点赞、回复帖子
- 管理员管理tag,置顶、加精、编辑讨论,认证、编辑回复
用户视图
管理员视图
应用场景
在完成作业的过程中,同学 B 对作业中的要求有些不确定,他在讨论区进行了发帖提问,并添加了对应作业的 tag。正巧今日助教 H 值班,他通过筛选 tag 来查看同学们关于当前作业的帖子,注意到了 B 同学的问题。他在 B 同学的帖子后进行了答疑回复,并添加了助教认证证明信息的真实性。带有助教认证的回复解决了 B 同学心中的疑惑,B 同学给助教 H 的回复点赞,继续开心的写作业去啦。
A 同学是一个乐于分享的同学,他将完成作业的经验和自己的优秀编译器架构总结成了帖子发到了讨论区的对应 tag 中。B 同学在编译器架构设计上迟迟找不到方向,通过搜索“架构设计”看到了 A 同学的分享。B 同学认为他的的帖子内容详实,看完后大彻大悟,给 A 同学的帖子点了一个大大的赞,并回复和订阅了 A 的帖子,表达对这篇帖子的赞美。优秀的内容吸引了更多的同学在帖子后回复讨论,同时也让助教 H 眼前一亮。助教 H 将这篇帖子设置为精品帖,便于同学们筛选有效信息。
即时通知
实现需求
- 用户接收、查看课程通知,并设置已读
- 用户接收、查看讨论区关注帖子更新的通知
- 管理员创建、编辑、删除、发布通知
用户视图
讨论区
实现需求
- 用户发帖、根据关键字和tag搜索讨论、编辑自己发布的讨论
- 用户关注、点赞、回复帖子
- 管理员管理tag,置顶、加精、编辑讨论,认证、编辑回复
用户视图
管理员视图
应用场景
在完成作业的过程中,同学 B 对作业中的要求有些不确定,他在讨论区进行了发帖提问,并添加了对应作业的 tag。正巧今日助教 H 值班,他通过筛选 tag 来查看同学们关于当前作业的帖子,注意到了 B 同学的问题。他在 B 同学的帖子后进行了答疑回复,并添加了助教认证证明信息的真实性。带有助教认证的回复解决了 B 同学心中的疑惑,B 同学给助教 H 的回复点赞,继续开心的写作业去啦。
A 同学是一个乐于分享的同学,他将完成作业的经验和自己的优秀编译器架构总结成了帖子发到了讨论区的对应 tag 中。B 同学在编译器架构设计上迟迟找不到方向,通过搜索“架构设计”看到了 A 同学的分享。B 同学认为他的的帖子内容详实,看完后大彻大悟,给 A 同学的帖子点了一个大大的赞,并回复和订阅了 A 的帖子,表达对这篇帖子的赞美。优秀的内容吸引了更多的同学在帖子后回复讨论,同时也让助教 H 眼前一亮。助教 H 将这篇帖子设置为精品帖,便于同学们筛选有效信息。
即时通知
实现需求
- 用户接收、查看课程通知,并设置已读
- 用户接收、查看讨论区关注帖子更新的通知
- 管理员创建、编辑、删除、发布通知
用户视图
管理员视图
应用场景
语法分析作业快要截止了,助教 H 发现部分同学进展较慢,希望单独通知提醒他们加快进度。助教 H 撰写好通知内容,添加好通知人。在发布前,助教 H 检查并修改通知中的错误。确认无误后,助教 H 发布了通知。
此时,B 同学正努力阅读课程平台上的指导书,看到页面右上角的消息图标出现了两条新消息提示。B 同学点开一看,其中一条来自课程组的 H 助教,提醒他尽快完成作业,另一条来自讨论区订阅提醒,B 同学关注的帖子更新了!这条更新内容给 B 同学带来了很大启发,B 同学确认已读了通知,继续完成作业去啦。
管理部分
用户管理
实现需求
- 全局管理用户
- 实现用户的增删改查
- 增:
- 从csv、xlsx的批量导入,可以选择为该批用户添加统一的课程id
- 单独添加两种方式
- 查:对每个字段进行模糊搜索
- 增:
管理员视图
应用场景
H助教想要查看所有20级的用户,于是进入用户管理界面,在年级一栏的搜索框中输入2020进行检索。H助教突然发现,A同学的专业不对,于是点击编辑,修正了A同学的信息。接着,H助教导通过使用右下角按钮的批量导入功能,在表格中添加了2021级的新用户们。表格长了许多,H助教通过调整表格的分页,让界面看起来更清晰了一些,同时把右下角的管理按钮拖到了不碍事的地方。B同学向H助教反映自己无法登陆,于是H助教在表格中进行检索,发现B同学确实不在用户列表中,于是单独添加了B同学的信息。
课程管理
实现需求
- 管理所有课程的增删
- 各个课程的基本配置
- 修改课程名称
- 增删课程所包含的学生
管理员视图
应用场景
为做好新一学期课程的准备,H助教打开课程管理界面,新增了一个名称为“2023编译技术”的课程。但是——H助教想起了去年上课的场景,手抖打成了“2022”,于是急忙点击修改课程,输入了课程的正确名字。通过用户管理的批量导入功能,H助教把21届的学生们都添加到了课程中。经过人数的核对,并利用便捷的按列模糊搜索功能,H助教发现有重修的B同学没能进入这个列表,于是手动添加了该学生到课程中。
提交记录表
实现需求
- 管理员查看所有评测记录
- 实现多字段模糊搜索
管理员视图
成绩管理
实现需求
- 管理员根据班级和作业查看学生成绩分布
管理员视图
应用场景
学期即将结束,S老师想要看看自己班里的同学们作业都完成的怎么样了,于是点开成绩分析,按照班级对学生的成绩进行筛选检索。看完后S老师决定把信息存下来,于是点击“导出”按钮,获得了该次查询的表格;点击柱状图上方的下载按钮,获得了该次查询的成绩分布图。
修复缺陷
评测缺陷
alpha阶段评测机错误处理不完善,会导致主进程容易崩溃,严重影响产品的核心功能。在beta阶段我们完善了评测机的错误处理流程,确保当用户提交不符合规范时,该次评测能正常运行完毕,并记录错误日志,将错误信息写进数据库然后返回给用户。
运行环境要求
以下操作系统及浏览器版本测试未发现问题,运行所需最低版本尚未确定。
操作系统 | 浏览器版本 |
---|---|
macOS 13.3.1 | Chrome 112.0.5615.137 |
macOS 13.3.1 | Safari 18615.1.26.11.23 |
macOS 13.3.1 | Firefox 112.0.1 |
macOS 13.3.1 | Edge 112.0.1722.58 |
Windows 10 19044.2846 | Chrome 105.0.5195.127 |
Windows 10 19044.2846 | Edge 112.0.1722.58 |
安装使用方法
- 所有账号由课程管理员(老师或助教)创建,不允许自行注册。
- 联系课程组可获取正式账号或开发账号,用于登录正式版本或内测版本;联系开发团队只能获取开发账号,用于登录内测版本。
- 申请账号后即可登录并按照上面展示的方法使用系统。
系统已知的问题和限制
- 由于校内环境的特殊性,暂时没有域名