从第五周到第八周,除去第七周的国庆,C++共上了三周的课。大一新生三周能学会些什么?他们已经能输出漂亮的星号图了。身为老师的我,和这群大孩子一样高兴。同学们的努力令我感动,自己的不少非常规的想法和做法在他们的配合下正在起着作用,我已经感觉到,他们中的绝大多数将就此找到感觉,不光是专业学习,而是整个大学生活,在忙碌和不断出现的困难中,在快乐和不断冲破束缚的过程中,享受大学带来的一切。
原先安排第四周开始讲课,三次课后才上机,我已经计划好有充足的时间先“纸上谈兵”。程序设计的功夫在上机之外,一个周密的计划想了一暑假了。
然而开学后接到第五周开始上课的通知。第五周只有一次课,星期三下午第3大节上完课,第4大节马上上机,同学们连上机准备的时间都没有。为难的是我。我需要给他们做好方案。重新整理思路后,第一节课仍按原想法少谈C++。先打破同学们对计算机表面的认识,再谈程序、语言,目标只有一个,让同学们热爱专业,热爱编程这个专业基本功。限于时间,马上提出“让我们一起玩”的倡议。将时尚的互联网引入教学中来,就靠着他们去实施了。紧接着布置即将要做的实验:购买网费、访问网络教学平台和C++课程空间、注册通过校园网访问外网的帐号、申请电子邮箱、申请新浪博客、开通新浪微博,这些对大一新生而言,都是不小的挑战,尤其对以前和计算机接触不多的同学而言。接着,用VC++
6.0,编辑、编译、运行第一个程序等的工作,是没有时间讲的,就靠着在教学平台已经准备好的实验指导和上机指南了,自己动手对他们是个考验,也是很好的锻炼。最后,实验报告以博文形式发布。等我收拾好家当去了实验室,那一个乱。上不网了,帐号出问题的,出不了校园网的,忙乱中,大二的两位同学请示我问题,干脆拉他们来帮我解围。结果是,少量的同学完成了任务,更多的同学不甘心,再找时间完成。
和课代表商量好,每周星期五下午作为答疑时间,我到机房答疑,同学们自由上机。没想到乘兴而来的同学们却没有机器可用。等他们走后,我发现了更大的问题,我的计划面临流产。最后,算是找来了机时,却也失望、愤怒而有了《面对官僚,我们绕道而行》。
第六周有两次课。星期二上课的教室能上网,赶紧推出网易公开课、CSDN等。有些老师怕学生上网,我则尽力将学生往网上推。网络是个大宝藏,关键是要同学们知道如何用,知道哪儿有资源。一点基础知识都没有,却要和同学们一起读程序,所幸有我委托事务助理复印的听课记录,慢慢讲,引得大家一起思考。慢下来,一定要让他们对程序有感觉。发挥了老教师慢讲的功底,我觉得效果还是不错的。星期三的上课,引入了程序调试。还没有学任何语法,还不会写任何程序,就要会单步执行、会设置断点,会观察变量值的变化,我以前没有听说谁做过,但我计划尝试一把。单步执行不仅是调试程序所需,对理解程序的执行也应该是直观的,并且一旦会用,他们将有能力自主学习。专门写了VC调试功能初步和实验指导。在随后的上机课中,同学们完成了对用函数实现的求最大数和程序的跟踪。神奇,不少同学反映稀里糊涂,但实验指导中的任务的确能完成了。不糊涂不正常,这本来对大家就是个挑战。星期五下午,面临第二天就是国庆放假,但还是有三分之二的同学参加了自由上机。新生真好!
这两周的工作,让我感觉到有些累了。一般课程,构思好方案,做好PPT讲稿即可。课前看一看,直接去讲。而在对我和同学们都是挑战的这门课程中,每堂课前,我都要写出供同学们用的课堂记录,教材中缺失的材料需要亲自去写,还有实验方案,都是全新的做法。有几天都是早晨三四点钟早早醒来开始写作的。
幸亏有了国庆节放假,抽出了宝贵的整时间备课,一口气将讲义做到了第5章,总算有了点积累了。但一个问题始终没有下决心:是开始按步就班依教材讲语法,还是再抛开教材讲编程思想和方法。一部分同学已经开始对这种教学方法不适应了,教学进度貌似也不允许我再自由下去。
直至第七周星期六,我还是定不下来。星期天醒来,一个更加清晰的思路就在脑中,估计天快亮了,起床写吧,起来看表却只有两点半。在原来做好的第3章课件基础上修改,同步写第3章的听课与学习指导,一气呵成,5点半收工睡回头觉,6点10分再起床和儿子一起吃早饭。由算法入手,用1+2+...+100做引子,牵出控制结构和表示算法的工具:伪代码、流程图、N-S图,然后用星号图为例,讲“自顶向下,逐步求精”,力图让同学们掌握思考和表达的方法。这是程序设计的一道坎,很多老生会写语句和表达式,但就不知如何针对问题进行分析。在所有的思维中,如果能把循环绕清楚了,会通过逐级求精写出循环嵌套来,障碍自然扫除。用星号图玩控制结构是我在指导儿子自学程序设计时用过的,现在在课程教学中作一尝试。的确,星号图相对其他任务,好玩多了。安排好学生事务助理复印学习指导后,构思配套的实验指导。我还不甘心这点成果,将用函数实现的思路也加进去,以“自顶向下,逐步求精”的思维方式,以函数为基本单元,构造出模块化的程序来,我要让学生在正式学函数之前,要对函数之伟大有个深刻的认识。并且,函数将完全由学生自己探索。由于难度的加大,实验指导中加入了不少做“思想工作”的文字,其实,这算得上是学习方法指导。为了增强可读性,加了不少调侃语,常泡在网上,这也还算是擅长。
由于其他课的任务也不算轻,实验指导写得不顺,直至星期一晚上才写完,自己也还是很欣赏这种调皮的文字。星期二吃过早饭,再次审核每一个细节,打印出需要的材料。将收集到的学生博客一一打开检查,我需要找出进度慢的同学重点关照。我组织同学们分了学习小组,也一再强调不能让任何一个同学掉队,学习中集体的力量是无穷中,好的氛围将是所有人进步的保证。
上课时间到了,我首先抱歉地告诉大家,我还是决定再一次用大家并不习惯的方式上课,这是为了以后让大家学得轻松些。同学们给予了支持。课后作业就是为第二天的实验做准备,各小组要安排一次集体自习彼此启发。学生事务助理复印的实验指导材料也发给了大家。我知道,这是一项不轻松的任务。
星期三中午,当我到达教室时,我被同学们感动了。除了在趴在桌上午休的,手中就是我发下的材料,在纸上画着绕来绕去的流程图,写着没有正式学过的代码。有些同学的指导材料已经显得发皱,上面布满了字迹,显然是用功不少了。询问了同学们的掌握程度,我决定先用二十分钟再强化思维训练。这是关键,花多少时间都值。在今后,同学们的听课可能会更自然些,因为贺老师要按着课本顺序来了。当然,歪点子也将不少,但经历了前三周的考验,同学们是能顶下来的。
于是,有了两个小时后我看到的一幕:不少同学输出了漂亮的星号图。整个过程我清楚,这不是抄别人的代码看看出什么结果,而是自己自顶向下的设计后写出来的。这标志着他们设计的思维开始建立,这是一个完美的开端。晚上回家统计,已经有三分之一的同学提交了合格的报告。
美好的过程,这是我理想的教学。感谢这几年习练梅花桩拳让我乐于不断改变,也谢谢我这几年坚定了的永不放弃的境界,更要感谢这帮学生的付出。学计算机的不会编程?天大的笑话,我们将把这种不可思议的现实抛到东门外一百米以外的地方。
有人会质疑:“老贺说大话了,你的学生好表现才三周。”漂亮的星号图给我底气,完美的开端给我信心,我们将一直笑下去。
(写于2011年10月12日,2011年12月10日复制到CSDN)