APP下载

大学高年级学生的第二编程语言的学习方法探究

2024-07-24肖旋孙晓宁

电脑知识与技术 2024年17期

摘要:计算机类专业的大学生,除了在大一、大二阶段学习一门基础编程语言外,到了大学高年级阶段(大三、大四),他们通常会选择学习第二门编程语言。同样,这一趋势也出现在其他理工类专业,甚至文科经管类专业中。在教学实践中,如何使学生高效地学习第二编程语言,有效掌握并区分不同编程语言之间的编程语法和技巧,是课标要求下值得深入探讨的问题。文章旨在归纳总结影响学习效果的重要因素,一方面通过分析学习过程中产生的正负反馈效应,探讨如何克服负面效应并利用正面效应;另一方面探究如何通过教育者的外部教学引导、评价机制等手段,帮助学生更好地学习第二编程语言,以供教学参考。

关键词:第二编程语言;高年级学生;教学方法;正负反馈

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2024)17-0072-03 开放科学(资源服务)标识码(OSID) :

1 问题的产生

经过低年级阶段的学习,学生们一般通过C语言或C++语言掌握了编程语言的基本语法和面向对象编程的技巧。到了高年级阶段,他们通常会选择学习Java、Python、JavaScript、Go等语言中的一种作为第二编程语言。当然,也有部分学校将Python作为第一编程语言为学生开设课程。基于教学实践,笔者发现学生在学习第二编程语言的过程中,会受到正负反馈、基础水平、专业背景等多种因素的影响。

1.1 正负反馈的影响

在本科低年级阶段,计算机及信息类相关专业的学生通常将C语言和C++语言作为第一编程语言学习,这为他们构建了基础性的编程思维,并为高年级阶段第二编程语言的学习带来了正反馈和负反馈作用[1]。正反馈作用主要体现在第一编程语言为学生打下了编程基础,使他们对编程不再陌生或恐惧。而负反馈作用则源于两种编程语言语法和使用特点的差异,导致学生在学习第二编程语言时容易带入第一编程语言的习惯,进而在编写代码时频繁出现语法错误。

1.2 基础水平的影响

高年级学生虽然已具备一定的编程基础,但水平参差不齐,对教学产生了显著影响。与低年级学生初学代码时的表现不同,高年级学生的编程水平存在很大差异[2]。部分学生仍停留在基础编程层面,对基本语法的运用常出错,如循环语句、分支语句使用不熟练,类的写法未掌握,函数运用不到位。而高水平学生则基本无基础语法问题,能迅速编写出可运行的小程序,且懂得精简代码,实现简洁、实用、易懂的编写原则。鉴于这种差异,教师很难兼顾不同层次学生的需求。然而,由于高年级学生已学过编程基础知识,教师在讲解第二编程语言语法时,不必过分集中解释基础语法点,而应鼓励学生通过联想和记忆来融会贯通。

1.3 专业背景的影响

不同的专业背景对学生学习第二编程语言的效果具有显著影响[3]。在给计算机类专业学生教授第二编程语言时,教师应意识到他们已具备良好的编程基础和计算思维。因此,教学应以提高要求为主,初期注重点拨和引导,让学生更轻松地学习编程语言,同时增加学习乐趣和兴趣。后续阶段,应鼓励学生自主学习,使教师授课更加顺畅。对于基础较好的学生,教师可鼓励他们尝试不同解法,并在班级网络群中分享创意代码,给予适当加分以激励其积极性。

例如,计算机专业学生在学习Python时,相较于C++和Java等语法严格的编程语言,会感觉相对容易。教师应强调Python的特点和优势,使学生掌握其语法的同时,善于利用Python的第三方库优势进行编程,明确Python的适用场合。当教师为非计算机专业的理工类学生(如自动化、微电子等)教授Python编程时,由于这些学生往往学过C语言,教师须详细讲解两种编程语言的差异和适用场合,以提升教学效果[4]。目前,一些经管类专业也在逐步推广Python编程语言的学习。对于这类学生,由于他们可能学过一些类似统计工具的简单工具语言(如SQL数据库查询语言),学习Python时会相对吃力。教师须花费更多时间备课,详细讲解基础语法,因为文科学生在开始时往往缺乏完整的编程思维,进入状态会更为困ImcHsGlUjQJ7fiAZ6WUG+jHMEWcUfu9ktGnzxuA4rNs=难[5]。基于现实反馈,许多文科学生的编程水平接近于计算机专业低年级学生的初学阶段。教师可以通过大量实验课练习,提高他们的基础编程能力。从不同专业学生的学习过程中可以总结发现,计算逻辑思维的构建尤为重要,它决定了学生是否能理解编程解决实际问题的原理和过程。

2 教学建议和方法

2.1 翻转课堂,学生自我总结

教师在给大学高年级学生上第二编程语言课时,让学生有意识地对比前后所学的两种编程语言,是非常必要且有意义的。上课时,教师应强调学生课后自主学习,并自主比较编程语言之间的语法差异及运行差异[6-7]。如图1所示,可以明显看出C++和Python在编译原理上的显著差异。C++的代码直接被编译成机器码,因此使用C++编写的程序在执行速度和编译速度上会更快一些,特别适合大型游戏的开发和一些大型系统软件的开发。而Python作为解释型语言,需要先通过解释器逐条解释代码后才能执行,因此执行速度会相对较慢。但在代码量较少的情况下,这种速度差异并不明显,所以使用Python编写小程序并无明显劣势,只是不适用于对响应速度要求较高的软件产品开发。

为了让学生更好地理解两种编程语言的差异,教师可以在实验课阶段布置课堂练习,并通过翻转课堂的方式,让学生讲解自己所做的习题。教师可以适时提问,引导学生讲述与上一种编程语言之间的异同点。这种安排能够显著提升课堂效果,使学生们快速掌握新知识。此外,在教授第二编程语言时,鉴于学生已有第一编程语言的语法基础,教师可以适当压缩基础语法课的课时量,如面向对象的语法讲解可以用两个课时完成,并增加一两节实验课进行练习。

面对负反馈时,笔者建议教师应引导学生自主总结和训练,这样可以使学生的知识印象更加深刻,在应用语法时更容易区分两种编程语言之间的差异。而对于正反馈,教师可以利用这一效应,合理安排课时,减少语法课时,增加案例练习的课时,使学生学习到更多的应用知识,同时教师也能更轻松地完成基础教学目标。

2.2 因材施教,精选案例

对于教师教学而言,随堂练习是检验学生水平的有效途径。针对不同专业的学生,教师应采取不同的教学案例。首先,对于计算机类专业的学生,教师应侧重在课堂上讲解易错的语法点,并采取讲完即出题的方式,让学生在课堂上解答习题,利用电脑在课堂上当场演示程序的运行结果。其次,对于像Python这样拥有大量第三方函数库的编程语言,教师可以准备一些经典案例[8],结合年轻学生的兴趣特点进行备课和课堂讲解。此外,教师还应注意一些教学技巧,特别是针对非计算机专业的学生,可以用更生动有趣的案例来吸引他们的注意力。例如,考虑到学生们普遍喜欢二次元卡通动漫形象,在讲解图像分析和提取的代码时,可以适当选取当下流行的卡通动漫或游戏人物图片作为演示素材。如图2所示,相较于传统图像处理案例中的Lena图片,选用学生们热衷的电子游戏角色作为素材,更能吸引学生注意力,活跃课堂氛围。

3 教材选择及评价方法

3.1 依据学生基础,精选教材和课件

教学课件的选择,对于吸引学生课堂注意力、提升授课效率具有至关重要的作用。由于高年级教学内容中,针对高年级学生的编程语法的讲授会相对减少,PPT材料里的内容安排需要分清主次,详略得当,章节之间的逻辑衔接必须自然合理。教师也需要根据不同专业学生的特点,来选取不同的教材,如计算机类专业和非计算机类专业,文科类专业和理工类专业,教材的选择应当有所区别。教师们应当认识到:不同的教材,难度不同,针对的学生群体也不同;某些教材实践案例较多,适合理工类学生;某些教材理论较多,适合文科类学生。

3.2 根据学生能力,优化测评体系

对学生进行合理测评是编程类课程中的一项重要内容。有效的测评能够极大地提升教学效果。测评的设置需要结合课程属性和教学内容,如果课程性质为选修,应以考查学生掌握水平为主,结课考试可以采用理论考试与结课大作业相结合的方式。例如,结课大作业可以以一个课程设计任务为形式,让学生通过编程语言设计一个可以运行的小程序,并要求学生向全体师生展示和汇报,教师进行提问,最后要求学生上交代码和文档。这种方式能够更好地考查学生的编程能力,有助于学生将所学编程知识应用于实践,教师也能更直观地评价学生的真实水平。

3.3 基于作业反馈,精讲代码易错点

一般而言,编程类课程的作业主要以代码文件和代码运行结果为主。然而,代码题的答案并非唯一,多种写法均可得到正确的调试结果[9],对教师而言,可能增加批阅量。因此,教师在鼓励学生用自己的方式编写代码的同时,应引导学生注重简洁、有效、实用的代码编写原则。特别需要注意的是,一旦发现学生的代码作业中存在普遍性的语法错误或逻辑错误,教师应及时总结,并在课堂上统一讲解,将这些错误作为经典案例进行说明和总结。

4 教学总结与展望

在编程教育日益普及的今天,一些偏经管类的文科专业也逐步开设了编程语言课程。时至今日,编程技能已经不再是计算机类专业学生的专属。为了更好地适应时代需求,计算机编程类课程的教师需要运用更科学的教学技巧来教授不同专业的学生[10]。教育者需要根据学生的基础、学科背景、计算思维构建程度的不同,因材施教,通过不同的教学方式和教学手段帮助学生构建编程思维,引导学生更快更高效地掌握编程技巧[11-12]。教师在教学过程中应尽可能利用正反馈,规避负反馈,使学生的第一编程语言学习经验能够促进第二编程语言的学习。

参考文献:

[1] 许晓飞,吴迎年,陈启丽,等.类比迁移学习法在工程实践课程中的应用探索与实践[J].计算机教育,2023(7):115-118.

[2] 金枝,肖尧,黄敏,等“. 人工智能编程语言” 课程思政设计与实践[J].电气电子教学学报,2023,45(2):96-99.

[3] 宋鸿梅,曹志民,韩连福,等.Python编程语言实例教学探讨[J].电脑知识与技术,2022,18(2):158-159,177.

[4] 骆剑平,郑能恒,邹文斌,等.Matlab与Python程序设计课程教学探索[J].高教学刊,2022,8(18):135-137,141.

[5] 谢小红,李文韬.Python语言在高校新闻传播类专业的教学探析[J].电脑知识与技术,2022,18(28):171-173.

[6] 于晓雅.编程语言教学到计算思维培养[J].中国民族教育,2021(5):14.

[7] 艾明晶.以Python为载体的“大学计算机” 课程计算思维能力培养实践[J].中国信息技术教育,2021(7):97-100.

[8] 肖克来提.基于Python的编程导论教学改革探索[J].科技风,2021(9):97-98.

[9] 徐娟,肖平.Python语言程序设计课程辅助教学方法探索[J].创新创业理论研究与实践,2020,3(8):24-25.

[10] 李鹏,孙英丽.微课在高校编程语言教学中的应用模式构建研究:以“程序设计语言C”课程为例[J].山东教育(高教),2019(Z2):95-100.

[11] 田丰维,冯永安.计算机软件JAVA编程特点及其技术应用[J].教育教学论坛,2019(21):268-269.

[12] 赵晨懿.基于计算机编程语言的区别、联系及发展前景的讨论[J].数字通信世界,2017(8):29-30.

【通联编辑:代影】

基金项目:工业和信息化部基础软件质量控制和技术评价重点实验室2022 年信创实训课程体系研究课题“关键基础软硬件迁移适配——集中式数据库系统原理实践”