对程序类课程课堂组织形式设计的思考
2012-08-06郑哲
郑 哲
在深入推进项目课程改革过程中,在做中学、做中教以及知识、能力、素质一体化培养等新的教学理念推动下,程序设计类课程中传统的课堂教学组织形式已无法满足现实需求,如何进行有效的课堂教学组织,进而提高教学效果显得尤为重要。笔者经过几年的教学实践,对程序设计类课程的课堂教学组织形式进行了改进和优化,在此愿与同行切磋,以期共同提高。
一、线性项目推进VS.迭代式项目推进
传统的教学项目以一种线性的教学方式推进,比如传统的软件项目的教学过程如下:先完成第一个模块A的开发设计,再完成第二个模块B的开发设计,如此推进,一直到所有的模块开发完毕,再进行集成和测试,最终得到可运行的版本。
这种做法的弊端有很多。首先,学生在未完成所有模块的开发之前,无法直观地看到项目的成果,也就难以从中获得成就感,而长期缺乏成就感就会逐渐影响学生对学习的兴趣。其次,在集成组装和测试、运行之前,学生无法确信先前开发的模块是否正确。这就造成学生始终对自己所做的产品处于怀疑状态,而唯一能保持他们自信的方式,就是不停地与老师的版本进行对照,只有跟老师所做的一模一样了,甚至连标点符号都一致,才会确信自己没有做错。长此以往,导致学生死板模仿,缺乏创新,对教师过度依赖,丧失独立思考的能力。而到学期结束阶段,一旦发生将这些模块组装不到一起的状况,或者出现大堆错误的时候,许多学生的选择就是干脆放弃自己的项目版本,转而依赖于他人的版本。
如图1所示螺旋式的迭代项目推进模式将会彻底改变这一现状。教师在构成基于工作过程课程设计的一个单元时,选取单元的粒度应该是一个可供运行的独立版本,而不是以往的一个独立模块。因为模块无法独立运行,而版本可以运行;模块无法单独进行集成测试,而版本可以;模块无法表达完整的工作过程,而版本可以;模块无法让学生找到自信,而版本可以;模块无法让学生找到成就感,而版本可以。[1]具体的做法是,在基于工作过程课程设计之时,改变以往一个单元设置一个模块的做法,转而形成一个单元完成一个版本的项目,而一个版本的项目由若干项目任务构成。这样,可以把一个贯穿于整个课程的较长项目周期,改造为不同版本构成的较短的项目周期,从而形成一种螺旋向上的过程。尽管每个版本的功能可能不完善,但随着项目的推进,我们不断迭代旧版本,提出新需求,思考改变原有的设计,重构原有的程序,最终实现目标。在这种螺旋式上升的项目开发过程中,学生能够始终保持好奇心,随时发现问题,不断捕获新的需求,找到新的解决方案,从而改变原有设计的不足之处,生成新的版本。同时,这种项目推进模式,也能更好地使学生发挥主观能动性,形成独立自主的观点和自信的解决方法,从而持续不断地激发学习兴趣,获得成就感,极大地提高学习效果。
图1 迭代式的项目开发
二、简洁即高效(KeepItSimple)
课堂的表现形式通常有分组实验、课堂讨论、学生演示、视频观看、课堂问答等。在具体的一堂课上,教师对课堂表现形式应安排适宜,如果采用过于复杂的表现形式,不仅得不到理想中的教学效果,还会因此加重教师驾驭课堂的负担。比如,在执行学生分组或者学生演示等需要师生互动的表现形式时,很多教师往往得不到学生很好的配合,甚至会影响教学进度。究其原因,可能因为教师第一次使用这种表现形式,学生对此比较陌生,不知道老师的“游戏规则”,不明白意图和做法,也就不知道如何去配合;或者课堂形式设计过于复杂,学生眼花缭乱,理解出现障碍,无从配合教师的教学。因此,相对固定的课堂表现形式,及其在课堂中一以贯之的执行显得非常重要。它不仅有助于学生了解教师的教学风格,理解教师的意图,而且,通过长期的固定训练,还可以帮助师生之间自然而然地形成某种配合上的默契。当然,良好的课堂形式设计需要教师根据课程的特点,从实际经验和教学效果反馈中不断地总结和改进,并最终形成一个模式简单的、易于执行的表现形式。
笔者对程序类课程的课堂表现形式提出的创新思路如下。
(一)结对编程
结对,如图2所示,就是两个人共用一台电脑,通过言语交流的形式进行程序开发。每堂课,教师轮流与一组学生结对,或学生与学生之间结对。[2]通过教师与不同学生结对,可以尽早发现学生在理解程度和操作应用上存在的问题,以便及时地得到教学效果反馈;通过学生与学生之间的结对,可以使学生相互帮助、相互学习、相互“找碴”、相互监督,这样,在培养学生团队合作意识的同时,有效加强了课堂管理,提高了教学质量,降低了教师课堂管理成本。不仅如此,结对小组的形式,还使学生在就某个方案进行设计,就某个难题进行挑战时,显得比以往更有自信,小组的力量给那些自闭害羞、不善回答的学生提供了更多的勇气和帮助。
图2 结对编程
(二)教室布局优化
图3 结对编程实验室布局
基于上述表述,传统隔断式的机房布局,不仅隔断了学生间的交流,也隔断了学生和教师的交流,不利于教学的开展,也不利于学生团队合作能力的培养。如图3所示,改进后的结对编程实验室,在布局模式上和以往相比有较大的突破。在这一模式中,我们让两位学生能够舒服地并肩坐在一台足够大的显示器(至少要21英寸)前,其中,一位学生端坐于键盘和鼠标的正前方,担当“驾驶员”,而另一位则应能清楚地看到显示器屏幕,便于担任“领航员”角色。当驾驶员和领航员交换角色的时候,只需把键盘和鼠标从一个人面前挪到另一个人的面前即可。
两名搭档之间及各组之间高效率的交流是至关重要的。交流得越多,也就意味着知识传递得越快。为便于展开更充分的讨论,应该让他们彼此可视,便于相互回答提问和共同做出决策。这种模式除了教师向学生呈放射状的知识传递之外,更多了一层学生和学生之间、小组和小组之间的知识传递,即由原有的放射状模型变成了网状模型,从而大大提高了知识的传递效率。
为了更好地进行知识传递,我们一改教师高高在上的讲台布局,而将讲台搬到实验室的中间。这样,在拉近师生之间距离的同时,也使教师增加了掌控机房的覆盖半径,为其驾驭课堂提供了方便。同时,实验室中间摆放的一台设备,还可供结对的一组学生轮流进行演示和操作,不仅为教师提供了及时的教学反馈,也为基于工作过程考核的公正、公开,提供了一定的可行性。
[1]邓泽民,赵沛.职业教育教学设计[M].2版.北京:中国铁道出版社,2009.
[2]佚名.结对编程[EB/OL].[2012-06-12].http://zh.wikipedia.org/wiki/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B.