段延超 吕永飞 李 鑫
河南开封科技传媒学院 河南开封 475001
我国高等院校分为研究型大学、应用型大学、技能型大学。《国家中长期教育改革和发展规划纲要(2010—2020年)》指出:“不断优化高等教育结构,优化学科专业、类型、层次结构,促进多学科交叉和融合,重点扩大应用型、复合型、技能型人才培养规模。”[1]
国家对应用型人才培养日益重视。为了培养高质量的计算机类应用型人才,提升学生的综合编程能力是十分重要的。
C#是计算机类本科生学习的编程语言之一,C#程序设计课程属于比较典型的应用型课程。通过该课程的学习,学生应能熟悉.NET Framework框架,掌握Visual Studio开发工具的使用,掌握C#的基础语法,掌握面向对象的思想,熟悉常用类的使用,掌握文件读取,掌握数据库读取等,还需掌握WinFrom桌面应用程序、WPF桌面应用程序、ASP.NET网站、嵌入式等其中至少一种方向的开发技术。
本文讨论C#程序设计课程在应用型人才培养的教学探索,旨在提高学生对编程语言的理解程度,提升学生对“数据结构”“数据库”等课程的贯通能力,提升学生的编程能力、促进产教融合等,为社会主义现代化建设培养出高素质的应用型人才[2]。
大多应用型院校在教学中存在很多问题,不利于应用型人才的培养,其培养的学生不能满足社会和企业的要求[3]。下面从C#程序设计课程的角度分析应用型人才培养在教学中所面临的主要问题。
国内高校普遍为计算机类新生开设C/C++课程作为入门级的编程语言课程。偏软件方向的计算机类学生还会学习到Python、Java、C#等编程语言课程。一方面,C#程序设计课程一般在讲授完C、C++和Java等编程语言课程后才会讲授。因此,大部分学生认为既然已经学习了其他编程语言,C#学不学无关紧要。另一方面,C#编程语言吸收了C、C++、Java等多门编程语言的优点,特别是与Java编程语言基础语法高度重合,在讲授到相类似的知识点时,造成学生已经掌握的假象。另外,互联网公司招聘Java工程师的薪资和人数要远多于C#工程师的,这也是学生不予重视课程的主要原因之一。
编程语言类课程需要学生勤加思考、多加练习,才能更好地掌握编程语言。在学习完C#语言基础后,学生会继续学习与Java等语言差别较大的知识点,如WinForm、WPF桌面应用程序的开发等。然而,由于学生在课程前期不予重视,中后期学习便有了难度。这就导致了学生理论课不重视,实验课不愿动脑思考、不愿意多敲代码,从而无法跟上后续课程的讲解,引发了学生畏学情绪。
编程语言类授课模式一般分为理论和实验两个独立课程。在多媒体教室讲授理论课程,让学生掌握基础理论知识;在机房引导学生做实验,对理论课程进行验证,特别是提高学生的编程能力。然而,通过调查发现,在理论课上遇到问题,很少有学生在实验课去验证问题和解决问题。另外,实验内容采用教材中的实验,未能根据学生掌握的情况重新设计。因此,导致理论课程与实验课程结合不紧密的情况出现。
由于教材各章节知识点较为独立,按照章节逐个讲解,导致知识点过于零碎。例如,在讲授完数组和集合后,提问学生数组和集合的差别,大多只能简单地说出如何使用数组、集合,但不能回答出两者的异同处。再者,课程的先修课程包含数据库,在讲解完ADO.NET访问数据库后,只有少数学生能理解C#程序设计课程和“数据库”课程之间的联系。在课程全部结束后,大多数学生只能根据需求写出具有某个功能的代码段,而不能系统地、完整地开发一个完整的项目。
根据多个国内招聘网站的招聘需求分析,C#工程师职位要求:本科生要精通C#语言,熟悉WPF、WinForm、ASP.NET开发技术,熟悉常规框架的使用,熟悉数据库技术等。然而,教师受课时限制很少能讲解常用框架、设计模式等方面知识,学生往往不能满足企业招聘要求。
应用型人才的培养从培养目标、培养方案、教学模式、教学评价、学校制度等方面改革,形成全新的人才培养体系[4]。C#程序设计课程教学改革的重点是提高学生的编程能力,通过完整项目将所有知识点串联起来,而不是停留在只学习语法基础上。分析国内高校在教学中普遍存在的问题,需要对教学模式进行改革。具体改革内容从以下几方面进行探索,实施了教学改革后,发现学生编程能力和成绩普遍得到了提高。
3.1.1 对比教学
由于C#的基础语法与Java相似度较高,与C++、Python等也有很多相似之处。为解决学生对课程重视程度不高的问题,在讲授C#基础语法的同时,采用对比教学的方式,讲解C#与Java、C++等编程语言的异同,引起学生的兴趣,提升学生对课程的重视程度。在让学生掌握C#基础语法的同时,也提升对其他编程语言的理解。对比教学讲解如表1所示。
表1 对比教学主要涵盖知识点
3.1.2 理论实验一体化
教学改革前,理论课学时和实验课学时均为32学时,合计64学时。为解决学生对课程有畏学情绪、理论课程与实验课程结合不紧密的问题,改变理论、实验分开授课的方式,在保持64学时数不变的前提下,重新设计教学大纲、教学进度表、授课内容等,使课程全部在机房授课。让学生在练中学、学中练、遇到问题、解决问题,促进学生提高编程能力。
3.1.3 分组管理
为了产生更好的教学效果,对学生进行分组管理,每组人数根据机房每排计算机个数所决定,例如,每排10人组成两组,每组人数4~6人,每个小组内推选出1名编程能力较强的学生作为组长。组长除了负责指导小组成员学习外,还要向教师反映小组成员学习情况,便于教师根据情况及时调整教学进度。除此之外,成立小组的目的也是为了培养学生的团队合作能力。各小组需要在学期结束前合作开发完成一个综合设计的项目。
3.1.4 综合案例教学
为解决课程知识点零碎,无法形成有机整体和不满足企业招聘要求的问题,将教材中知识点和企业招聘要求的知识点串联起来,设计综合案例(见图1),形成一个有机的整体,从而引导学生高效学习。综合案例源码直接发给学生,源码主要包含课堂学习和课下自学两部分内容。课堂学习中的案例由教师讲解知识点后,让学生自主实现类似功能,同时给学生提供解决问题的示范代码。课下自学中的案例是对C#基础知识的扩展,学生根据情况自行选择性学习。综合教学案例设计好后,不仅极大地提高了教师的教学效率,而且更好地帮助了学生进行自主、系统学习。
图1 C#程序设计课程综合案例
3.1.5 课程作业
课程改革后不再设置纸质版作业,全部由电子版作业构成,课程作业分为思维导图和上机练习两部分。在讲解C#基础知识期间,每周提交一次思维导图作业,夯实理论基础;在讲解使用C#开发桌面应用程序等内容期间,以编程为主,对思维导图不做强制要求。上机练习则要求每次课程结束时都要提交,为了便于教师掌握学生作业完成情况,所有上机练习源码以章节为单位创建项目放在同一个解决方案中,不再保存为多个解决方案。
将C#程序设计课程分为初期、中期和后期三个阶段,其中初期和中期在教学过程中展开,后期采用产教融合的方式在课程结束后展开。初期主要以打牢基础为目标,系统性地讲解本门课程。吸取校外培训机构如传智播客等教学模式,提升学生的学习积极性、动手能力[5]。中期设立案例库,将真实案例、常用架构、模式融入。这可以让学生完成案例,使学生熟悉一般架构,提高学生个人的编程能力。最后,学生以小组的方式共同完成一个完整的项目,以此培养学生的协同合作能力。后期与学校产业学院共同合作开发项目。通过种方式,既提升了学生的编程能力,也能让企业从中获利。
教学改革前,课程考核方式为平时成绩占30%(平时成绩10%、课堂表现10%、上机作业10%),期末成绩占70%。教学改革后,为突出学生动手能力,提高学生编程的主动性,将平时成绩占比提升至55%,期末成绩占45%。平时成绩由课堂考勤、课堂表现、上机作业、综合大作业四部分组成,分别占10%、10%、20%和15%。其中,综合大作业是指分组后团队合作完成的完整的项目开发,旨在考查团队合作能力。
2021年春季学期(大三下半学期),2019级计算机科学与技术、数据科学与大数据技术专业为教学改革前的上课班级。2022年春季学期(大三下半学期),2020级计算机科学与技术专业和数据科学与大数据技术专业为教学改革后的上课班级。两个学期的教学均采用线下教学、线下期末考试的方式。现从期末成绩(不包含平时成绩)、动手能力、学生评价三方面进行分析。
表2 期末成绩分析表
两次期末考试题型、题量、分值均一致,难度近似。根据表2数据不难发现,2020级学生成绩在90分以上占比远多于2019级学生,无不及格学生。其中,2020级计算机科学与技术80分以上的学生占比68%、2020级数据科学 与大数据技术80分以上的学生占比71%。
为了考查学生编程能力,学期的最后一节课会考查学生动手编程能力,主要从项目创建、C#基础、类的设计、窗体设计、操作数据库五部分出题。从2019级与2020级编程能力直方图(见图2)可以发现,经教学改革后,学生普遍提高了编程能力。
图2 编程能力分析图
通过调查问卷发现,2020级上课学生中有83%对教学改革给予支持、12%给予中立、5%不支持。
在教学改革中,也遇到了一些问题。例如,由于授课地点全部在机房,部分学生出现不认真听讲现象,并且,在机房授课不如在多媒体教室与学生互动多。但从教学效果看,教学改革后效果显著,极大地提高了学生的编程能力与成绩。
本文从应用型人才培养的角度出发,分析了C#程序设计课程在传统授课模式中所面临的问题,提出了从教学模式、阶段教学和考核方式方面进行改革探索。通过教学改革探索,学生明显提升了应用能力,也达到了国家对应用型人才培养的要求。在以后的教学中,应继续努力提高教学质量和学生的编程能力。