程序设计下计算机语言课程的教学改革

程序设计下计算机语言课程的教学改革

摘要:计算机语言程序设计课程是大学计算机基础教育的重要组成部分,掌握一门程序设计语言是大学生具备高等教育的基本素质。文章以计算机语言序列课程教与学面临的现状为切入点,提出以程序设计思维培养为导向,探讨了计算机语言序列课程在教学理念、教学内容、成绩评定及实验设置等方面的教学改革策略,利用计算机语言之间的共性与区别,把计算机语言序列课程教学的细枝末节回归到以培养程序设计思维为目标,建立学习程序语言的思维模式,帮助学生在快速发展的计算机领域里可持续发展。

关键词:计算机语言;程序设计;思维培养;教学改革

计算机语言程序设计课程是大学计算机基础教育的重要组成部分,掌握一门程序设计语言是大学生具备高等教育的基本素质,更是计算机学科的学生必须具备的能力,对于培养综合应用型人才非常重要的意义。随着硬件技术的更新换代,计算机语言从机器语言到高级语言几十种。目前,许多高校根据就业形势和专业建设培养模式开设了多门计算机语言程序设计课程,然而,由于所依托的基础语言和讲授的内容深度不尽相同,在教学中存在这样或那样的问题。在这种形式下本文根据教学实践中反应出来的问题,提出以程序设计思维培养为导向,引领学生从整体上去学习一门语言,把计算机语言序列课程的教学的细枝末节回归到以培养程序设计思维为目标,帮助学生建立程序设计的学习思维模式,有效引导学生建立一种抽象符号的归纳推理的思维模型,利用语言之间的区别与联系,引导学生在语言学习之间思维的转变,建立学习程序语言的框架体系结构,在学习过程中得到思维能力的锻炼,使学生具备分析问题、解决问题的能力,养成良好的程序设计风格,积聚和提高基本的分析设计程序的能力,帮助学生在快速发展的计算机领域里可持续发展。

1计算机语言课程教学现状

目前计算机专业及相关专业的课程设置中,一般非计算机专业开设一门计算机语言必修课程,计算机专业可能根据专业应用前景会开设多门计算机语言课程,我们学院的信息与计算科学专业大一开始《C 程序设计》,大二开始《Java 程序设计》,大四开始数据分析语言课程 Matlab 语言和 Python 语言。大学四年的时间,学生学习的计算机语言非常繁多,但很多学生编程水平仅仅停留在语言的语法规则层面,学而不精。当然限于各种的原因,导致学生学习了多门计算机语言,仍对编写程序缺乏基础认识,没有形成基本的编程思维,仍然停留在语法层面。文献[3]-[10]中提到计算机语言序列课程教学各种现状在我院计算机语言教学中也普遍存在,但不同专业不同学校培养目标不同、学生的素质不尽相同,目前我院计算机语言教学具体来说主要体现在以下几个方面问题:

(1)计算机语言课教学深度与广度的不协调。文献[11][12]中提到我国高职的计算机语言在教学过程中存在教学深度与广度不协调的误区,这个问题在高等教育中也同样存在。大学里的教学是素质教育,限于专业设置和课程的学时有限,学生的水平也参差不齐,老师教学的侧重点也很难把握。例如 Java 这门课,整本书有十几章,既有基础语法知识又有面向对象的理论,还有实际应用的类学习,而且每个章节就是应用的一大分支,这些内容又不得不讲,限于学时的原因,无论内容如何取舍,老师每堂课至少讲一两章,很多学生根本跟不上教学的进度,这也是导致学生学了很多语言但都不精重要原因之一。

(2)学生实践动手能力差。在整个学习过程,学生最怕计算机语言考试中笔试的程序填空和编程题,而这两类题实际上难度并不大。从学生解决问题过程中可看出他们的综合运用知识能力较弱,缺乏创新思维。这样直接导致在完成程序填空时,阅读理解程序能力弱;编程时设计的程序结构不清楚、臃肿,可读性差,程序的效率较低。另外学生调试程序能力也很差:许多学生虽拥有或经常使用个人电脑,但多数学生只是比较熟悉 Windows 操作环境,不熟悉其他语言的操作环境,设计程序前没有做好充分准备;另外,学生录入程序的速度太慢,录入正确率低等。

(3)没有建立程序设计语言学习的思维方式。很多学生学语言单纯仅仅是学习,先修的计算机语言课程中程序设计的思维没有得到应用,没有建立程序设计语言学习的框架体系,从整体上去把握如何去学一门语言,把学习程序设计语言的思维融会贯通起来,建立程序设计的思维模式[13]。当然老师也没有从教学上进行引导,帮助学生建立学习程序设计语言的素质和能力。

(4)考核的形式单一,不利于程序设计思维的培养。传统的计算机语言序列课程考核内容多以理论知识点为主,考试形式仅以笔试测试,题型标准化,侧重于对语法知识和语法规则的掌握及对编程技能和算法的应用,忽视对学生分析与解决问题、算法设计和调试能力的考核,导致学生在平时学习过程中死记硬背,而忽视了程序设计能力、计算思维的培养,没有复习样题就不会考试。缺乏灵活分析问题和解决问题的数学应用素养的考核同时,这种考核方式不能真实反映学生的实际学习质量,更不能有效地检验学生的程序设计思维能力,导致有些学生学了若干门计算机语言课程仍然没有建立程序设计的思维模式。

(5)教学模式过于单调,难以激活学生的主观能动性。从教十几年,教学的思路还是“老师讲、学生听”、“先理论后实验”、“老师先演示学生再做”的咀嚼喂养孩子式的老套路按部就班进行,学生开始饶有兴趣,慢慢就出现学习疲劳,不听讲不做实验的学生日益增多。文献[14]中也都提到传统的教学的模式的弊端,学生的学习激情难以发挥,学生学习计算机语言的主要途径是教师的课堂教学,但每门课程的学时非常有限,光靠课堂教学的时间把一门计算机语言弄懂弄精是远远不够的,课外的自主学习显得尤为重要。相对于传统的教学模式的弊端,吸收现在流行的微课、翻转课堂、对分课堂各种教学模式的优点,充分调动学生的积极性,发挥学生的主观能动性,探讨新的教学模式势在必行。

2计算机程序设计类课程教学改革方法及措施

鉴于目前计算机语言序列课程教与学的现状,从教师层面应当突破传统的教学思路,根据专业培养的目标和学生的差异性,让课程教学设计、具体教学方式、实验的安排以及考核形式更具有针对性和实效性,灵活运用先进的教学模式例如微课、对分课堂、翻转课堂等,丰富各类的教学资源,不同层次水平的学生可以自主学习实践,充分调动学生的学习兴趣与主观能动性,让学生有多种途径掌握基本知识和技能,在不断敲写代码的过程中,领悟程序设计的思维。老师教学的侧重点应放在构建知识的框架体系,引领学生从整体上去学习一门语言,把计算机语言序列课程的教学的细枝末节回归到以培养程序设计思维为目标,这正是计算机语言课程教学的最终目的。

2.1转变教学理念,调整理论教学内容

目前我院的信息与计算科学专业开设计算机语言课程依次为:《C 语言程序设计》、《Java 程序设计》、Matlab 语言、Python,数学与应用数学、应用统计学和统计学则开设《C 语言程序设计》和 Matlab 语言,显然信息与计算科学专业比数学与应用数学、应用统计学和统计学专业要求掌握的程度不一样。因此,教师应突破传统的教学思路,根据专业培养的目标和学生的差异性,根据学生的实际情况调整教学大纲和教学内容,修订教学设计,利用程序设计思维模式重新梳理和组织教学,把教学的知识点串在思维模式中,让学生在掌握语法知识的同时,培养其程序设计思维能力。另外,教学案例的设计和讲解应突出整个程序设计思维的方法及构建过程,即应针对案例提出的具体问题,诱导学生逐步体会分析、解决问题的基本思路和过程,着重培养学生建立程序设计语言学习的思维逻辑,掌握计算机语言学习的模式 , 锻炼学生分析问题和解决问题的能力。教学案例内容选择上要注意既夯实程序设计的基础,又兼顾综合应用内容,突出专业联系的紧密性 , 难易循序渐进,充分调动学生的主观能动性,为此可以精选教学案例利用 PowerPoint(PPT)、超星软件、EV 软件等软件工具来制作课件、微课、短课、速课等教学资源,让学生利用课堂之外的时间来自主学习,帮助学生在有限的时间内掌握某个在课堂中没有理解的知识点,来提高学生的学习效率。另外,在计算机语言序列课程的教学中,应遵循计算机语言发展的规律,充分借鉴先修语言的程序思维模式,采用类比的教学手段,利用语言之间的区别与联系,引导学生在语言学习之间思维的转变,让学生体念到计算机语言的学习过程类似于软件工程中重用技术,是程序设计思维的继承性学习,既有传承又有发展,也潜移默化把计算机语言的发展历程融入其中,让计算机语言的学习不再是孤立的,帮助学生在快速发展的计算机领域里可持续发展。

2.2重视实验教学,全程监控实验过程

“纸上得来终觉浅,绝知此事要躬行”,突显实践才能得真知。计算机语言课程说白了,学完了就是要会编写程序,践行才是计算机语言学习的最好方式,计算机语言类课程的实验教学是践行致远的最好保障。如果学生学了计算机语言却不会编写程序,课程的实用性也难以体现。为此选择上机的实验内容要把握好,开设的实验类型要多样化例如验证性、基础性、应用型和综合性实验,既要难易程度适中,又要充分结合专业的特性,选择与专业发展相关的项目,选题要新颖有趣,这样既能调动学生的积极性又能让学生学有所用。此外,很多学生不重视计算机语言课程的实践环节,最重要原因还是因为考试是笔试,实验课的成绩在总评成绩中比重太少了,这就导致很多学生上机过程形式化。在计算机语言课程考核中,加大实验考核力度,提高实验成绩在总评成绩中的比重,充分发挥考核与考试对学生学习的督促作用,以及考试内容对学生学习的引导作用。让学生在不断敲写代码的实践过程中,领悟程序设计的思维。

2.3调整课程的成绩评定方案,加大学习过程考核的力度

学习是个循序渐进的过程,不能一蹴而就,只有建立完善的过程性的考核体系才能督促学生平时的学习,把进行有效学习应该付出的努力分散到整个学期,不再为了通过考试才在期末突击学习,促进学生积极主动地自我完善,最终达到培养程序设计思维的目标。目前我院的期末成绩评定的方式局限于学校规定考试成绩占 70%,平时成绩占 30%,平时成绩来源于实验情况、实验报告及课堂出勤等等方面,计算机语言类课程最终的目标是会编写程序,可实验成绩占总成绩的比重太小,无法突显实践对计算机语言能力培养的重要性,也无法扭转学生对实验课的态度,很难体现计算机语言课程的培养目标。转变以期末卷面成绩为主的传统考核方法,实行以能力为中心的开放式、全程化考核,考核的形式既有笔试也要有平时阶段性的上机小测。对学生平时课堂出勤的状况、上机实践前的预习情况、上机时表现、上机后实验完成情况、作业完成情况等纳入到总评成绩中进行全面考核,同时加大日常考核的比重 , 尤其实验教学的考核比重,按照教学的内容与进度进行阶段性学习上机小测,充分发挥考核与考试对学生学习的督促与引导作用,在不断程序设计实践中,培养程序设计思维的能力,真正注重培养和提高学生的分析和解决问题的能力。

2.4改进课程的教学模式

传统的“老师讲、学生听”、“先理论后实验”、“老师先演示学生再做”的咀嚼喂养孩子式的老套路完全hold 不住思维活跃的小年轻。“只要套路深,铁杵磨成针”,在计算机语言课程的教学方式尤其重要,因为计算机语言的学习说白了就是一套工具“使用说明书”的学习,知识点之间没有逻辑性,内容枯燥,针对不同教学内容灵活采取不同教学方式,“自古深情留不住,唯有套路得人心”。对于课程中知识性和方法性的内容由老师采取面授的方式精讲,课程中重点、难点的内容可以做成微课、短课放到网络课程平台,让学生课下自主学习,并布置相关课下任务驱动学生巩固性练习,对于综合性的应用可以采用对分课堂的模式开展,老师把知识要点精讲一下,留出一部分时间给学生自主学习并进行学生间交互讨论,充分发挥了学生的主观能动性,也可以采用翻转课堂的模式,提前把课堂的任务交给学生,让学生提前准备,到上课时老师在与学生相互讨论探讨。在计算机语言课程的开设上也可以进行阶梯式培养,首先开设基础面向过程程序设计语言课程,在此基础上设置面向对象课程,再就是开展面向对象语言的专业技能实训或者课程设计,把课程分成两个阶段来培养,突出教学目的的实用性。同时根据专业培养目的调整计算机语言培养框架体系,例如非信息与计算科学专业学生可以开始一门计算机语言程序课程,而信息与计算科学专业则可以进行阶梯式培养,毕竟熟练掌握一门计算机语言对于信息计算科学专业的来说是非常必要的。在教学过程中 , 理论和实践相结合的方式,增设生活中熟知的案例进行理论作者:单位:教学,通过生动有趣的动画演示激活学生的兴趣。循序渐进的增加实践的难度,最终达到综合应用,强调学习的实用性 , 提高学生分析问题和解决实际问题能力,突出程序设计思维的培养目标。

3结束语

本文探讨了以程序设计思维为导向,计算机语言序列课程在教学理念、教学内容、成绩评定及实验设置等方面的教学改革策略,目的是培养学生建立程序设计的思维模式,快速学习新的计算机语言,帮助学生在计算机行业可持续发展,也为计算机语言序列课程如何引导组织教学提供一种思路。

作者:付喜梅 单位:韶关学院数学与统计学院