关注选课和刷课的人们 / 特稿

好久不见的特稿,我们来关注大学里很重要的教学环节:选课。

(1) 背景

选课,说起来是个需要技术和运气的工作。或许你觉得「不就选个课还要什么技术」,可在十年前,当正方教务系统刚刚开始在我们学校运行的时候,学生们可是得提前看着选课手册,在规定时间,到机房去完成这件神圣的事情。而现在,趴在床上或许就把课给选了。

现在北理工采用的是,必修课由教务处老师预先排定,不能更改,自己选择选修课的方法。这样的选课没有以前那么复杂,然而也还是有人说自己「莫名其妙地」被选上了几门通选课,结果没去上课,自然就挂了。要是不重视,怎么会连教务系统也不去看?那里面可是可以自己退掉必修课的呢。

背景介绍完了,上干货。

(2) 年级分布

我通过公开渠道,拿到了教务系统 2016 年 1 月选课期间的一些日志,并进行了分析。这些日志的内容为:某用户在某时间访问了教务系统的某个模块。

这段时间学生在教务系统上的操作总次数为 1434363 次,学生总数为 13205 人,也就是说平均每个人为了选课,需要在教务系统上进行约 109 次操作。

看看年级分布。图中的年份是入学年份。显然各年级参加选课的学生都差不多,大四选课的人变少了很多。至于平均操作次数也是在逐年递减的,大一的时候对系统不熟悉,大二了还有实验选修课要抢,而大三大四在中关村,应该是用不着“抢”课了。

(3) 时间分布

拿到数据,我首先想关注的是,大家什么时间选课比较频繁。所以上图。

横坐标前两位为日期,后两位为小时数

可以看到几个高峰,每小时访问量超过 20000 次,也就是平均每秒钟超过 5 次操作。

  • 选课第一阶段、第一批次(13 日 10 时 - 15 日 10 时)的开始:其中 13 日 10 - 12 点达到最高峰,逼近每小时 70000 次,相信这段时间系统是最卡的。
  • 选课第一阶段、第二批次(15 日 15 时 - 19 日早)的开始:因为教务处对选课进行抽签的速度比较快,大概 11 点就出结果,可以再次选课了,所以系统在中午 12 点到下午 5 点这段时间访问量非常大。
  • 选课第二阶段(19 日 14 时 - 21 日早)的开始:这个阶段与第一阶段不同,是要抢课的,流量自然会很大,14 点的访问量达到 50517 次。不过跟选课刚开始比还是小巫见大巫。

我们学校的选课安排特意在第一阶段使用“抽签”的方法,这样相对也公平,教务系统的负担也没那么重。理论上说这个阶段能不能选到课,跟时间是没有关系的,但是第一阶段的流量依然很大。

你会想,是不是大一初来乍到,还不仔细看通知吗?于是我特意把大一的数据选出来,结果如下。

大一(橙色部分)在第一阶段高峰时期的访问量的确占到了将近 50% ,但是在抽签模式下“抢先”的状况绝非是大一信息不畅的结果,大一不背这个锅。有趣的是,大一们觉得自己可以在第二阶段抢到一些课,而学长学姐们显然已经对抢课不积极了,倒是特别喜欢自由“退换课”的时间。

(4) 看看夜猫子

你或许会留意到,第二阶段的凌晨时分,教务系统的访问量也不少。良乡不是断网了吗?这又是什么鬼呢?

首先,你要知道,中关村校区、一些 WiFi 和 VPN 都可以在凌晨访问校园网。

我特意筛选出了一批夜猫子,他们在选课期间的凌晨(0 - 6 时)访问次数超过上面我们提过的平均值 100 次。

注意,2014 级的最多。而且夜猫子有个特点:寂寞。他们的平均操作次数是大众水平的 1 - 2 倍,甚至 2014 级达到了平均 597 次。

不对啊,597 次,你大半夜的就干这个?

这个有趣的数字引起了我的注意,为了更好地了解一些夜猫子的情况,我在这其中挑了几个用户,深入挖掘他们的访问情况。

我首先计算了一下,每个用户在凌晨时分访问的比例,然后排了个序。排在前面的比例大概是 70%(也就是这个用户有 70% 的访问都是凌晨进行的),几个人都是大三,这也比较符合逻辑(大三在中关村不断网)。

我挑了一个 **20132**1 的用户。他在 13 日和 15 日白天分别进行了选课,这两个时间是新的选课阶段开始的时间。而他凌晨的操作都集中在 20 日,他花了 15 分钟时间,刷通选课。

他的最后几条访问记录

我们也看不出来他到底有没有选到自己想要的课。

另外几个大二的记录也是如此。我可以想象他们在黑暗中,无聊而充满希望地刷新着页面,看看有没有捡漏抢课的机会。然而他们坚持了十几分钟,就决定歇会,要不 2 点的时候再试试?

(5) 接近刷课党

你也注意到了,为什么晚上会有机会”刷到课“呢?

总会有同学之间想交换自己选到的课程的情况。大概的做法是,在”先到先得“的选课阶段(不抽签),A 先把课退了,就有一个空位,B 马上再选课,就完成了换课的过程。

然而,这个过程如果在人多的时候做,自然不安全,要是课被别人抢走了呢?所以自然是大多数人都睡觉的时候来换课咯。

当然也可能有一种情况,翻来覆去睡不着,终于想定了,这门选修课我不上了。打开电脑把课退了,然后睡个安心觉。

还记得大二平均值接近 600 次的情况吗?我挑了夜间操作次数最多的一位同学出来,他是 **20142**1,来自软件学院。然后我就看到了下面这一幕。

接近 4 点,这位同学还醒着,然后就开始刷通选课了。他的操作相当有规律,平均 2 秒提交一次请求,看起来似乎是浏览器的自动刷新。也就是说,换课的同学如果没法在 2 秒钟内完成操作,你的课就会被别人收了。

而另外的几位同学,根据操作间隔,看得出是手工刷新的。的确人家也是想用自己的一点勤奋,来拯救自己的运气。

(6) 可怕的技术宅

究竟刷了多少次可以定义为刷课呢?我拉了各年级的操作次数分布图出来。

横坐标为操作次数,纵坐标为人数

基本上,超过 1000 次的都算作是比较不正常的操作了。注意到大一大二的峰谷位置差不多,而大二的“长尾”很明显,毕竟大二的课程需求比较迫切。大二超过 1000 次操作的人一共 37 个,这部分的操作次数平均值为 3405,标准差 3410。

在刷课这个行当里面,最可怕的,莫过于借助“自动”工具的暴力刷课了。比如刚才我们看到的浏览器自动刷新。

为了直面现实,我查询了一下整个选课期间,操作次数最多的用户,超过 5000 次的,也大概是前五,如下。

用户 总操作次数
**20141**1(信息与电子学院) 15400
**20141**9(光电学院) 12379
**20142**9(软件学院) 10151
**20141**2(信息与电子学院) 9741
**20142**0(软件学院) 6912
**20141**0(信息与电子学院) 6845

注:学院信息是我通过其他渠道获得的,非日志内容,不代表我对任何学院的看法。

可以说,超过 5000 次的都是在刷课,不会冤枉错人。我也一个一个看了,有的是用类似浏览器自动刷新的方法在辅助操作,有的是每秒钟成功刷新五六次(还让不让人活了),最厉害的呢,从下午连续刷新了 7 个小时,肯定是开了挂。

当然了,教务系统没有对刷新频率做限制,这个是很不好的做法。但这也不意味着说,一个网站,亦或系统的用户,可以采用非正常的方法,一秒钟连续刷新页面好多次,无端地增加系统负荷,这叫做“滥用”。想彻底避免道德问题,还是得用技术方法来解决。

(7) 我跟一位刷课党聊了聊

在这次选课之后,也是准备做这个专题之前,我无意采访到了一位刷课党。

我想他是一个萌弟纸,但是他运气特别不好,实验选修课三个学期都没“自然”选上。而且他还准备留学,学分不够多怎么行啊。他也想了很多办法,比如跟熟悉的老师“蹭”实验课,但这种好事也不可能常有。最终今年,他在听了同 (ji) 学 (you) 的建议之后,自己动手码代码了。

结果呢,刷课开始一个小时,他就停下来了,也就是刷到课了。

当然这种事情也不是太光彩,他也是十分低调的。最早呢是他来问我为什么周围同学会有丢课的情况,我试着把日志抓了下来,丢课问题没研究,倒是发现了新大陆。我一个微笑发过去,他就发了个害羞回来。

结果在我没话找话之下,他吐了一会槽之后,我倒是能理解他了。也是心疼这个弟纸。

毕竟他自己也说,下次要是能自己选到课,才不刷课呢。

(8) 关于丢课,还有建议

最近终于抽出几个小时的空闲,研究丢课的问题。根据日志,选课期间没有人为了“偷课”而在短时间内“遍历”超过 50 个人的账号,不过猜密码和抓自己班里成绩的倒是有。

所以如果真的有丢课的情况,更可能是熟人作案。因为有可能是一台电脑大家借着用,校园网的 IP 也是动态分配、可以复用的,所以我没有办法在得到当事人确认的情况下,判定谁在“偷”。

如果你在年初的选课期间遇到了丢课的问题,不妨在下面留言,我跟你私聊看,帮你查查有可能是什么问题。

还是想提醒各位,教务系统很重要,改一下默认密码总比不改安全

而如果你准备换课,我建议你在太阳还没升起之前的一段时间来换,这样是相对比较安全的。换完课了顺便看看日出,多好。至于说退课,随便什么时间都可以退,反正别反悔就是了,你也没机会反悔的。

“关注选课和刷课的人们 / 特稿”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注