刘 砚
(天津轻工职业技术学院国有资产管理处,天津 300350)
在大数据、云计算等技术引领的时代,越来越多的学生接受了计算机语言的课程学习。在大学阶段,计算机程序设计通常作为计算机相关专业的必修课、核心课,是计算机专业学生初步了解信息技术的重要基础。由于2020年的疫情爆发,几乎所有的课程都在极短的时间内迅速完成形式转换,线上与线下课堂的融合已成定势。程序设计课程由于其特殊性,在线上线下融合过程中需要克服重重难关。本文对课程实际教学过程中产生的问题与思考加以呈现,以期为其他相关研究提供些许支持。
与自然语言学习类似的是,程序设计语言也是一种抽象符号的表达,有一套稳定的语法结构。不同的是,程序设计语言可以输出为形象化的结果,如一个游戏角色的动作、一张折线图等。所以,在程序设计课程中比较常见的情形是,看到程序的实现结果,学生们会惊叹不已、跃跃欲试,而一旦要开始编写代码进入实战,学生们就萎靡不振了。这就是由于程序设计的输入与输出的反差,让学生在抽象与具象之间跳跃所遇到的挑战。对于逻辑思维能力稍弱的学生尤为如此,他们有时候会陷入思维的圈套,无法理清输入到输出这个迷宫的任何一条道路。为了应对这个难题,教师需要尽可能将设计过程具象化,用生活化的语言和表达引导学生一步一步找到问题的解决方案。这样的引导过程最困难的地方在于尺度的把握,引导的不够,学生难以得出解答;引导的过多,就剥夺了学生的独立思考机会。事实上,很多学生在思考问题时有很强的依赖性,期待着早点得到答案,何况搜索引擎如此强大,答案比比皆是。在这样的环境下,引导学生独立思考的确是困难的事。
任何一门学科的知识都自成体系,有内在的组织性和连贯性。如果强行割裂其中的组成部分,学习者将无法看到学科的全貌,也无法做到融会贯通。程序设计语言自然也不应该是孤立的。在学习程序设计之前,学生应该对计算机科学有概览式的了解,才能理解程序设计的实用价值。否则,学生即使完成了上百个学时的程序设计课程学习,也仍然不清楚代码的用途、使用的具体场景。目前,国内的高校基本上都会在一年级为学生开设计算机应用基础课程,作为学生了解计算机相关技术的窗口。如果是面向计算机专业学生,笔者认为除计算机应用机场课程之外,还应为学生提供所学专业知识体系的概论性课程,让学生真正了解即将学习的各个课程的作用和应用场景。如此,在学生进入程序设计课程学习时,将会用全新的视角来思考、获取知识与技能。
程序设计和任何一种技能的习得过程相同,需要大量而持续的练习。这一点对于程序设计课程至关重要,也是实施的最大困难。课堂的学时极为有限,学生更多的是完成思维的训练,即针对某个问题,使用已经掌握的知识找出解决方案。而真正要做到“心到手到”,即能够迅速将思考出的解决方案转化为编码输出,唯一依赖的就是课下的练习。教师通常在课后作业中给学生提出练习的要求,并给出截止时间提交。但是作业的展示很难真正体现学生的实际水平,能够自主持续练习的学生少之又少,大多数学生仅仅完成课后练习就已经有些吃力了。学生们不能理解,大量的练习会对编写程序有极大的帮助,因为他们未曾尝试。能够给学生一些榜样力量的,除了PPT上展示的程序设计大师的赫赫战绩之外,教师本身就是很好的力量来源。如果教师自己能够做到保持长期的程序设计实践,在课堂教学过程中可以为学生做出精彩的现场技术展示,这其实更具有说服力,至少可以唤起一部分学生想要用心练习的决心。
程序设计语言的知识体系结构清晰,但包含了大量的细节,在知识点的教学组织过程中需要教师根据学生的特点和教学目标优化选择。要为学生一一列举所有的应用实例,需要占用不少课时并且枯燥,而这又是基础中的基础。例如,字符串部分,仅这一个知识点就可以展开若干细节问题,包括字符串的定义方法、单双引号的混用(如Python)、字符串切片、字符串相关函数等。对于初学者来讲并不是轻松的部分,而这些都需要在前期铺垫好基石。笔者在教学过程中最深切的感悟,莫过于学生的基础知识没有掌握牢固的话,将会导致如何糟糕的后期效应。不仅打击了学生的自信,也挫伤了教师的自尊心,造成难以挽回的局面。不同的程序设计教材都有比较合理的章节组织,但是在知识点引入的先后顺序、知识点切入的角度和深度方面,目前还缺乏能真正实施且有效的范本。
程序设计语言课程的网络资源有很多,学生可以在网络平台轻松获取相关的教学资源,各类学习社区也可以给予学习者有效的辅助。但是,网络资源在形式上趋于单一,关于程序设计语言的教学视频、微课、慕课等,采用的都是编写代码的录屏形式,对于大部分的学习者来讲,这样的形式从一开始就减弱了潜在的吸引力,随着课程难度的推进,能够坚持到最后的学习者成为少数派。这诚然与程序设计课程自身特点不无关系,在人们的观念中,程序设计与敲代码是可以画等号的。这些资源容易让初学者错误地理解学习程序设计的意义,编写代码当然是程序设计呈现出的表象,并且是不可或缺的,但是程序设计中蕴含的重要思想却在这种片面的呈现过程中被忽视了。结果就是,学习者看了若干学习视频,练习了若干实例,但是仍然无法独立写出一个程序、解决一个问题。程序设计课程应该具有思维空间,不应是扁平化的代码呈现。
笔者在疫情期间尝试使用过两款线上教学平台产品:雨课堂和职教云平台。两款产品各有千秋,这里不针对产品本身进行横向比较,仅通过课堂实践总结使用体验。
雨课堂平台提供微信小程序,允许学生通过扫码方式加入教师设定的班级和课堂,简单便捷,但是需要学生配合输入完整的个人信息,否则教师后期统计各项成绩时会增加很多工作量。职教云平台则通过学院初始化数据的录入,使授课教师直接将学生库中的班级加入课程中即可,不必考虑学生信息是否完整或准确的问题,在教师需要讲授多门课程时,这样的操作方式无疑更加便利可靠。
课前,教师可以通过线上教学平台提前设置课堂的各项练习,以选择、填空、问答等形式。雨课堂的亮点在于其提供的弹幕、点名、分组灵活性等方面,特别是弹幕功能,契合当下网民通过对视频评论的实时交互分享观点的习惯,允许学生在线上发布评论并显示在教师的课件上,成为线上课堂趣味十足的环节,学生乐于使用这种方式与教师碰撞思想,活跃课堂气氛。通过随机轮换学生头像的界面选择学生进行提问的方式,也呈现出紧张、刺激的气氛,自然提升了学生的专注力。职教云则为课堂的练习形式提供了更丰富的选择。
线上平台可以记录学生考勤、课堂练习及互动、课后作业、阶段性评测等活动的成绩并给出统计结果。在使用体验方面,职教云的课后练习成绩统计更加便捷,已提交和未提交作业名单可以分别统计下载,方便教师迅速掌握学生的作业提交情况,并有针对性地调整教学内容。
线上平台可以向学生发布与课程有关的课件、视频等补充资源,以拓展学生的知识广度,有效地帮助学生在课余时间完成自学内容。职教云平台依托其海量的课程资源库,允许教师在课后引用资源库中相关的课程材料,使学生在平台上即可免费观看学习。同时,资源库的内容组织有序,便于学生自主学习。
雨课堂联合快手推出了在线直播功能,教师可以在线进行课程直播,无须借助第三方软件即可实现与学生的语音传播与互动,并且可以录制直播内容,方便学生回看课堂内容,对于因故缺勤的学生来讲,无疑是补习知识的有效途径,也减轻了教师的工作负担。
自疫情常态化以来,各院校虽然已经恢复线下授课,但线上教学的尝试并未停止。将根据疫情以来线上线下课程教学的情况对“双线”融合的方式提出几点思考。
在传统的线下教学中,教学资源的核心是教材,教师普遍将教材内容作为课堂讲授的依据。当课堂实时在线时,可以尝试将教学内容逐渐转移,从有限的书本转移到拥有海量资源的线上疆域。教师的作用不仅仅是讲授教材的知识点,还要在大量的在线资源中搜寻适合学生学习水平、符合学生认知特点的学习资源,可以在广度上进一步延伸。例如,科技产品的发布会现场片段、TED演讲视频,甚至国内外影视剧中与计算机技术相关的经典桥段,如果定位准确,都可以作为知识点的辅助材料丰富课堂,相较于教材内容的严谨有余、活泼不足,这些补充资源的加入会让学生从更多的层面和角度加深对知识的理解,在轻松的气氛中习得技能。
要做到线上线下的教学融合,关键在于课上与课下任务的衔接。通常,课下任务被理解为课前预习和课后作业两个经典环节。毫无疑问,预习和练习是掌握技能的重要手段。需要探索的是,如何保证预习和练习的质量,从而为课上的讲授提供有力的支持。在课下,无论是课前还是课后,可以充分利用线上平台或其他产品保持师生的联系,可以视为课堂的延续。教师和学生可以以更为对等的方式,在网络上通过问答或实时聊天的方式交流。这首先需要教师的付出,在课时以外的时间里,还可以保持积极的心态与学生互动,分享优质资源,解答学生疑惑,对学生来讲,这是一种非常有效的学习过程。特别是程序设计课程的学习,教师的悉心指导极为重要,可以帮助学生避免不必要的时间浪费、提升学习效率。教师可以根据自身的精力和时间,为学生设置课下的学习任务以及反馈时间,任务体量宁小勿大,通过关键知识点的考察,掌握学生的学习程度,再随时调整下一堂课的教学安排,有的放矢。
在部分国内外高校中助教是一个重要角色,可以帮助主讲老师完成若干琐碎的辅助性任务。在程序设计课堂中,面对大量的练习材料、任务设置、反馈统计等工作,主讲教师的工作不堪重负,可以尝试从学生中选拔1至2名助教,辅助教师完成简单的教学任务。一方面可以让学生有主动参与性,另一方面减轻了教师的负担,可以集中精力在教学设计方面。助教也可以轮换制,让更多的学生参与到课程教学中,体验“学”与“教”不同身份的转换,在换位思考中得到成长。
本文通过笔者的教学实践体会,提供了关于程序设计课程教学融合的一些理解。在实际教学中,需要的不仅仅是前沿的科技手段和创造性的方法,还有教师自身对于职业的敬畏以及对于学生的关爱,这些才是蕴含在教学融合中最为可贵的思想与力量。