带着菜鸟学生在CSDN上发博文积累代码量已经有近两年的时间(见2011级学生和2012级学生),模式逐渐成熟,学生们每周能够认真地完成该做的学习任务,积分见涨,排名提升,相互评论,互褒互贬,好不热闹。尽管在学习中需要克服的困难依然存在,但从总体上,遇到问题能伸出手去编,编完程序还有发博文的一个环节,倒也算是目标明确,乐得做下去。
近日在张罗ACM协会,协会工作逐渐走上正轨,关于ACM比赛的事情也有同事专心去做。这算是了却了多年来一直想做这方面事的一个心愿。以算法能力为核心的学生课外学习活动能够借此起步了。
玩ACM,条件之一是必须要有Online Judge(OJ)系统。借着华中科技大学的开源项目HUSTOJ,平台算是建了起来,感谢。
课程组老师们商议在下学期在课程中引入OJ,上机考试实施起来就方便了。作为先行者,出了两道题让亲弟子们先集体体验一下。有些意外,发惯了博文的弟子们似乎没有多大的兴趣,尽管说了春假后要来次上机测验,显然这帮家伙想发完博文再考虑OJ。几个性急的小试一把,Wrong Answer居多:调试好的程序,OJ就是不接受。
将OJ用于教学,我们是落后了一大截子了,效果不错的学校我知道一些,先进经验应该要学。带着学生发博文能这样热闹的,不谦虚,没有发现第二个。能让学生坦然不抄袭,说实话,在想出这个主意时,没有想到能这样好。看着学生们的顾不上和不适应,想起来将这两种办法粗略比较一下。
OJ系统的优点在于让学生能够多多去编程,题库建设可以延续下来,学生做题的可选余地增大,在练习中增加兴趣。发博文的方法,在这方面一点儿不弱,在带第二轮C++课程时,我写题目的压力明显减小,可以在提高题目质量上下些功夫了。上一年积累的成果甚至编成了一个半成品《C++程序设计入门同步实践宝典(v0.5)》。学生做题选择性不大,但是紧贴正在学习的内容,能够及时体验该掌握的知识点。OJ上出题,可以重视解决问题方法,但针对某个语法有针对性地练习,却是劣势。
OJ系统能即时判分,方便了考核学生。这是老师使用OJ积极性最高的地方。有些学校施行完全的上机考试,以此给学生压力,必须要在动手能力上过关才算数。我希望对我的学生也能进行上机考试,OJ是个好帮手。但我不想让考试的压力常在他们的头脑中,一做题就想着考试,就想着压力,学习多无趣。过分的外界刺激会异化学业习动机,面对在高中将考试当作学习惟一目标的大一学生,抽掉他们脑袋中对考试的过份依赖,也还是我的追求目标之一。重逼之下,这帮家伙使出的应付手段岂是当老师的能掌控了的。把孩子们从考试中解放出来,这个追求还要继续。
博客上提交的代码写上注释,用上语法着色,排版排得整整齐齐,截个图奉上运行结果,看着就舒心。OJ上代码一提交,冷冰冰地,好的来个AC,不好就WA、PE、CE,不爽。至于写不写注释,不管。
博客上交代码,完成任务中可以自由发挥,做一个银行系统,你的是张家银行,他的是李家财团,三次密码输不对,有人的提示是“你这个大笨蛋”,好不热闹。OJ不好玩,算对了数字,只多输出一个空行,给出的结果不是WA就是PE。听老师的话设计的程序要用户界面友好,在用户输入前提示一个“请输入一个整数:”,就为这,WA。
博客中的题目,我出题时敢发挥,设计一个复数类的运算符重载,加减乘除大于等于小于不等于输入输出取反所有的运算都让学生做一遍,复数加复数、复数加实数、实数加复数,光加减乘除就12个函数。类是实现了,测试程序还要根据需要自己写,这就是一个完整的工程。写完发博文才吓出自己一身冷汗:300多行!用完了成员函数实现了,再来一份友元函数的解决办法,又是几百行。给OJ一个上百行的程序,找罪受。
发了博客,全世界看得见,涨积分,上排名,成果看得见。从“千里之外”升到20000以内,那不是一般的自豪,再想想自己,还是纯鸟蛋一枚。走过路过的留个言,夸两句,拍个砖,多过瘾。OJ上,62% WA,20% AC,多画个饼图也不养眼。封闭在这个空间里,自己过后再不看,或许老师看,也就看个统计数字罢。
通过博客,还找找了更多的资源,新闻、下载,链接引出一大片,大牛、大腕、菜鸟、写代码的,搞运维的,跑市场的,行业中的众生态,一应俱全。OJ里的,全是一帮学着写程序的。
老贺越写越带情绪。这是怎么啦,发博客两年,和博客近,玩OJ两月,欺负新来的?还真是很清楚用博客营造出的编程氛围,其优势能全面盖过OJ,尤其是要追求所有同学都发自内心去进步。玩博客的办法不容易玩好,所以玩的人特别少。
话又说回来,OJ这个新朋友还真不赖。对程序苛刻些,不是坏事。未来的程序员要能像在玩博客中那样疯起来,也要能像在使OJ时那样静下来;能抓狂到程序里随处加入个性的创意,也要能一板一眼不带马虎地就按要求工作;要能一口气几百行大规模作战,也能几小时就那两三行精打细算。更关键的是,玩博客得到的本领只是能让你下得了厨房,熟悉了OJ玩转了ACM,那才是上得了厅堂。
所以,在和菜鸟们一起积累代码行的征程中,博客老朋友还要继续发扬光大,新朋友OJ也将登堂入室,和谐相处,获得的是将是更广阔的天空。
写给我的学生,用好成长中的一切机会。