王青松,张鑫琪,刘 建
(辽宁大学 信息学院,辽宁 沈阳 110036)
《C语言程序设计》对于是否属于计算机专业的学生来说,都是一门基础技术课程,讲述了什么是C语言、有哪些数据类型及其使用技巧、程序流程控制、数组、函数、指针以及有关程序设计的方法等内容.通过本课程的学习,使学生更好地了解和应用计算机,培养学生应用计算机独立解决问题的能力,为学生今后进一步的学习奠定良好的、扎实的计算机语言基础[1].
该课程对于综合性、灵活性、逻辑性要求较高,规则多,对于学生学习和教师教学都具有较高难度.因此,探索《C语言程序设计》教学改革势在必行.传统的教学模式,即LBL(Lecture-Based Learning)模式,遵循教师课堂讲授,学生被动接受,形成学生机械性接受、缺乏自主性和创新性的局面,学生掌握理论和算法,却不知道在实践中如何应用.PBL(Problem-Based Learning)教学模式是以真实问题为导向,培养学生自主学习能力、实践能力和创新能力[2-4].根据多年《C语言程序设计》课程的教学经验,综合LBL和PBL两种教学模式的特点,在C语言程序设计课程的教学改革实践中,逐步引入PBL教学模式,提高学生综合素质.
基于问题的教学方法(Problem-Based Learning,PBL)是一种问题驱动的教学模式.PBL不同于传统的教学方法,传统教学将重点放在教师课堂教学,先传授学生理论知识再解决问题,这种单向输出的模式下学生处于被动,缺乏主动性,难以对学习内容产生兴趣,理解浮于表面,不知道在实践中如何应用.PBL是以学生为主体,学生具备专业领域知识后,围绕真实问题自主寻求解决方案的一种学习模式.
在PBL教学模式中,教师的角色是问题的提出者、课程的设计者以及结果的评估者.首先,教师根据期望传授的知识提出问题,设置于有意义的问题情境中,同时,为防止打消学生探究的积极性,问题与情境的设置要难度适中、贴近现实、有趣味,激发学生的兴趣,引起学生的注意力;其次,教师根据问题难易程度以及结合学生个人知识掌握情况,进行分组和角色分配,学生活动主要是小组内部分工合作进行;学生通过查阅资料、请教老师等方法,自主探索解决问题,在解决问题的过程中实现知识的建构,在解决问题时真正完成对知识的综合运用,知识建构和综合运用这两个阶段是相辅相成的,不断调整、探讨才能达到新的知识体系[5];最后,学生以小组为单位进行成果汇报,由教师和学生对整个教学过程、教学成果进行评价、总结.综上整个过程概括为:提出问题、角色分配、知识建构、综合运用、评价和总结[6-7]如图1所示.
C语言以其简洁、灵活、表达力强、产生的目标代码质量高、可移植性好为基本特点而著称于世,在高校中各专业都会开设《C语言程序设计》作为一门技术基础课程,通过《C语言程序设计》的学习,启发学生掌握程序设计的基本思想和方法,培养学生在以后学习、工作中,都能融会贯通使用这种思想和方法的能力,在本科教学计划中占有举足轻重的地位和作用[8].
根据多年《C语言程序设计》课程的教学经验,发现许多学生在刚接触程序设计思想时存在困难,认为内容抽象难懂,在学习过程中难以认识到C语言的重要性,而且相对缺少对学生实践能力的训练.结合实际课时安排,采取LBL教学模式和PBL教学模式相结合的方法,对C语言程序设计课程进行教学改革.通过引入“真实问题”为导向的实施教学,帮助学生们真正掌握C语言的算法,激发学生编写程序的积极性,提高学生综合运用C语言解决问题的能力.
结合中国国情和高校课时安排情况,采取LBL教学模式和PBL教学模式相结合教学.具体过程如图2所示.
1)课堂学习:学生理解教材基础知识为主.开设班级学习群,教师在群内及时共享课件,设置练习题,及时和学生形成互动,激发学生的学习热情.课堂学习:学生理解教材基础知识为主.开设班级学习群,教师在群内及时共享课件,设置练习题,及时和学生形成互动,激发学生的学习热情.
2)简单问题:先以教材习题为主,鼓励学生上机实践练习,让学生树立信心,找到成就感、满足感,把基础实践部分做好.
3)复杂问题:提升问题难度,可以由教师提出问题或者教师给定范围,由学生自主上网查找一些经典问题,通过双人合作的方式,在短期时间内解决.循序渐进,让学生积累程序设计和编程的经验.
在此过程中开始引入计算机专业一体化平台,将过去单一的试卷评价变成多元的学业评价方式,包括学生的网络编程作业、网络编程考试、实验成绩、最终试卷成绩综合评价.网络教学平台的引入,可以对学生实现多元学业成绩考核,并可根据学生的作业情况、平时测试情况对学生的学习状态进行分析和预警.可以布置网上作业包括真实问题的作业.学生编写代码按时提交源代码文件.提高与学生互动性,学生学习热情高涨,往往能够及时提交源代码,比直接布置课后作业完成率要高很多.同时有平台提供监督机制,未完成的作业和抄袭的作业都可以检查出来.
4)真实问题:PBL教学模式核心部分是问题和情境设置.教师设置情境,提出真实问题,学生通过小组合作的方式协作学习,查阅资料、询问老师等途径,在解决问题的过程中实现知识建构,最终实现知识的综合运用.
在《C语言程序设计》课程的理论教学和基础实验基础上,通过开发规模较大的程序,使学生掌握应用计算机解决实际问题的基本方法;熟悉C程序开发的全过程,包括从分析问题开始,建立数据模型,划分功能模块,设计算法,编码,调试和测试程序,撰写文档等;提高综合应用C语言的能力,强化编程和调试能力.通过理论教学、基础实验、课程设计等理论和实践紧密结合的教学,为学生今后学习软件专业课程创建较轧实的理论和实践基础.
基于引起学生兴趣的目的,设计一个充满趣味又贴近生活的问题,比如在结构体、指针等模块学完后,让学生完成一个学生成绩管理系统.
实验的目的是让学生理解算法的基本概念;正确使用常量、变量、运算符与表达式、程序控制结构、数组、函数、编译预处理、指针、结构体与共用体及文件等C语言要素进行程序设计;熟悉在一种C语言开发环境下进行C程序设计的基本步骤;了解软件工程的设计方法,采用模块化设计.
学生成绩管理系统对学生的成绩信息进行管理,其中包括学生信息、课程信息和选课信息.学生信息包括学号、姓名、性别和地址.课程信息包括课程号、课程名、学分和学时.选课信息包括学号、姓名、课程号、课程名、学期和成绩.教师可以适当地对学生给予提示:1)学生和选课信息可以使用结构体数组存储,课程信息使用链表存储;2)使用switch语句实现判断选择功能,控制流程的流转.
首先要明白,学生成绩管理系统的使用者是教师,因此在设计系统时,功能模块的设置的服务对象是教师;接下来,从功能模块设置的角度进行分析,系统要能够实现对学生信息、课程信息、选课信息的增、删、改、查,成绩管理要具有成绩的录入、删除和查询.图3给出了系统的功能结构图.
经过教师的引导,对问题进行分析后,学生对于模块化设计思想有了知识建构,接下来,教师进一步提出画出业务流程图的要求,检查发现,大部分学生能够独立给出业务流程图,存在少数学生画出的流程图存在问题,但是通过引导能够将思路梳理清晰.最后,由教师给出正确的系统业务流程图见图4.
按照传统教学模式下《C语言程序设计》课程的教学计划,本门课程的考核包含平时成绩和期末考试,占比分别为20%和80%,其中平时成绩指课堂考勤和实验作业.在基于“真实问题”为导向的教学模式下,引入计算机专业一体化平台,课程考核对于考核方式和考核因素的占比都有调整,考核方式新增小组答辩和程序提交(包含代码,课程设计文档),成绩划分到平时成绩里面,由于PBL教学模式要求学生为主体,强化了学生在平时研究探讨问题的部分,所以提高平时成绩比重到30%,作为对学生们的激励,相应的期末成绩比重为70%.
参与PBL在C语言程序设计课程的教学改革实践的是辽宁大学信息学院2018级计算机科学与技术专业的本科生,通过对17级和18级学生同期《C语言程序设计》成绩对比发现,基于“真实问题”为导向的教学模式使得教学质量显著提升,学生的成绩有了明显提高,优秀率(≥90)和良好率(≥80)都显著高于17级学生,不及格率也明显降低.图5给出了17级和18级学生成绩分布对比情况.
对结果分析认为,优秀率和良好率都提高的原因包括两方面.一方面是由于引入了计算机专业一体化平台,可以及时分析和预警学生的学习状态,密切监督学生课后作业的完成率,同时对于未完成的作业、抄袭的作业都可以检查出来;另一方面和基于“真实问题”为导向的教学模式的实施是密不可分的,不仅调动学生学习积极性,而且给学生提供了将知识综合运用的机会,对所学掌握更牢固.
PBL教学模式以“真实问题”作为驱动,激发学生兴趣,调动学生积极性,以学生作为主体,教师作为引导,提高学生创新能力、实践能力和自主性,培养学生将教师讲授的知识自主梳理建构的习惯与能力,以及在将来实践中对知识综合运用的能力.但是,PBL教学模式的实施还是存在一定问题.PBL教学法对于学生的基本素质要求很高,学生对于知识的接触程度和接受能力存在差异,对新模式接纳存在缓慢现象;而且PBL教学过程中要求教师对学生各方面的指导,新模式要求教师有多年教学经验,能灵活应对学生出现的各种问题,能合理提出问题;新模式需要学校的全面支持,教学资源要求较高,教师精力有限,需要小班化教学、指导教师充足、增加课时等.
在后续的教学改革实践中,一方面,针对上述问题会进行适当调整,另一方面,期望将“真实问题”为导向的教学模式推广应用到更多的其他专业课程中去,探索使用数据挖掘等技术和挖掘关联规则的算法Apriori对每批次教学结果进行分析,科学地调整教学模式,达到更好的教学效果.