|
关注▲ W3Cschool▲,每天一篇文章,与你共同成长
作者丨大狮兄
来源丨W3Cschool(ID:w3cschoolcn)
学习16周的C++后,要求开发出一套几近完美的教学系统,你做得到吗?
最近,这样“奇葩”的事情就在清华大学的自动化系发生了,C++任课老师与助教充分讨论后,决定给2020年大一新生留下一道大作业——开发一款集雨课堂和网络会议优点于一身的网络教学软件。
有网友看了这道大作业的文档后,不禁吐槽:“这是要我学完1+1=2后,证明哥德巴郝猜想啊!”
▌“雷课堂”的功能需求任课老师要求学生开发一个功能更强大的雨课堂,那么这个雷课堂到底都需要什么功能,为什么会让很多工作多年的工程师都束手无策?
很多人对雨课堂可能有些陌生。这个工具是由学堂在线和清华大学在线教育办公室共同研发的,具有制作和推送课件、实时答题、弹幕互动、教学数据分析等功能。
雨课堂中的每一块功能都被分为了多个小功能模块,例如仅仅一个授课功能,就包含了考勤、习题推送、课程红包、随机点名、投稿、小组互评、消息推送、直播等功能模块。
雨课堂功能丰富,并非一朝一夕就能开发完成,而此次的作业要求是“开发一个比雨课堂更强大的教学软件”,这对于刚学习编程不久的大一学生来说,无疑是一个几乎不可能完成的任务。
雨课堂的“增强版”雷课堂需要具备哪些功能?
根据作业文档,大致功能如下:
1. 基本功能要求(*代表教师用户具有的功能)
1.1 用户登录:涉及对用户名密码的存储,以及数据库增删改。
1.2 语音设备选择和切换:用户进入课堂,可自主选择语音输入和播放设备;并可在随时切换。
1.3 共享屏幕*:教师可共享整个屏幕或某个窗口内容给全体同学;可随时切换共享源、停止或再次开始共享屏幕。
1.4 语音直播*:实时音频流传输。
1.5 随机语音提问*:教师可一键随机选择一名同学,被选中的同学的麦克风将被自动打开,并发送给教师和其余全体同学。
1.6 在线发题*:可动态编辑、发送选择题,实时统计选择人数、名单、作答耗时。教师可随时中断发题,但仍需统计上述信息。
1.7 在线答题:学生收到试题时弹出置顶窗口,并计时。提交答案或教师中断发题,才关闭窗口,并将答案和耗时反馈给教师。
1.8 学生签到:进入课堂时自动签到。教师可收到合适学生签到和推出课堂的信息。
1.9 注意力:“雷课堂软件出于焦点窗口状态的时长”,与学生在线时长的百分比。
1.10 上课/下课*
1.11 进入课堂/退出课堂
1.12 麦克风管制
2. 系统设计要求
2.1 除程序主函数和必要的友元函数外,不允许出现任何一个非类成员函数。
2.2 任何不改变对象状态(不改写自身对象数据成员值)的成员函数均需显示标注const。
……
(完整版请在W3Cschool公众号内回复“作业”获取)
作业需求整整3页,涉及语音获取和网络传输、视频音频处理、WinSocket 网络编程、数据库等内容……
很多乙方程序员经常吐槽,甲方爸爸的需求不清晰,然而这件事告诉我们,需求太清晰有时候也不是什么好事,需求清晰固然好,但太清晰了,看了有时候更头大,臣妾做不到啊……
▌任课老师回应在强大的舆论压力下,任课老师不得不对大作业的内容作出回应,并用了将近一个半小时的时间,论证作业选题的合理性。
任课老师解释道,功能实现部分,12个功能只占总分数的20%,全部实现不了,也只会丢失这一部分的分数,本作业的重点在于考察队类的设计。
此外,老师还介绍了一些比较简单的实现方式和时间,例如把GitHub上的加以类层面的改造,只需要50-75个小时就够了。
然而任课老师的解释网友再次提出质疑,75小时的时间完全无法完成,即便75小时的时间可以完成,这意味着大一这一学期剩下的日子里,需要每天用大约两小时的时间去完成这一作业,时间占比过大。
你觉得任课老师的这个作业设计合理吗?任课老师的本意是什么呢?欢迎在评论区留言讨论。
|
|