如果学习能像游戏一样好玩,那该多好。学生开心,老师也不用发愁了。游戏为什么好玩呢?
我的经验,好玩的游戏至少要具备如下几个元素中的一个或多个:
- 由浅入深的挑战
- 输了再来
- 成就感
- 梦想成真
- 有趣的情节
- 漂亮的画面
应该还有其它元素,欢迎来访者补充。后续文章中,我会逐条想象如何在教学中体现出这些元素。
如果学习能像游戏一样好玩,那该多好。学生开心,老师也不用发愁了。游戏为什么好玩呢?
我的经验,好玩的游戏至少要具备如下几个元素中的一个或多个:
应该还有其它元素,欢迎来访者补充。后续文章中,我会逐条想象如何在教学中体现出这些元素。
操作系统教学中,我经常向学生灌输一个观点,就是不要对操作系统的知识太“较真”,因为这东西本身就完全是人造的,没有任何自然定律支配它,所以什么是对,什么是错,咋说都有道理。学操作系统的关键在于要领会精神,了解细节,但不要纠缠细节。比如,我们都知道操作系统提供给应用程序的接口是“系统调用”,这个貌似没有争议。但如果硬找麻烦的话,对于像DOS和一些嵌入式OS等不区分用户态、内核态的,应用程序除了系统调用,还可以直接读写内核空间里的数据,直接调用甚至修改内核里任意一条指令;对于Java OS(别讨论它是不是OS,因为OS压根没有精确的定义),应用程序和系统之间的接口是Java API,根本到不了系统调用的级别。
所以,我认为机械的选择、判断题根本不适合操作系统这个博大精深的东西,很难经得起推敲。甚至于说,操作系统根本不适合被考试,不适合用简单的“对”和“错”来评价一个学生对这门学问的理解。最近拿到了2010年考研统考题的真题和官方标准答案,从中找到了不少刺,再次证明了我的观点。摘录几个:
23题:
下列选项中,操作系统提供给应用程序的接口是
A. 系统调用 B. 中断 C.库函数 D. 原语
标准答案是A。
挑刺:
24题:
下列选项中,导致创建新进程的操作是
I. 用户登录成功 II. 设备分配 III. 启动程序执行
A. 仅I和II B. 仅II和III C. 仅I和III D. I、II和III
标准答案是C,仅I和III。
I.的挑刺:
II.的挑刺:
III.的挑刺:
45题:
题目太长,不敲了,是关于C-SCAN算法的。这道题刚考完试的时候,就有考生提出了质疑。这个考生能在高压力的考试情况下看到这一点,很厉害。这个争议的根源在于对C-SCAN算法描述的差异。统考的事实标准参考书(汤子瀛编著)里,说C-SCAN扫描的最远点是有访问请求的点,还有些资料(我查阅了《Operating System Concepts》,wikipedia)里说C-SCAN扫描的最远点是磁盘边界。汤式C-SCAN在这些资料里叫C-LOOK。虽然描述不同,但他们都是对的,思想上是一致的。46题涉及的Clock算法也有类似问题。这并不是问题,因为真正研究操作系统的人都不是学究,不会追求与教科书保持一致,会根据自己的需要去改造、创造算法。但在考试中,这就是问题了。不看汤本的学生,在这道题上会多少遇到一些杯具,至少得多费点儿时间。这很糟糕,有点儿颠倒。
说这些,不针对任何人,任何组织。我本科时学的就是汤老师的教材,对我的帮助很大。命题人的工作做得已经相当好了,能明显看出来他们在费尽心力地精确题目描述,避免各种意外。但没办法,操作系统这门学问的本质决定了,它不可能被机械地考核。考试形式不改,统考的制度不打破,就不可能真正地考查出学生的实际水平。
网络改变教与学,是1月25日,在我们举办的全国高校程序设计课程研讨会上做的报告。这次会见到了不少认识但没见过的朋友,也认识了不少新朋友。做报告的时间虽然有点儿紧,有些地方没有展开说,但基本还是成功的。希望越来越多的教师能够喜欢在课程中使用网络工具。
我的教师生涯曾经差点儿毁掉。曾经有那么一段时间,我想消极地对待教学工作,不想再像费脑筋设计实验,不想再想费力气批改实验,甚至不想用心上课。原因是对学生“抄袭”的失望与无助。那时我觉得我做的一切努力都是徒劳的,都被“抄袭”轻松地抹煞了。批作业时,觉得自己就像一个在办离婚手续的地方推销玫瑰花的傻子,不管自己多么认真地书写评语,屏幕那一端都是一个猥琐的面孔在嘲笑我的自以为是。这时,一个在加拿大留学的同学告诉我moss的存在,于是我得救了。
moss是专门为检测源代码抄袭而设计的,可以瞬间从数百份源代码中找出一对对的疑似抄袭,支持很多种编程语言,而且有很多非常贴心的功能。比如教师可以给出框架代码,学生程序中出现的框架代码会被忽略;可以设定n份学生程序中都出现的代码被自动忽略;有可视化程度非常好的结果显示。它还可以处理中文的纯文本文件。Car现在正搞的Duplication可以处理中文的doc和pdf,也是功德很高的一件事。
moss的客户端是用perl编的,只能在命令行使用。我做了它的moodle插件,使在moodle中调用moss变得非常简单。
moss只是反抄袭的一个必要条件。它只是刑侦过程的一部分,还必须有刑罚过程配合,才能收到效果。
moss给出的结果只能是参考结果,还需要人工审核。moss的结果中排名越靠前的,抄袭的嫌疑越大,但并不绝对。是否雷同,要综合考量作业内容,难点、要点,相似比例和代码行数等。
moss查不出捉刀代笔的。针对这种类型的抄袭,我设计了让TA和学生面对面评分的策略,通过直接询问,看学生是否能解释程序。就算学生是找人帮忙完成的,这种方法也能逼迫他去了解程序,一定程度上也促进了教学效果。这种方法还有一个附带效果,就是可以对每名学生做个性化指导、总结。
抄袭确认后,必须有惩罚,否则就是鼓励抄袭了。惩罚的策略我一直在不停地摸索,寻找最优解。现在觉得,基本找到了。
学生抄袭无非是想用最少的力气获得最大的分数。惩罚就要反着来,让他什么都得不到。所以,凡是抄袭,当此作业0分是必须的,是最公平的,容不得半点讨价还价的余地。但这样会造成一种“不抄,0分;抄,最坏也是0分,如果运气好没被雷,就不是0分了”的状态。所以,惩罚必须更重。我的方法是“抄袭当次及之前所有的作业成绩都清零”。这样的好处是越往后越不敢抄,尤其那些曾经侥幸漏网的抄袭者。
假设一门课有8次实验,占总成绩的50%。如果一个学生不幸在第6次实验被雷了,他通过考试的希望基本就渺茫了。为了挽救他,我设计了“期末考试达标,实验成绩恢复”的策略。比如承诺只要期末考试能考到80分以上,被连坐清零的实验成绩都恢复。如果他是个值得挽救的人,那么后面的时间,就一定会更加努力学习了。
反抄袭的一个负面效果,是会“害”一些立志改行的学生。他们可能有自己的理想与特长,但被机械的制度圈进了一个自己不喜欢的专业,去学一些没兴趣的课程。如果他成功混到毕业证,拿着文凭出去闯,很可能会改行成功,创造一番事业。反抄袭,使他们很难混,很可能会毁掉一个未来的人才。对此,应该把每次实验的及格线都设得比较低,较易达到。这种策略对后进同学的帮助和鼓励作用也是很大的。
反抄袭没有技术难度,工作量也不大,最难的是坚持。对此持反感态度的学生是占多数的,得顶住这个压力。待到期末时,学生们回想这一学期获得的,就会感激这份坚持了。
闭卷考试有一个强烈的心理暗示,告诉大家,“死记硬背”很重要。死记硬背不是不好,古人的学习思维“读书百遍,其意自现”说的就是不断地读,产生记忆效果,进而就能领会精髓了。古人这种说法很对,但是不够与时俱进。古时候的书翻来覆去就那么几本,不得不读百遍,否则没书读了;而且每本字数都不多,读百遍很轻松。现在的书那么多,那么厚,读百遍不可能。而读不到百遍,还要把里面的东西记住,这种“死机硬背”远远达不到领会精髓的效果。所以,我斗胆断言,我们的学生学得那么死,那么机械,闭卷考试这个指挥棒起主要作用。所以,干脆来个极限逆转,所有考试都开卷。
我进行开卷考试的次数粗略算算,也有10多次了。能看到的好处是:
能看到的弊端是:
为了扬长避短,我总结了如下几条经验:
等开卷考试久了,学生都习惯了,都善于思考了,就可以回归闭卷,但考题依然是开卷的形式和难度,这就到了教学的最高境界了。
moodle背后的思想叫做“建构主义教育学”,大意是学生在学习的过程中如果能对课程有所贡献,而不是单纯的听讲,会获得更好的学习效果。所以moodle中到处充满了可以“建构”的元素,比如wiki、论坛、词汇表、投票等等。为了鼓励学生建构,这些活动都可以被赋予一定的分值。
moodle到了中国,大多数的用户都只是把它当作一个发布课件和收作业的工具,不能充分利用其“建构”的能力。这和我们的传统相符合。传统认为,教师就是要发送的,学生就是要接收的。如果课程里要学生发送,那还要老师干什么?这种观点和传统,不值一驳。这里就介绍一下我的“建构”经验。
中国学生多数还是羞于表达,更不会反抗,只是喜欢随波逐流,默默接受。80后90后在这个方面比前辈有很大进步,但还是不足够。比如迄今为止我在课程里发起的所有投票项目,参与投票的人从来不曾超过半数。所以,要想“建构”就必须加一些刺激,或者是利诱。
建构手段里,我用得最多的是论坛。对论坛我试过三种不同的管理方法:
总结这三种方式,应该是第三种方式更好。不过现在课程几近尾声,获得加分的学生只占2成。评分标准是比较松的,所以发帖但没得到加分的学生数量很少,因此参与过论坛活动的学生也就在2成左右。也许,如果还有机会的话,可以尝试同样的评分方式,但分数放到百分以内而不是加分,效果会更好。
总结一下活跃论坛的经验:
等学生再上其它没有论坛的课,开始怀念你课程中的论坛的时候,你就成功了!
刚和新留校的教师交流完这个ppt:多快好省搞教学。讲得一般,节奏和重点都没控制好。好在至少观点说清楚了,我对教学能做到的事情也就止于此了。七年心血换来的这个结果,已经超越我的预期。无憾了。
最近被雷了两次。一次是被08级软件学院的学生雷到,另一次是被李晗静老师雷到。两个事件是相关的。
自从1996年来到工大,从学生熬成教师,虽无甚成就,但一拨拨的学生是见了不老少,从没见过像08级软件学院这样的,能让如此多的具有主动性和自学能力的学生同时出现在一个学院的一个年级。要知道,我一直认为,普遍来说,“主动性”是工大学生最致命的短板,并因此认为工大的学生只能算是“二流”。但08SE咄咄逼人的主动性,和佛挡杀佛的自学能力,让我终于体会到同时见到一批一流学生是什么样的感受。那就是“舒服”。
这种事情的出现不应该是偶然的。虽然软件学院从成立以来,其学生一直比计算机学院的主动性要好,但以前也就是一般好而已。必然性在哪里呢?便发了个帖子,想了解一下李晗静老师在他们的C语言课都干了什么。结果就被李老师所作的事情雷到了。
其实李老师所作的,和我的极限教学思想是一致的,不知道她是不是看过我的文章后才这么做得哈,^_^。但她可比我还要极限,简直就是到极端了。我自认在教学上的胆量独步工大,没人敢像我一样去挑战传统的力量。现在才知道,自己多么的自负,多么的渺小。从教学效果来看,李老师也比我做到的好,真的提升了学生的主动性(不过也不一定比我好,因为目前为止,我还没体会过我教过的新生在大二会有什么样的精神头;但是,体会过大三时的精神头,那是个惨不忍睹啊。不过,这应该是两年的时间,被传统祸害的结果吧?自我安慰一下了)。真的是“师有多大胆,生有多大产”啊。可惜,李老师也为此付出了惨重的代价,评教结果并不好,不好到她都不好意思告诉我是啥结果。
庆祝极限教学的又一次胜利!
雷同系统终究是形式!真正的想学东西还得看自己。说到底,还是中国教育的事。治标不治本。
这句话引起了我对抄袭本源的思索。如果真的要治本,该怎么治呢?
先从检讨自身开始。一上小学,我就是一个相当听话的好学生,记得班主任要求我们上课时坐在凳子上必须腰背挺直,而且手必须背在身后,我真就把这个无厘头的习惯一直保持到4年级。如此听话,当然不会作业抄袭。但其实我的第一次抄袭是很早的,那是第一个暑假的时候。暑假作业每天一页,量不大,所以一贪玩,就总想今天不写了,等明天写两天的,然后又等明天、等明天……结果到了假期快结束,作业还没写几页,堆压到一起相当恐怖,急得直哭。于是姐姐翻出来她的旧作业,告诉我这个是可以抄的。我的抄袭生涯就这么开始了。
虽然起步早,但个人定力还算足,老师抓得紧,再加上学习还不错,也不觉得写作业是多大痛苦,更不相信别人会比我做得好,所以大学之前 ,我的平时作业还是很少抄袭的。大学以后,所有的编程作业都只有别人抄我的份儿,但那些笔头作业,我几乎没自己写过。原因很简单:
理由相当的富有说服力,令我从来没对自己的行为有过半点自责,直到现在也是这样。不过,有些课程没认真学习,直接混过,还是让我有些后悔的。好在时间都没浪费,足以自慰。
我抄袭的本源是哪里呢?惰性是内因,外在环境也很重要。假使中小学老师也不挨本作业逐字批改,期末考试也严重放水,估计我早就堕落了。由此推断,如果大学老师对我严一些,可能我现在就是另一个模样了。不管推断得对不对,大学老师肯定不能按中小学的套路来的,那大学就该任由学生自甘堕落吗?
在UTD的时候,和那里的老师探讨学生抄袭的问题。他们说,抄袭的事情在美国的文化中是几乎不会存在的。那里没有人会觉得拿零分、降级(美国所谓的降级就是多学几年凑学分)、退学是丢人的事情,反倒做不诚实的事情会严重影响个人信誉。所以,美国学生里想找抄袭的都难。但来自中国和印度的留学生,颇能抄袭。印度学生的抄袭是完全拿来主义,除了名字什么都不改。中国学生比印度的要勤奋得多,肯定会做一些修改,而且还会编美满的故事来证明自己是亲自做的,不像印度学生只会一口一个“No”。但是,教师对抄袭几乎不管,原因有三:
也和香港的朋友交流过。他说本科里抄袭的有,但不多。老师懒得管。学生都是成年人了,自己对自己的行为负责去吧。
大陆的高校里,抄袭得肯定比不抄的多,而且是多很多。本源在哪里?社会。一个不讲求公平的社会,一个四处充满徇私枉法、权钱交易的社会,怎么可能让学生心中把持住道德底线呢?而且抄袭于他人基本无害,这怎么就有违道德呢?不抄的才是假正经、伪君子、死脑筋呢。
面对这个问题,大学教师绝对起的是推波助澜的作用。这也很可以理解。我一直在不遗余力地推销我的反抄袭经验,但招致的不屑远多于聆听。我无法探求他们的内心如何,只能猜测大概如下:
刚才偶然看到一篇关于AI退出NBA的文章,眼中不禁泛起几圈涟漪,虽然我以前对他并无多少好感。
如果我将来也有墓志铭的话,是不是应该写:“一个注定失败的人”?
都用GPLv3发布,一个是新作业类型,可以用online judge的方式自动对C/C++代码评分。一个可以从编程与中文文本作业中抓出抄袭的。