基于计算机通识课教学的“新工科”素养培育研究与实践

2022-10-17 06:42苑丽红孙爽滋
电脑知识与技术 2022年25期
关键词:通识新工科工科

苑丽红,孙爽滋

(长春理工大学计算机科学技术学院,吉林 长春 130022)

2017年以来,经过“复旦共识”“天大行动”“北京指南”三步走,我国高等工程教育改革完成了以新工科建设为主题的纲领性设计并开始实施。“新工科”建设是一个庞大的系统工程,实现该目标不仅需要“探索建立工科发展新范式”“构建工科专业新结构”[1]等系统层面的规划指导与体系设计,也需要具体课程的高质量实施。

近年来,针对计算机通识课的新工科教育改革得到越来越多的重视,相关的研究方兴未艾。如何钦铭、王浩提出了围绕通识型课程、技术型课程、交叉型课程组成有机关联的具有层次的“宽、专、融”[2]课程体系;姚琳、宋晏、石志国[3]论述了基于深度和广度两个层面提升新工科中计算机领域新技术的应用,并以此构建面向新工科的大学计算机基础课程体系等;张瑾、傅向华、李晓红等研究了新工科背景下计算机基础课程或计算机基础实践课程的具体教学改革问题等[4-6]。

无论是课程体系的构建还是课程内容、教学方法的改革,成功的关键是理念先行。理念指导目标,目标与活动、任务配准,才能真正实现育人需求。作为一线教师,笔者在近年教学实践中对标新工科教育理念与内涵,对新工科素养的培育问题进行了思考与实践。

1 丰富课程模块群,为新工科人才培育提供上游支撑

新工科建设推进以来,为契合“将产业和技术的最新发展、行业对人才培养的最新要求引入教学过程,更新教学内容和课程体系,建成满足行业发展需要的课程”[1]的新工科行动需求,课程组从不同专业培养需求出发,以新工科核心素养培养为驱动,在任课教师有限的前提下,通过扩展必修、增设选修的方式,在原有《计算机基础与C程序设计》(理工科)、《大学计算机基础》(文科)、《数据库技术与应用》(文科)之外,增设了《C++程序设计》《Python程序设计》《数据结构》《电子商务》等课程模块,并在计算机基础知识模块中增加了大数据与人工智能、物联网、区块链等内容模块,丰富了课程模块群,革新了课程内容,保证了课程的与时俱进,从顶层设计上为新工科人才培养提供了支撑。

2 引导“知行合一”,强化新工科人才培育根基

强化实践创新创业能力,延展实践育人平台,强化教学实验是新工科建设的重要内涵之一[7]。高校计算机通识课面向全校学生,受限于教室、硬件,往往实验课时较少。以长春理工大学《计算机基础与C程序设计》通识课为例,16学时的实验无法达到训练要求。为避免“纸上谈兵”,课程组采取如下举措。

“给目标,给方向”。对必修课,除实验课独立设课、独立给分,期末独立考核程序设计实践能力外,在对应理论课教学大纲中,明确把在编译器下调试并设计程序的能力考核再度作为重要课程目标。通过目标驱动强化实践地位。

“给平台、给任务”。“工欲善其事,必先利其器”。利用学堂云SPOC教学平台与在线判题平台,以清晰的任务驱动的形式强化实践。通过学堂云平台,布置程序调试的讨论任务,督促学生发程序调试截图并完成讨论;通过PTA在线判题平台布置编程作业,督促云实践,解决实验学时不足的痛点,提升学生编程实践量。

“给机会、给时间”。通过翻转课堂设计,理论课堂去粗取精,给学生留下一点时间,当堂利用电脑手机编程App或PTA平台完成“小粒度”程序验证或设计。对于手机App编程,学生可通过雨课堂平台的“投稿”功能发布截图,观摩讨论;对于PTA平台编程,教师利用授课电脑当面登录平台查看,针对典型错误予以点评,未完成者可课后继续。

3 注重计算思维与工匠精神培养,契合新工科人才培育高阶需求

在新工科人才的培养中,实践是根基,学科思维与工匠精神培养是核心。设计典型案例,挖掘问题背后的思维特质,精准训练计算思维。如图1为计算机基础网络部分的案例举例。程序设计部分以short int短整数类型求解如65534+1等训练“溢出、预防、容错”的计算与工程思维,通过“逆序输出正整数的各位数字”等训练递归思维,通过“调用排序函数实现文件存放的数据排序”等训练分解、分层的构造思维,通过“多字符串排序的二维数组与指针数组解法”培养对存储速度、存储容量的权衡,通过“学生数据表的插入与删除的数组实现与链表实现”训练对程序执行时间与空间的权衡等,不一而足。

“工匠精神”的培育不是空中楼阁。刻苦钻研、严谨细致、精益求精、协作意识、管理思维等这些工程人才需要的内在素质培养自然融合在计算思维培养的过程中。

实际上,PTA平台程序案例的多测试点设计在培养软件工程的严谨“测试”这一学科思维习惯的同时,也完全是对学生钻研精神的一种培养。另外,也可以通过项目驱动,基于项目对比、错案调试、项目递进的训练以及布置小组作业实现项目合作等方法,培育工匠精神。

项目对比:一个百分制转换成等级分的全if编写与典型的if-else-if编写都是对的,为什么推崇典型阶梯式if-else-if结构?辗转相除法求解最大公约数、利用break求解素数,方法到底比其他解法“经典”在哪里?通过程序对比,训练学生学科必备的批判思维,让学生在对比中体悟到“做对,更要做好”的精益求精的工匠思维。

错案调试:初学循环之时,一个因while()后多写了分号、或循环体少了{}而造成的死循环bug的趣味案例,以及其他精准对准易错点的程序调试,必然能让学生对程序执行流程有深刻的理解,并在反复出错与叹息中深刻体悟到一丝不苟、严谨细致的工匠精神。

项目递进:以特定项目为主线、贯穿多个教学过程。例如“鸡兔同笼”(输入鸡兔的总头数h、脚数f后,求鸡数x、兔数y)问题的求解,可以贯穿到顺序结构、分支结构、单重循环、双重循环的递进式学习中。顺序结构求解是依靠人工解方程得到x和y的表达式,知识目标是赋值表达式,高阶目标是初步区分数学思维、计算思维;分支结构求解则加入简单的数据合法性的判断,知识目标加入了分支结构,高阶目标是算法设计得完善与健壮;单循环求解则穷举所有可能的鸡数x,求出每一个x对应的兔数y=h-x,判断x、y之和是否等于脚数,高阶目标是“执行自动化”的计算思维;而双循环求解则通过外循环穷举x、内循环穷举y求解。通过逐步深化计算思维,并引导对算法正确性与健壮性的认识,对工程思维和工匠精神的培养大有裨益。

此外,日常可布置小组编程作业,让学生深入体验采用抽象和分解的方法来控制庞杂的任务这一典型计算思维,培育工程人员必备的管理思维、协作意识。

4 融合专业与个人需求,践行新工科人才培育的“以人为本”

计算机通识课面向全校学生。实践教学中应以人为本,一方面,实践题目划分为基础题目、拓展题目、ACM瞭望等,兼顾课程大纲的统一性和学生个体的差异性。从目标出发,综合学情,设计难度递进式分层题目(图2)并利用极域电子教室软件配合题目的分组分发,在实践教学中依据学情适当差异化教学。另一方面,融合专业需求,设计融入专业的教学案例(表1仅为部分示例),引导学生关注计算机学科与本专业的交叉融合,提升学习兴趣。

表1 融合专业需求的题目设计(部分)

图2 实践题目的分层设计

5 挖掘通识课的育人价值,把握新工科人才培育思政方向

新工科建设目标归根结底是为我国走向社会主义现代化强国服务。立德树人是新工科的重要内涵之一[7]。科技与人文的交织、价值取向的引领是通识课义不容辞的责任[8]。

教师应理念先行,把家国情怀同课程知识与能力目标灵活融合。2022年疫情期间,连续的网课考验师生心态,课程组在部分班级设计了针对疫情与计算机的话题讨论、疫情与数组应用的开放性编程。鼓励学生“每逢大事有静气”,与其“疫蹶不振”,不如“我为疫情编程序”。讨论环节中,同学们对“政府组织下的、互联网为基础的防控体系”展现了深度认知,体验到“基于大数据的流调有助于精准防控”、期待“人工智能与机器人技术的进步缩减工作人员的劳动强度”,表示“不应成为电子产品的奴隶,而应学习计算机技术为社会做贡献”。在开放性编程环节中,学生编制的原创程序更是令人惊喜:疫情对话小程序、小区测温问题、四人寝室的病毒动态清零模拟、体温记录查阅小程序等,百家争鸣,闪耀着深度思考的火花,真正践行了“事上磨炼”。

6 注重开放式或半开放式编程布置,提升工科课程的“两性一度”

疫情期间的开放性编程只是课程开放性编程布置的一个缩影。实际完全可根据学情在部分章节、部分班级灵活实施,实践对比表明效果明显。例如,在结构体一章布置“电子时钟”的编程,多数班级直接指定了时钟的显示格式,此时程序效果千篇一律,而个别班级采用半开放布置,则设计成果在“北京时间二十四小时计时法”之外,还出现了“十二时辰计时法”“国际时间计时法”;期末前的开放题目“编程展示“从点歌菜单设计、食堂点餐模拟,到记单词小程序、石头剪刀布和扑克牌小游戏、小型学生信息管理到高考志愿填报小模拟、融合专业的应用光学目镜光线自动追击程序等,很多同学展现了解决复杂问题的综合设计能力和创新思考能力(图3为部分示例截图),整体设计成果体现了高度的探究性和个性化。

图3 开放性程序设计成果示例(部分)

7 结束语

文章针对如何在计算机通识课中培育本科生相关核心素养,从六个维度进行了研究,所探讨的思路和方法综合关注了学生知识、情感、态度、价值观、学科思维与实践能力的培养,提升了学生学习获得感、课程挑战度。践行新工科教育理念需要长期实践,后续还需要在教学方法、教学模式、教学考核的诸多环节持续改进,才能使课程教学不断贴近新工科理念与内涵。

猜你喜欢
通识新工科工科
简述大学通识课教学改革
面向新工科的Python程序设计交叉融合案例教学
通识少年“种”石油
通识少年小课堂 血液之旅
通识少年·拿破仑
工科研究生教学模式的思考与创新