非计算机专业C语言教学模式分析论文
摘要:针对目前为非计算机专业开设的C语言程序设计课程教学现状,提出一种与专业相结合的S&C(Specialized&ComputationalThinking)式C语言程序设计教学模式,在培养学生计算思维的同时,为后续专业课程的学习打下良好基础。
关键词:C语言;专业相结合;计算思维
一、引言
目前很多高校都在推行为非计算机专业开设的程序设计类课程改革,研究如何全面提高教学效果。将计算思维融入程序设计是当前课程教学的研究热点[1];很多教育专家和一线教师都提出了以培养计算思维为目标的程序设计类课程教学改革方案[2,3]。C语言程序设计属于此类课程,在注重培养计算思维的同时,更重要的是将教学内容与学生本专业相结合。因此,提出一种融入计算思维、与专业相结合(以下简称S&C)的C语言程序设计教学模式。
二、计算思维的专业化培养
计算思维是信息时代中的每个人都应当具备的一种思维方式,培养计算思维能力已成为计算机基础教学的核心任务[4]。程序设计类课程属于计算机基础课程体系,但是学习的内容和要求是相对的,对不同的人群应该有不同的要求[5]。对非计算机专业学生而言,程序设计语言更像是一个工具,是其在从事本专业工作中可以使用的一个工具。因此,任课教师应考虑到专业需求,将计算思维与专业应用进行融合,让学生感受到利用计算思维求解问题过程中的魅力[4]。计算思维教育的目的是培养一种思维习惯,一种像计算机科学家思考问题那样的习惯[6],虽然计算本身也是一门学科,但是其具有促进其他学科发展的作用,不应该将计算思维局限于此,而是应用于各专业领域。
三、C语言程序设计与专业相结合
为非计算机专业开设的C语言程序设计课程,授课深度和广度有别于计算机专业,很多高校将它作为一门通识课程,使用同一个教学大纲,难以与专业课程紧密衔接。实际上,随着计算机的普及,程序设计语言的使用不再是IT人的专利,很多行业都会涉及到软件开发、编写应用程序。如单片机等智能芯片的开发语言就是以C语言为主[7],学生程序设计水平高低可能直接影响他们的就业和职业发展[8]。因此,有高校教师提出自动化专业的C语言程序设计课程改由自动化教研室承担[9]。但这种做法是否有违开设C语言程序设计课程的初衷?C语言是程序设计的入门语言,最重要的是建立C语言与专业的关联,培养一种独特的处理问题的思维方式,更适合由计算机专业教师授课,在后续专业课程中再由专业课教师进一步引导学生的应用实践。但教学内容要向专业靠拢,能够认识到专业课程和C语言之间的联系点在哪里,并由此制定出相对独立的教学大纲和专业化教学方案。
四、S&C式C语言教学模式
(一)课程设置
虽然学习C语言不需要什么必须的先修课程,但经过授课教师分析[8],与计算机专业学生不同,非计算机专业学生只是孤立地学习C语言,建议将C语言与相关课程配套开设,以自动化专业为例,在同一学期内,先开设C语言程序设计,在课程中后期再开设单片机课程,这样既可以加强学生理论联系实际的能力,又使学生对C语言的学习目的和从业方向更加明确。
(二)教学目标和教学内容
C语言程序设计的教学目标应体现基础性与专业性。基础性是针对后续课程来讲的,学生通过该门课程的学习掌握一定的算法和常用子程序,学会用C语言编写程序,为后续课程打下坚实的基础;专业性是指学生在掌握C语言的各种语法与程序结构的基础上,不仅能够根据实际问题设计算法、编写出解决问题的程序,还可以运用计算思维解决生活中或专业领域的问题。计算思维主要不是靠讲课得来的,而是在学习和应用计算机过程中培养的[5],但理论依然是实践的基础。因此,应将思维训练融入到教学内容中,并将计算思维具体化为对以下几项能力的培养。1.抽象。从本质上讲,程序设计语言是对人类问题求解过程的抽象,例如,数据与数据类型、表达式、流程控制、函数等都是数据抽象、计算、逻辑推理以及问题约简等人类问题求解思维方法的物化[10]。使用C语言进行程序设计的过程就是利用计算的手段求解问题的过程,这一过程中对问题定义和形式化,以及建立问题的逻辑模型就是对问题的抽象过程,而抽象是计算思维的基本方法。2.多样性思维。C语言中变量的使用是编程的基础,也是最基本的概念。C语言提供了多种数据类型,如整型、浮点型、字符型、数组、指针、结构体及枚举型等。在求解实际问题时,会涉及到各种各样的数据,如整数、小数、字符,还有一些复杂的对象,如学生个人信息、考试成绩等,为处理这些不同类型的数据,除了要分析数据的对象特征,还要了解各种数据类型之间的差异及其使用方法,通过大量练习掌握并灵活应用这些数据类型,这对于训练学生多样性思维有极大帮助。3.问题分解。C语言是一门模块化程序设计语言,在求解一个复杂问题时,一般采用逐步分解、分而治之的方法,即将一个大问题分解成若干相对较易求解的小问题,再分别进行求解。C语言的函数就是程序的基本组成单位,在编写一个复杂程序时,将整个程序的功能划分为若干功能较为单一的程序模块,即用函数实现每个单一功能,然后再将所有函数像搭积木一般,组合起来。函数有其独立性,即要保证高内聚,低耦合;但却不是孤立的,使学生理解调用函数和被调用函数的相关知识和二者之间的相关性。4.算法。算法是解决问题的方法和求解问题的步骤。解决同一问题会有不同算法,算法设计是C语言程序设计的核心。引导学生学会利用已有知识,学会从多个角度分析问题,采用不同的类型、结构都能解决问题;同时,引导学生进一步分析各算法的差异,不仅可以巩固知识点,还能加深学生对不同数据类型、程序结构化的认识。在教学内容中设置一些与专业应用相关的案例,增加趣味性的同时,激发学生的学习兴趣,增强与本专业的联系。5.递归。递归就是用自身定义自身的方法。C语言允许使用递归,以应用递归求解的问题为例,使学生理解递归的工作原理。例如,利用公式n!=n×(n-1)!求一个自然数的阶乘,可以用以下函数进行计算。intfact(intn){if(n<=1)return1;elsereturnn*fact(n-1);}跟踪i=fact(3)这条语句的执行过程,从中了解递归函数逐层调用和展开的过程。6.程序。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合,在系统的IPO模型中,程序是算法的实现。C语言以顺序结构、选择结构和循环结构作为基本的程序结构。学生在求解问题时选取合适的程序结构,练习使用相应结构的语句,训练其结构化思维;编程过程中,为了实现程序的整体性功能,要考虑如何协调各类函数,从而强化一体性思维;任何程序,无论是简单的还是复杂的,都按照一定秩序有序执行,为解决不同问题要采用不同要素、结构组成程序,这可以强化学生的有序性思维。7.动态性思维。C语言中很多知识点的运用都体现了动态思维。例如,根据计算对象的类型使用不同类型的变量,在多种类型数值进行混合运算时,其结果又能根据精度要求动态地向高精度类型转换;循环结构中,循环变量值的变化是程序动态性的最佳体现,在单步调试时,能够清楚地观察到循环变量及相关变量值的每一步变化;在函数定义中形参的设定也是训练动态性思维的重要知识点,每次调用函数时,函数所接收到的实参都是不同的,只有具有动态性思维,才能真正理解函数实参和形参的概念。
(三)教学方法
在课程教学中,教师应具有不同的角色,课程前期,教师是讲授者、主导者,以讲授法为主,通过对比记忆等方法帮助学生接受C语言各种定义的方式和语法结构;课程中后期,教师是协助者、引导者,采用翻转课堂教学法,让学生成为课堂主体。教师应设计好课前任务,及时获得反馈以调整课上活动;课上进行分组讨论和以专业性案例为主的任务拓展,引导学生举一反三,研究规律,掌握方法,让学生认识到C语言程序设计与专业学科的密切关系。翻转课堂的有效实施需要一个过程,既是学生接受、适应和主动参与的过程,也是教师根据不同课程班逐步调整实施方案的过程。教学方法的有效性以学生的学习自主性为前提,而激发学生的学习动机似乎一直是教师与学生之间的较力。C语言与专业相结合可以在一定程度上提高学生学习兴趣,因为大多数学生是依据自身兴趣选择专业的,但这还不够。依据ARCS模型,增强学习者动机的四个要素:Attention、Relevance、Confidence和Sat-isfaction。在教学开始阶段,引入一个C语言开发的专业案例吸引学生注意,激发学生想进一步探究的好奇心;进而建立C语言与专业学科的关联,使学生清楚教学目标和学习内容的价值;在课前任务中布置一些较简单的任务,以此增强学生的学习信心,课堂上进行任务拓展时提供一些有些难度而学生又能解决的问题,让他们感觉到自己的能力“非凡”,最后让学生明确自己取得的成果是自己具有能力并付出努力的成果;在实践环节布置的项目任务为学生提供了在一种真实或模拟的情境中运用知识的机会,感受到学习的价值、学习的快乐,从中获得满足;对学生的学习结果提供反馈,如对课堂表现好的学生给予口头表扬,维持后续的学习动机,面对全班公布考核方式的评分标准,让学生感受到教师评价的公平性。
(四)实践环节
为了鼓励学生积极进行实践,应该不断加强C语言实验平台建设,在校内使用OJ(OnlineJudge)系统[11]。但要使OJ系统更好地发挥效用,教师必须对题目进行正确描述和引导,以及对测试用例考虑充分,增加与专业联系密切的实验内容,减少验证性实验内容;布置合作式项目任务,并以此作为大学生研究性学习和创新性项目,训练学生在实际工作中协调、合作和创造能力。学生还可以利用OJ系统进行阶段性测试,促进自主性学习。
(五)考核方式
课程的考核方式决定着教师如何教这门课,也决定着学生如何学习。目前C语言程序设计课程的考核方式为“平时表现+期末考试”的形式,期末考试采用无纸化上机考试,是评定学生成绩的主要方面,排除了考试各环节中人为因素的影响。试题库涵盖教学大纲规定的所有知识点,难度适宜、重点突出。但全面考核学生的程序设计能力不能仅依赖于期末考试,应重视平时课堂和实践环节的考核,采用作业自评和同伴互评的评分机制。自评是学生比对评分标准自查;同伴互评是学生通过相互批改作业相互学习,是形成性评价的有效手段,能够帮助学生更积极主动地参与课程学习,增加了再次回顾知识、温习知识和总结自身所得的机会,促进更深层次的思考。为了使这一评分机制能有效开展,教师要制定一个好的评分标准,不同的“评委”依据这个评分标准对同一个作业进行评判应得出同样的判断;考虑到同伴互评中可能出现的问题,如学生不遵照评分标准打分等,做出相应的对策,使学生能够自觉以评分标准为指导,高质量地完成作业,然后根据评语对照评分标准修改完善自己的作业。
五、结语
应用型大学非计算机专业的计算机应用教育,应以能力为导向,使学生具备在各个领域应用计算机的能力。作为应用性较强的专业基础课,C语言程序设计能否学好关乎到后期专业课程学习的效果。根据专业特点,采取与专业相结合的C语言教学模式,培养学生将计算机处理问题的思维方式运用于本专业领域的能力,为各学科问题求解带来一种思想、策略、方法和手段上的变化,促进各学科的突破性发展。
参考文献:
[1]刘军.面向计算思维的程序设计教学实践[J].计算机教育,2015,(14):116-118.
[2]乔淑云,黄刚.程序设计类教学改革与计算思维之培养[J].计算机教育,2012,(19):17-19,23.
[3]聂兰顺,战德臣,宋巧红.计算思维的教学内容与方法研究———以“算法”和“系统”两种问题求解的计算思维为例[J].工业和信息化教育,2013,(6):21-27.
[4]冯博琴.对于计算思维能力培养“落地”问题的探讨[J].中国大学教学,2012,(9):6-9.
[5]谭浩强.研究计算思维,坚持面向应用[J].计算机教育,2012,(21):45-49,56.
[6]陈国良.计算思维的表述体系[J].中国大学教学,2013,(12):22-26.
[7]卢振利.应用型本科院校自动化相关专业中51单片机项目C语言六步编程法教学研究[J].电工技术理论与实践,2015,(5):228-229.
[8]俞敏.对自动化专业C语言教学的思考[J].高校教育研究,2009,(3):135,137.
[9]陈丽敏,邵长友.基于自动化专业C语言课程教学改革的研究[J].中国电力教育,2013,(31):76,90.
[10]郝兴伟.大学计算机———计算思维的视角[M].第3版.北京:高等教育出版社,2014.
[11]廖雪花,厉兰洁,唐思娩.基于OnlineJudge的C语言程序设计实验课教学改革研究[J].计算机教育,2016,(6):130-133.
作者:栾若星 单位:辽宁工业大学计算中心
【非计算机专业C语言教学模式分析论文】相关文章:
C语言专业论文致谢词12-11
计算机C语言的论文致谢词03-19
关于非计算机专业计算机基础教学思考论文02-23
小学德育教学模式分析论文03-09
计算机C语言论文致谢11-26
计算机专业算法类课程教学模式改革论文02-18
教学模式与计算机论文小结03-08
网络环境下的计算机课堂教学模式的分析论文02-17
- 相关推荐