面向大类培养的程序设计“金课”建设思考

2019-01-08 03:16宋友李莹肖文磊
中国大学教学 2019年11期
关键词:金课程序设计建设

宋友?李莹?肖文磊

摘 要:程序设计课是计算机、软件等信息类专业的核心基础课,同时又是理工科其他各专业的公共基础课。本文围绕通识教育背景下大类招生、大类培养的人才培养需求,论述了程序设计“金课”建设的几个具体问题。

关键词:程序设计;“金课”建设;大类培养

程序设计课是计算机、软件等信息类专业的核心基础课,专业性强;同时,又是理工科其他各专业的公共基础课,学科交叉性特征明显。程序设计课的教学目标是教会学生针对科学和工程问题,能进行可计算的分析、设计、验证,理论性和实践性结合要求很高。由于其具有传统性、时代性、专业性、交叉性、理论性、实践性融合的特点,对师资水平要求高,对实验条件依赖性强。但在一些理工科专业,一些多年不编程甚至不会编程的老师却在课堂上教学生编程,造成的直接后果是,不少学生虽然通过了考试甚至得了高分,但几乎没有实践能力,不会编程解决问题、不会使用调试工具、不会查阅资料,更谈不上具有计算思维了。因此,在通识教育背景下建设面向大类培养的程序设计“金课”迫在眉睫。

一、程序设计大类课的“金课”特征

1.高阶性

课程的高阶性强调知识、能力、素质的有机融合,注重培养学生解决复杂问题的综合能力和高级思维[1]。

程序设计课有高阶性的自然要求。程序设计课的教学内容包括数据的读取、表示与处理,运算的规则与逻辑,程序的结构与关系等;程序设计课的核心思想是计算思维,对复杂的科学问题或工程问题能进行分析与求解,包括抽象、简化、归纳、演绎、分治、递归、封装、组合、复用等。高阶性要求程序设计课除了介绍基本编程语言语法外,还要进一步阐述其原理,教师要尽可能引其趣、激其疑、寻其思、解其惑,透过现象讲解问题的本质。比如C语言中的浮点计算误差问题,很多教材上就是一句话“C语言中的浮点数表示不是100%精确”,大多数老师讲课时也往往一笔带过此问题,这会给学生留下疑惑而不得解。针对此问题,可以举一些具体的实例,如执行语句{a = 0.3; printf("%d", (int)(a*10));},直觉上应该输出3,但实际上却输出2。学生有了直接的观察,老师就可以介绍浮点数的二进制表示规则,清晰地阐述浮点数在计算机中不能100%精确表示的原理。再结合之前已经讲授的整数的二进制表示规则,可阐述整数能保证准确性,但能表示的大小范围却很有限。浮点数能表示“很大”的范围,但不能保证100%的准确性。这蕴含了生活中鱼与熊掌不可兼得的哲学道理,揭示了程序设计学习对生活与工作的重要指导意义。这种思维的培养,对于理工科学生,比如航空航天类等对精度要求很高的专业来说尤其重要,这属于高阶思维的培养。

2.创新性

课程的创新性要求课程内容具有前沿性和时代性,教学形式体现先进性和互动性,学习结果具有探究性和个性化。几十年来,程序设计课程经历了从简单计算到复杂推理、从单机到网络再到移动、从简单数据处理到大数据分析、编程语言标准随工业化信息化进程而快速更替的过程,对课程的前沿性和时代性要求非常高。

程序设计课的实践性很强,实践训练的分量应超过理论课讲授。在教学形式上,程序设计课程必须强化实践,并且要体现当今信息时代的先进性和互动性。面向大类培养的程序设计课要考虑学生未来专业的不确定性,从材料到生物、从电子到自动化、从机械到光电、从语音到图像,以及航空航天等,這就需要程序设计课在精选和保留经典内容的基础上,吸收多学科、前沿性的案例,融合具有时代性的新工科元素,着力培养学生的计算思维,为未来不同专业的学习奠定应有的基础。

3.挑战度

课程的挑战度是指课程有一定难度,需要跳一跳才能够得着,这对老师备课和学生课下学习提出了较高的要求。

程序设计课的挑战度非常明显。一个好的程序设计课应该是:课上,学生能基本听懂老师讲授的内容;课下,学生能通过对知识的再学习而完成课设作业。课设作业需要有一定的难度和工作量,不能直接套用与照搬课堂上讲解的编程语言的语法知识、基本的算法流程、示例代码等,必须在反复试错、不断迭代、分析和调整各种边界条件、综合运用所学知识、与同学进行讨论和交流、有效查阅资料后,才能编程实现给定的问题。这就是典型的跳一跳才够得着的体现。

在未来的科学研究与工程应用中,需要计算处理的问题千变万化、复杂烦琐,并没有固定的、一成不变的套路,学生只有接受过挑战思维的训练,才能具备解决实际问题的潜力。要做到这一点,老师除了以教材为蓝本进行正向式教学备课外,还必须设计启发式、逆向式的具体教学案例。同时,学生课下必须认真复习,加强上机编程练习,仅靠课堂听课肯定远远不够。

二、程序设计大类“金课”师资队伍建设

“金课”建设的关键在教师,优秀的教师队伍是成就一流本科教育的核心要素。

1.师资构成

国内传统的程序设计课师资主要有两种类型,一种是信息类(计算机或软件等专业)师资承担全校的程序设计课。教师面对信息类和非信息类学生的教学方式、教学内容基本相同,教师很难把握住非信息类专业学生的特点。另一种是各专业的教师承担本专业的程序设计课。这些老师大多是非信息类科班出身,对程序设计课内容的系统性、完整性认识有偏差,且各专业的师资差距相差非常大。

复合型师资团队是程序设计大类“金课”建设的基本要求。大类培养的学生在高年级时将走向各个具体的专业,面向大类培养的程序设计课兼具基础性与专业性,这就要求该课程的授课教师应来自各专业,共同组成课程组,把多学科的背景、知识、经验融合到教学内容中,从而使课程具备高阶性的师资基础和特征。

2.师资选聘

一般情况下,教师讲授一门课久了,容易产生惰性,不大愿意去改变教学内容和方法,这在知识更替非常快的信息时代显然是不合适的。因此,在大类课背景下,针对教师业务能力参差不齐的现状,面向全校实行“公开招聘、择优上岗、业绩考核、准入退出”的竞争机制,有利于打破陈规,组建优秀的教学团队,激发教学活力。

通过“自主报名、上机考试、答辩试讲、专家评审”等多个考核环节,能够打破学科专业限制、职称职位限制、年龄限制,选出合适的教师。这几个环节的操作办法和意义主要体现在:第一步报名,让老师提交过去的教学大纲、课件等,如果是新老师,则需要按要求去认真准备这方面的材料,然后进行讲课申请,这一步检验老师的教学热情和意愿。第二步是上机考试,就是上机编程测试,这一点非常重要,因为程序设计课不仅仅是理论课,还是实践性很强的课,如果老师不熟悉编程,或长期不练习编程,实践能力生疏,则很难教好学生。第三步,答辩与试讲能检验出老师是否具备必要的教学潜力或能力、是否有丰富的教学经验、是否掌握教学方法、是否懂得教学规律,等等。最后,专家通过对这几个环节进行综合评价和推荐,帮助教学单位选拔并聘任优秀老师组建课程团队。教师的聘任实行聘期制,实行教学质量考核、教师准入和退出办法[2]。

3.师资团队建设

组建大类课的师资团队、课程组,能够实现“统一规划、统一标准、统一建设、统一管理”的课程建设方针,淡化专业限制和学科边界,统一教学标准,定期开展集体备课,聚积集体智慧,整合优质资源。同时,课程组教师之间开展相互听课,落实同行評议制度,形成教学的学、比、赶、超风气,营造相互学习、相互帮助、共同进步的教学团队氛围。

在传统的程序设计课教学中,教师需全流程负责,包括备课、实验设计、实验系统运营维护、答疑、学生学习过程分析、出考题、阅卷等,工作量很大。在课程组机制下,每位教师合理分担不同任务,做自己擅长的事情。教师的教学工作负荷降低了,就可以分出更多精力开展教学研究,发挥个人优势,专注于在自己擅长的领域开展深入的教学探索。在课程组建设与分工模式下,教学效率得以提升,水课的生存空间也就很难再存在。

三、程序设计大类“金课”的教学模式

“金课”建设并不是开设新课程,而是在现有课程基础上,扩展深度、难度和广度,使其具有高阶性、创新性和挑战度。程序设计课具有“金课”“两性一度”特征,理论与实践结合要求高,做好“理论课堂+实验课堂+课下练习”的三位一体的教学实践,有利于程序设计课的“金课”目标的达成。就像游泳一样,要成为一名专业的游泳健将,既需要专业教练(老师)传授基本要领(理论),也需要进行必要的训练,更需要选手在平时多花工夫进行刻苦练习。程序设计课三位一体的教学模式可具体表述为如下内容。

1.实例驱动的课堂教学

传统程序设计类课程通常注重语法知识的理解、记忆和应用,教师通过陈述性知识,讲解什么是程序。这是一种低阶性教学模式。基于计算思维的程序设计类课程则属于高阶性教学,教师通过程序性知识和策略性知识,尽可能使学生理解如何设计和编写程序,它旨在培养学生运用计算机解决实际问题的能力。陈述性知识主要指描述程序设计的概念和语法,程序设计性知识主要指编写程序的过程和方法,策略性知识主要指运用已有知识来解决新问题。

上述三类知识应有机地融合,通过具体的实例设计,把枯燥的编程语言的语法知识讲得生动有趣,这是课堂教学的关键。比如,对于较难理解的指针部分,讲解指针变量的时候,把变量A比作抽屉,A的地址比作钥匙,而指针变量B则是另一抽屉,里面存放的就是A的钥匙(地址),这样,能打开(访问)抽屉B,实际就能间接打开(访问)抽屉A。又如,讲解指针与数组的关系时,要阐述两者“孰优孰劣”的相对逻辑,可以用南方指路的“前后左右”模式(直观好懂,但电话问路时就不管用了),北方指路的“东南西北”模式(准确清晰,但在南北极时该方法就不再有效)。在理论课堂上以这样的实例设计为驱动,讲课时配上相应的图示,就能把复杂晦涩的概念讲得通俗易懂,能保证学生听起来饶有兴趣,引发学生更宽广的思考,培养学生的高级思维能力。

2.竞赛模式的实验教学

程序设计课的实践性要求高,把ACM(Association for Computing Machine)程序设计竞赛模式引入实验课,能有效地向课程中注入前沿性和时代性。而在实验课中采用ACM模式,展现了教学形式的先进性和互动性。ACM竞赛是世界最知名的程序设计高端竞赛,至今已40余年,每年吸引全世界3000多所著名高校的数万名优秀学生参与其中,被计算机教育界和产业界高度认可。但该竞赛一直以来都停留在高端层面,对于非计算机类专业学生和教学编程的老师而言,还非常陌生。目前,新工科建设提出了更高的计算思维培养要求,并且信息技术已发展到了新的阶段,把ACM竞赛模式引入到理工科程序设计教学中已不存在门槛。

把竞赛模式引入实验教学环节,将改变传统实验教学模式,从以知识为中心转变为以实践为中心。(1)改进教学方法。把ACM竞赛题目改造为实验案例,以故事形式描述问题,能激发学生解决问题的兴趣,实现理论和实践的有机结合。(2)增强教学效果。按竞赛的形式,把实验案例设计成题目描述、输入输出要求、输入输出用例等几个部分,一方面能巩固和应用所学知识,加强与实际应用紧密结合的情景,另一方面加深学生对IPO(Input-Process-Output)程序设计模式的理解,训练他们运用理论知识解决实际问题的意识和能力。(3)调整学习方式。竞赛模式不仅培养学生的实战能力,在机器判题、实时排名的场景下,能使学生充分理解和深刻认识程序设计的严密要求,可以培养学生一丝不苟的严谨精神。

3.在线平台支撑的练习

保障程序设计课的教学质量,不仅要有优秀的课堂教学与实验教学,而且学生在课下也必须保证足够的练习量。学习程序设计课的目标是为了解决问题,因此,课下练习必须脱离应试教育、题海战术的模式。建设和开放7*24小时的在线编程练习平台,开放更丰富、更扩散的海量练习,能有效帮助学生完成课下练习任务。在线平台的课下练习可看成是实验课竞赛模式的部分延续,练习编程解决具体问题。在线编程平台的循序渐进式的练习、竞赛模式的训练,为老师在期末时采用竞赛方式进行考试提供了方便。更重要的是,锻炼了学生在未来工作中解决实际问题的实战能力。

另外,在线平台能记录学生的学习行为、学习效果。通过数据分析,学生可以检视自己的学习效果,教师可以分析自己的教学质量,为改进教学提供重要的决策依据。

四、程序设计大类“金课”的教学质量管控

“金课”的教学质量管控是一个长期维护和迭代优化的过程,需要在过程中建立多级质量管控机制,才能长期有效维持高水平的“金课”质量。

1.准入退出制度下的师资质量保障

授课教师准入和退出机制建设是保障“金课”教学质量的关键。采用对业务能力、教学效果、讲课水平进行实时跟踪与评价的迭代式机制,既可有效淘汰过时的水课,又可为教学团队及时补充新鲜教师,给优秀的青年教师提供讲课的机会。建立合理公平的教学团队的准入与退出机制,可以充分尊重教师个人的意愿和平衡教学质量要求,使进入课程团队的教师更加珍惜得来的机会。严格的准入退出机制会推进水课教师自然淘汰,使真正有意愿教好“金课”的教师倍加努力,认真对待课程建设,热爱教学事业。

2.集体备课制度下的教学内容保障

集体备课制度能聚积集体智慧,有利于制订出高质量的教案和讲稿,从而保证教学内容的质量。迭代式交流可以对教学过程中产生的问题进行及时反馈和有效优化。因此,要重视备课会议的交流与讨论,严格会议考勤,对少数缺席备课会議的教师核减其绩效,对多次缺席备课会议的教师可劝其退出课程组。严格的备课制度能使教师认真对待教学工作,对课程建设具有使命感和责任意识。同时建立有效的激励机制,对在课程组中贡献较大的教师进行绩效奖励。

3.众包方式的高质量题库建设

众包是信息技术领域知识高质量快速增长的重要方式。众包与迭代模式的高质量题库建设是保证“金课”质量与新鲜度的重要基础。信息时代的应用与技术日新月异,程序设计课的练习题除了保留经典题以外,还应增强时代性,产生好的新题,才能使学生在练习中产生乐趣,愿意投入更多精力开展学习。

优秀的高年级学生助教是最了解学生学习特点与需求的群体。因此,应建立一支强大的助教队伍,不断地更新高质量题库,使学生能够得到充分的锻炼和考察。为了紧跟教学进度,出题符合教学规律,由负责的教师进行出题前的范围审核,给出上课的PPT和出题提纲,出题后有专门的教师负责审题。助教和教师给出题目的题解,由全体老师审核后再发给所有学生。这种众包方式的题库建设,能有效凝练知识和经验。多级审核和迭代的方式,能有效提高实验教学内容的质量。

4.多维度的教学过程控制

多维度的教学过程控制体系包括督导专家听课、同行评议(课程组内教师之间相互听课)、教辅听课(班主任、辅导员、教务员等)、助教跟课等。督导专家听课是最常见的做法。科研上进行同行评议是通行的做法,但在教学上进行同行听课并评议则不多见。通过同行评议听课,教师之间可以学习对方的优点,发现对方的不足,有利于组内互助与改进。辅导员听课,有助于其了解课堂学习效果,促进班风建设,协调助教或教师跨教学班组织学习讲座。鼓励优秀高年级本科生和ACM竞赛选手担任助教,通过跟班听课提升其助教水平。

参考文献:

[1] 吴岩.建设中国“金课”[J].中国大学教学,2018(12):4-9.

[2] 宋友. 面向大类工科专业的程序设计课程教学改革[J]. 中国大学教学,2018(11):47-50.

[资助项目:中央高校教育教学改革专项“北航大类专业程序设计课程群建设”、腾讯—教育部产学合作新工科建设项目“面向新工科的计算机专业核心课程改革”(201702002005)]

[责任编辑:夏鲁惠]

猜你喜欢
金课程序设计建设
基于OBE的Java程序设计个性化教学研究
“金课”建设背景下光传输技术课程的建设实践
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
课程思政改革背景下“金课”建设的探索与实践
大学生心目中的“金课”
医学专业“Python程序设计”课程教学改革总结与思考
寒露
高校本科教育“淘汰‘水课’、打造‘金课’”刍议
保障房建设更快了