项目驱动式C 语言程序设计实验教学研究
2020-12-18西南科技大学计算机科学与技术学院
西南科技大学计算机科学与技术学院 苏 波
程序设计能力是工科类专业学生应该掌握的一项基本技能。C 语言是一门工程实践运用广泛的程序设计语言,它在项目底层可以提供对操作系统和内存的精准控制,是从事嵌入式开发、芯片设计必不可少的开发语言。在高级语言方面,C 语言由于其高效率和精确的特性,是科学计算、并行程序开发的重要工具,同时C 语言几乎适用于所有的操作系统,对提高开发效率和跨平台使用具有极大的便捷性。总体而言,C 语言具有极强的实用性,既可用于编写应用软件,也适合于编写系统软件。虽然最近几年由于数据挖掘、人工智能和数值计算等领域的蓬勃发展带动了Python 程序设计语言,但是仍然无法撼动C 语言程序设计开发语言榜首的地位。C 语言既是计算专业学生必须掌握的程序设计语言,也是许多非计算机专业学生所青睐的技术学科。C 语言程序设计是各省乃至全国计算机等级考试的重要考试科目,几乎所有的高校都开设有C 语言程序设计课程。目前,很多学校往往将学习重点放在程序设计语言本身,注重语法的讲解,忽视了程序设计能力的培养和训练。这种学习方法对于学生应付考试中的填空、选择以及编写小程序的题型来说是没有问题的,且往往可以取得较好的成绩。但是,由于缺少项目锻炼能力,甚至出现有些高分考上硕士研究生的计算机专业学生,无法针对具体或者复杂问题编写出可以运行并产生实际效益代码的现象,给人造成了“高分低能”或“学习无用”的错误导向。
一、程序设计类课程实验教学存在的问题
由于学生现在学习的课程门类较多,总学分又没有太多变化,很多课程的学时数都有所减少。虽然C 语言程序设计是一门逻辑性较强且概念相对较多的科目,但部分教师为了完成教学任务,往往压缩学生的上机实践时间。C 语言课程一般在大一开设,大多数学生还不适应大学的学习方式和课程安排,还停留在高中的学习模式。目前程序设计类课程实验教学一般以教材为中心,理论教学上到什么地方,实验课就操作什么内容,学生照葫芦画瓢,照着教材案例进行操作,这些都导致了如下弊端。
(一)整体知识掌握不足
学生对知识点整体认识不足,掌握的知识内容孤立。“万变不离其宗”,这里的“宗”就是知识点,比如C 语言里面的循环就有do-while、while 和for 三种结构。循环还可以嵌套循环,如果学生仅仅只是明白每个单一的知识点,但不能很好地将各个知识点串联起来,达到融会贯通的程度,则无法编写出高效的代码。
(二)缺乏知识碰撞与思想交流
学生往往是“单兵作战”,一道题一个人就可以解决,缺少了知识的碰撞与思想的交流。合作学习是一种共同进步模式,通过合作学习,基础扎实的学生可以帮助基础薄弱的学生,学生在合作过程中会产生新的问题,大家在共同探讨中解决问题。这个过程会激发学生的创新思维,进而逐步形成创新意识,并有效激发各自的学习潜能,提高学习效率,对合作双方都有所收获,有利于实现共同进步。
(三)无法激发学生积极性与主观能动性
编程思维与我们日常的思维方式存在不一样的地方,编程思维并不是局限于编写程序的技巧,而是一种高效解决问题的思维方式。它是由分解—识别模式—抽象—算法四个步骤组成,是从理解问题到找出路径的思维过程。这种跳跃性的思维能力是初学者的一个巨大障碍,造成了学生学习兴趣的下降,无法有效激发学生的学习积极性,促使学生发挥主观能动性。
二、项目驱动式实验教学理念
所谓项目驱动式教学法是指教师指导学生在追求项目成果的过程中,通过项目实践掌握系统知识技能的教学方法。实验教学实施过程秉承联系论、结构论和结果论三个关键理念,三个理念分别对应课程目标、课程组织和课程实施三个层面。联系论要求教师在组织项目驱动实验教学时合理选择知识,使之与项目实现有机结合;结构论要求教师对所选取的知识进行知识重组,既要考虑项目完成的需要,也要考虑学生对知识的接受情况;结果论考量学生的项目完成情况。构建主义认为,知识是学习者在一定的情景下利用必要的学习资料,通过意义构建的方式获得的。基于项目驱动的实验教学法,学生在教师指导下最终以项目成果的形式表现,通过项目的开发、设计和实施将书本理论知识与应用实践进行有机结合,从而掌握相关知识。
三、基于项目驱动的实验教学模式探讨
教学模式是在一定教学思想指导下和丰富教学经验的基础上,为完成特定的教学目标和内容,围绕某一主题形成的稳定、简明的教学结构理论模型及具体操作的实践活动方式。实验教学直观性、实践性、科研性以及综合性的特点,决定了其在培养学生综合素质和能力方面具有其他教学环节不可替代的作用。正确认识实验教学在人才培养以及高校整个教学工作环节中的突出作用,对提高学生综合素质将起到至关重要的作用。构建行之有效的基于项目驱动的实验教学模式,需要从教学目标的制定、教学知识点的优化组合、实验教学项目的设置、教学方式和考核机制等方面进行变革。
(一)制定教学目标
教学目标决定着课堂教学的内容,对于教学结构安排、教学方法实施和教学组织形式起着导向作用。教学目标的制定必须以教学大纲为准绳,以教材为依据。教师可以根据布鲁姆教育目标分类法,从知道、领会、应用、分析、综合、评价等六个方面对教学目标进行分类。教学目标的制定还应该符合学生的毕业要求,比如在工程知识方面的指标点为掌握程序设计知识,具备面向对象、面向系统的程序设计理论与方法,并能运用于软件的设计与实现;问题分析方面的指标点为计算问题表达与证明,能对计算问题进行形式化描述,设计问题的数据结构与算法,并分析设计方案的正确性;设计开发解决方案的指标点为软件系统分析与设计,根据需求规格说明书能进行软件体系结构、数据模型与管理、关键算法及安全策略设计,撰写系统设计说明书;研究方面的指标点为实验实现,能够根据实验要求或设计指标组建实验平台,运用相关仪器(软件)完成相应的实验实现,正确观察、记录实验数据。
(二)优化组合教学知识点
项目驱动式的实验教学必须围绕理论课教学知识点开展,将理论课程中讲解的知识点融入项目的各个模块中去,比如在项目中可以将输入、输出、数据类型、分支以及循环结构放在一起进行训练。在高阶项目中,可以将查询、排序、统计以及记录添加和文件的建立读写等知识点融合在一起。教师通过将C 语言所有的知识点进行适当的划分,再进行有机的优化组合,既可以使学生在练中学,也可以通过实验使学生明白各个知识点的适用场合。
(三)设置实验教学项目
实验项目的设置不一定必须使用真实的项目,因为真实的项目规模较大且比较复杂,与学生现阶段能力不相符,容易给学生造成挫败感。教师应该根据教学需要将项目所涉及的知识限定在教学大纲所要求的范围之内,大项目与小项目相结合,小项目是大项目的基础,大项目是小项目的综合应用。项目的安排应该符合学生的认知规律,由浅入深,由易到难,使学生能够真正得到实践,进而最终完成项目,激发学生的学习热情并增强学习信心。
(四)项目驱动实验教学的方式
相较于传统的教学方式,项目驱动的实验教学更加注重学生的自主探索和课堂探讨,教师只需要对过程进行把控。项目驱动的实验教学过程可以分为准备阶段、分析阶段、设计开发阶段和评价阶段。准备阶段用于确定小组成员以及项目负责人;项目分析阶段需要学生讨论项目涉及的知识点,将项目任务分解为小的模块;在项目设计开发阶段需要制定合理的实施方案和技术路线,确保在规定的时间内运用所学知识完成项目;项目评价阶段用于对照项目任务,测试检验各个功能需求是否完成,给出总结性评价,完成项目报告书的撰写。
项目驱动式实验教学模式注重教学全过程,因此最终成绩构成更适合采用结构化评分方法。在实验教学实施过程中,教师应该鼓励学生在小组内积极进行互动,防止个别学生消极对待,提高学生的团队精神,确保每个学生都得到相应的锻炼。这个过程对学生综合素质的提高具有积极的作用,有利于促进学生的全面发展。