李香菊,操凤萍,谢修娟,王梦晓
(东南大学成贤学院 电子与计算机工程学院,江苏 南京 210088)
作为应用型大学,计算机专业的学生应该具备计算思维和创新思维能力,复杂计算机系统的认知、设计、开发、应用和优化能力,跨多学科知识的交叉能力和领域快速变化的适应能力,成为具有系统观的应用型、复合型和创新型人才。东南大学成贤学院电子与计算机学院课程组根据应用型本科计算机专业系统能力培养需求,对照“金课”标准,针对Java 程序设计课程存在的问题,分析系统能力内涵,按照“价值为魂、知识为基、能力为重”的理念,从引入课程思政、计算思维训练、完整案例教学、优化考核方式和构建线上教学内容5 个方面建设教学资源,合理提升学业挑战度、增加课程难度、拓展课程深度,构造“价值塑造、知识传授、能力培养”三位一体的教学资源[1],实现对学生应用系统能力的培养,即实现学生能在系统层面自主分析、设计、调优、检错,具备站在系统高度自主解决本领域复杂工程应用问题的能力。
Java 程序设计是一门程序设计语言课程,教学内容、模式一直延用传统方式,因此无法满足应用系统能力培养的要求,目前存在以下问题:①在教学过程中,侧重于编程基础知识、面向对象内容和高级应用等语法知识的正确性描述,教授学生如何编写正确的程序,学生的计算思维能力训练较少,导致思维与Java 语言脱钩,部分学生缺乏使用计算机求解复杂问题的思维方式,无法运用Java 语言完成问题求解,对课程学习失去兴趣和信心;②教学内容之间缺少联系,课程内容以独立知识点依次展开,未能将Java 课程内容融入一个贯穿全课程的案例,课程实验环节也是配套课程知识点进行练习,未进行完整的项目训练,造成学生“管中窥豹”,只能应付考试,针对实际问题的综合运用能力、系统观、团队合作、沟通能力较弱;③考核方式陈旧,传统课程考核方式包括平时成绩(10%)、实验成绩(30%)和期末成绩(60%)共3 个部分,期末成绩比例较重,实验内容较简单,容易形成应试教育,无法较好地反馈Java课程对学生实践能力的培养效果。
针对当前大学课程教育存在的问题,对标“金课”标准,各高校积极开展了“金课”建设要求。江汉等[2]认为注重过程评价、设计多元化的评价方式是“金课”建设不可或缺的一部分,从优化考核内容、突出过程评价、创新考核方式方面开展课程考核改革,能提升教学效率和教学质量。常宁等[3]通过建设教学内容、课程思政、自主学习资源等课程线上资源,结合线下资源,基于慕课+云班课实施混合式教学进行混合式“金课”建设与实践。杜燕红等[4]通过分析线上线下混合式“金课”相关文献,得出线上线下混合式“金课”的研究主要集中在建设路径、教学模式、课程目标、具体课程的应用及课程资源5 个方面。张晓报等[5]提出严格的学生学业考评机制是大学实现金课的6 个重要方面之一。
此外,东南大学成贤学院电子与计算机学院课程组还学习其他高校“金课”建设经验,结合专业培养目标,进行“金课”资源建设、课程思政、过程化考核等多项教改项目,设计Java 程序设计改革方案。具体为,课程以提升计算机应用系统能力为目标,从课程思政、计算思维训练、完整案例教学、优化考核方式和构建线上教学内容5 个方面建设教学资源,全方位提升学生的实践能力。
课程思政就是要寓价值观引导于知识传授和能力培养之中,帮助学生塑造正确的世界观、人生观、价值观,这也是人才培养的必备内容[6]。
在课程建设过程中,通过修订原有课程的教学大纲,充分挖掘思政元素,增加思政案例[7],探索课程思政的教学方法,引入课程思政教学元素培养学生的理想信念、价值取向、政治信仰、社会责任、工匠精神等,促使学生实现自我成长,使其适应快速发展的社会和技术环境,承担起社会建设与发展的责任。具体的课程思政元素如表1所示。
Table 1 Course ideological elements表1 课程思政元素
计算思维是运用计算机科学的基础概念求解问题、设计系统和理解人类行为的一系列思维活动,其本质是抽象和自动化。其中,抽象的是问题的计算过程,利用计算机强大的计算力自动完成,是一种基于计算机的思维方式[8]。学生首先要理解计算机处理问题的方式方法,然后按照其数据加工处理方式进行训练,从而给出问题求解方案,即掌握计算思维能力运用能力使自动化计算的产物服务于现实社会[9]。
Java 程序设计课程对计算思维能力的培养和训练非常重要,主要通过理论课程和实验两种手段来进行训练。实验环节,通过贯穿全课程的完整项目案例,讲解复杂问题的求解过程,在宏观上训练学生的计算思维能力;理论课程,在微观上进行计算思维的认知和应用,采用任务驱动教学法,通过提出问题、分析问题、抽象问题、分解问题、设计算法、解决问题的过程,引导、训练学生运用计算思维的能力,实现课程教学与计算思维培养的有机结合。
程序设计的基本结构包括顺序、选择和循环,是计算机处理问题的基本操作。顺序结构通过解决圆柱体积求解,帮助学生认识到程序需要定义变量、输入,根据计算公式计算结果,让学生初步掌握通过算法解决问题的基本要求;选择结构通过判断是否具备返校条件,列出学校返校要求,然后给出各种情况进行分析,进而讲解选择结构的原理及实现方法;循环结构通过输出各种形状的图形进行讲解,不断加大图形复杂度并依次展开讲解单循环、嵌套循环,帮助学生理解循环的意义及处理问题的方式,再通过百钱买百鸡和鸡兔同笼等经典问题讲解枚举算法,引导学生运用循环方法解决实际问题。
对于复杂问题求解,程序设计往往采用抽象和分解的方法,通过解决多个小问题求解复杂问题。然而,每个小问题的求解就是通过函数的定义和应用来实现,再通过函数间的调用完成复杂问题。其中,函数的定义可增强程序的可读性和可扩展性,并且函数可重复使用,能减少代码量。为此,在课堂上提出模拟简易计算器的要求,引导学生将问题划分为加、减、乘、除4 种基本操作,在主函数中调用这些函数,通过参数传递计算数据,既能让学生厘清函数的定义,还能训练学生对函数调用的熟练程度、解决问题的思路——抽象和分解。此外,通过讲解斐波那契数列的求解,引出递归的概念,讲解递归求解的两个关键因素——结束条件和递归公式,给出递归函数的定义,通过迷宫求解案例来训练学生对递归函数的应用能力。
Java 是面向对象程序设计语言,类的定义及使用是课程的重点。在扑克牌游戏中,引导学生对扑克牌进行抽象定义,既包括数字和花色两个关键信息,还有读取数字、花色、比较大小等操作,以进一步定义扑克牌类别。通过该案例引导学生掌握面向对象的重要概念——类、继承和多态。
传统Java 程序设计课程教学大纲设置的实验内容主要是帮助学生掌握课程知识点,在“金课”建设中已保留这部分,还额外增加贯穿课程的实践案例——扑克牌游戏,并将游戏功能拆解后融入授课过程中,以逐步完善系统,直至实现整体游戏。扑克牌游戏的实践案例主要包含计算类游戏(24点);对弈类游戏(大小、斗地主等)。
(1)任务提出。课程第一次课展示扑克牌游戏的效果,帮助学生了解游戏应具备的功能及难度;然后分小组讨论游戏项目解决方案,锻炼学生系统分析能力;最后教师对讨论结果进行指导,引导学生划分项目功能点,拆分子项目。如表2 第二列,教师给出实现子项目所需的知识点及对应章节内容,进一步向学生介绍课程的教学内容,使学生在宏观上了解课程教学内容,有助于学生学习该部分课程内容。
Table 2 Practice case knowledge points表2 实践案例知识点
(2)分阶段实现项目子系统。在每个章节教学过程中,首先进行理论课程教学和基础实验练习,然后增加案例实践环节,运用该章节学习的知识点实现相应的子项目并不断集成,逐步扩大项目功能。在案例实践环节,采用分小组的形式,各小组成员能充分讨论项目的具体实现方案,分工完成相应的设计、编码、测试和文档工作,在提升自身实践能力的同时,能进一步提升整个团队的合作能力、沟通能力及集体责任感。
(3)项目总结及优化。随着课程学习到达最后阶段,学生逐步完成了整体项目,最终进行调试优化。案例完成后,学生完成整体实验报告,包括项目分析、设计、实现和测试等内容,总结项目开发过程中遇到的问题及解决方案。同时,每个小组录制视频,演示项目运行效果,讲解设计方案和实现思路,通过贯穿课程的实践项目串联课程知识,训练学生对应用系统的认知、分析、设计与实现能力,提升学生的知识综合运用能力,以进一步提升学生解决复杂问题的能力,即计算机应用系统能力。
传统课程考核主要通过试卷和实验报告两种形式,只能了解学生的知识掌握程度,缺乏对实践能力、专业素养和价值观的考核,无法验证是否实现了课程教学目标。因此,在“金课”建设过程中,加大过程考核成绩在课程成绩中的比重,强调学生学习全过程的全面考核,从对学生知识、能力、创新和素养的综合要求上体现整个教学过程与学习过程的结果,建立健全能力与知识考核并重的多元化学业考核评价体系[10],新的课程考核方案如表3所示。
Table 3 Process assessment scheme表3 过程化考核方案
(1)课内表现。课程考勤采用慕课堂平台来及时掌握学生出勤情况,并追溯缺勤原因。课堂学习态度主要通过考查学生在课上回答问题的正确性和积极性,了解学生的学习效果和对课程教学的反馈,以此调整后续教学。对学有余力的学生,在线上学习平台提供高、中、低3 种难度的题目,供学生课下自行选择进行训练,并将参与情况作为考核之一。
(2)阶段性测试。在课程进行过程中开展3 次阶段性考核,以验证学生前期学习效果,督促学生按照课程节奏进行学习。考核题型包括选择题、编程题。其中,选择题采用中国大学MOOC 平台,设置限时题库,从题库出卷;编程题采用线下模式。为了真正实现考核的意义,针对成绩不理想的学生反复进行补考,直至考核通过。
(3)实践环节。为了提升学生实验内容学习质量,课程实验采用MOOC 平台的在线评判系统,教师添加实验题目,给出全方位的测试用例,以检测学生提交实验代码的正确性。如此,既能提升学生实践能力,又能帮助教师高效地掌握学生学习效果,开展针对性教学。从平台统计数据可知,采用OJ 批改模式能提升学生实验成绩。调查发现,学生如果未能满分通过,会分析、查找错误原因,直至满分通过,这个过程既提升了学生的自我分析和编码能力,又激发了学生学习兴趣。此外,实践环节还包括贯穿课程的实践项目,教师根据学生提交的程序代码、报告文档和讲解视频,给出相应的实践分数。
(4)课外拓展。为了提升学生专业学习热情,还增加了课外拓展考核环节,主要包括以下两个方面:鼓励学生积极参加学科竞赛、大学生创新项目、兴趣小组、教师科研项目开发[11];布置一些课程相关的课外学习任务,以训练学生的文献查阅能力、资料分析学习能力、文档编写能力,并拓展学生专业领域知识。
课程建设过程中,在中国大学MOOC 平台开设了校内SPOC 课程Java 程序设计,建设了线上教学内容,主要包括课程大纲、课件、课程教学视频、单元练习、课程项目、补充知识等内容,重点建设教学案例视频和单元练习,采用案例教学、任务驱动教学法促进计算机应用系统能力培养。
(1)教学案例设计。在课程改革过程中,既要完成课程基本内容授课,又要满足应用系统能力培养要求。为了解决课时紧张的问题,东南大学成贤学院电子与计算机学院课程组通过建设线上课程资源,将课程基本教学内容录制为典型教学案例,并发布在线上课程,作为线下教学的补充资源,将其作为课下学习任务布置给学生,达到课程训练目的。本文按知识点分解Java 课程的内容,为每个知识点或若干个小知识点设计具有典型性、实用性的教学案例[8],将其录制为视频发布在线上平台。其中,典型性案例使学生以任务为载体,从特殊到一般,举一反三,实现对学生逻辑思维能力和自主学习能力的培养;实用性案例激发学生的学习兴趣,使学生将探究欲转换为主观愿望[12]。通过线上教学内容辅助线下教学,方便学生随时学习,及时补缺线下学习时未能掌握的知识点。
(2)单元练习设计。以当前单元知识点为主,结合已学单元的知识点,同时考虑后续单元知识点,设计出具有实用性、综合性、层次性和开放性的单元练习[12]。学生线上学习的数据有利于教师掌握学生学习情况,可在线下教学时进行针对性指导,提升教学效果。通过建设线上教学资源,学生学习不再局限于课堂当中,既能有更多时间让教师讲解,还能让学生有充分的时间训练完整案例,使教师能顺利开展过程化考核,有助于培养学生的应用系统能力。
学生在课程学习过程中,始终保持较高的学习兴趣[13],课堂讨论参与度、项目完成度、学习成绩相较于之前有所提升,如图1所示。
Fig.1 Student transcript distribution from 2019 to 2021图1 2019-2021年学生成绩分布
同时,学生实践动手能力和学习能力提升明显,在课外获得蓝桥杯全国软件和信息技术专业人才大赛Java 组国家二等奖和优秀奖各一项,省级三等奖两项,成功申报校企合作大学生创新项目两项。
东南大学成贤学院电子与计算机学院课程组对标“金课”建设标准,通过课程改革形成了“价值塑造、知识传授、能力培养”三位一体的课程资源[14],进一步提升了学生的计算思维能力和应用系统能力,通过树立正确的价值观,为后续专业课程的学习奠定坚实的基础。
此外,该课程资源全面涵盖整个教学过程,对电子与计算机专业的其他课程的金课建设也具有一定的借鉴意义。