程序设计C++课程教学探讨

时间:2022-07-11 06:06:10

程序设计C++课程教学探讨

【摘 要】目前各院校在程序设计课程C++教学上采用不同地教学方式,本文以现代教育理论为指导,结合本校实际教学经验,提出一套教学方案。其宗旨是程序设计课程教学的重点应该放在学生的能力培养上,从课程设置、教学内容与教材建设、教学方法、教学手段等方面提出了一些措施,以提高学生的实际动手能力和创新能力,并将提出的方案应用于实际教学,取得了一定的效果。

【关键词】程序设计课程 教学方案 能力培养

【中图分类号】G642 【文献标识码】A 【文章编号】1006-9682(2012)06-0010-03

程序设计类课程是计算机科学与技术及相关专业的基础课程,在计算机专业课程体系建设中占有十分重要的地位。目前大部分高校在程序设计教学中多采用传统的讲授法和系统的学习,同时结合一些上机实践操作来巩固和熟悉课堂上所讲的一些知识点,但对于计算机程序设计课程而言,其特点是更新更快、内容多、课时少。所以,在授课内容处理上既要讲授大量的基础知识、基本概念,而且还要讲授具体的应用甚至操作,要让学生掌握计算机的应用能力;既不能抛弃传统的、经典的内容,又要介绍当前最新的成果。传统的系统学习和讲授有许多缺点,它偏重知识的灌输,重理论轻实践,以教师为中心,以单项讲授为主,是式的学习方法,培养出的学生实践能力不强,不能满足当前社会对人才的需要。[2~4]教育的目标是培养、提高学生的科学素质,科学素质教育的核心是培养学生的实际动手能力与创新精神。[5]所以,我们提倡把程序设计课程的重点放在学生的能力培养上,即如何从计算机解决实际问题的角度,以解决实际问题的程序设计思想作为切入点进行教学,培养学生具有利用软件开发环境解决实际问题的能力。

在上述教学理念的指导之下,为了使程序设计课程达到上述的目标,提出以下教学方案,包括课程设置、教学内容与教材建设、教学方法、教学手段等。

一、课程设置

在课程设置上,我们应采用《程序设计基础C++》+可视化开发环境介绍的方式,并配备集中课程实践的方式。通过《程序设计基础C++》的学习,学生可以掌握基本的编程技能,但不能具备利用软件开发工具进行高级编程的能力,不能满足社会对计算机专业学生的编程要求,甚至出现大四毕业生连一门开发工具都不掌握的情况。通过这两门课程的学习,学生能较深入全面地掌握程序设计的思想和技能,并可以使用软件开发工具进行高级编程。

学习程序设计的目标是利用计算机这个智力工具来分析和解决问题,对现实问题进行建模并编程解决的能力的培养是程序设计类课程的首要任务。知识、能力和素养三者具有辩证关系,一个具有较强能力和良好素养的人,必须掌握丰富的知识。程序设计基础领域的知识是由程序设计的基本概念和程序设计艺术(技巧)组成的,要掌握这些基本概念和设计艺术,必须立足于理性化的学习和理性化的实践。能力是技能化的知识,是知识的综合体现,程序设计能力的培养必须通过动手实践来培养,同时程序设计需要以扎实的理论基础、学科方法以及思维方法来指导实践。为此,程序设计的课程应在加强课堂教学的同时,更注重上机实践环节,学生通过上课掌握了丰富的知识,通过实践锻炼了个人能力,与此同时个人素养也得到提高。[1] 程序设计基础C++的语法和语义介绍以及开发工具的介绍,可以帮助学生掌握基本的程序设计概念,只有通过两门课程大量的上机实践才能帮助学生把所学的理论知识用于解决实际问题,促进学生程序设计能力的提高。以我校为例,程序设计基础共96学时(60学时课堂教学+36学时上机实验),在大一开设,课程结束后紧接着是两周的程序设计课程设计。目前该课程实践教学环节由两部分组成:与课堂教学同步安排的实验上机和集中安排的课程设计。实验上机注重学生理解和消化课堂讲授的知识,偏重于如何编写功能单一的“小”算法,局限于一个或两个知识点,运用这些知识解决一些具体的算法设计问题,培养学生的动手能力,并培养良好的程序设计风格。课程设计是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养,对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。但是,课程设计的效果不尽人意,绝大部分同学只是在DOS环境下实现了一个算法,演示效果缺乏美观,尽管我们一再要求学生自学可视化开发工具如Visual C++,但是只有极少数同学进行这项工作,很多同学反映,看不懂,太难了。所以,根据实际教学经验,应该开设可视化开发环境介绍这门课,帮助学生掌握一门实际的开发工具。学习完这门课以后,开设课程设计,这样,在课程设计阶段综合运用所学知识,提高学生用软件开发环境解决实际问题的能力。

二、教学内容与教材建设

教学内容的组织与实施是程序设计课程改革的重要内容。教学内容在组织上应该与时俱进,不与实际的程序设计发展脱节,比如,STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。应该作为程序设计课程的必不可少的组成部分,程序设计内容体系结构应分为三个部分:第一部分简述程序设计的基本概念和思想,以C++语言面向语法和语义为背景,讲述一般程序设计语言所具有的基本内容:数据(类型)、操作、程序控制结构、数据控制,这部分内容重点介绍如何进行结构化程序设计及计算机解题的思路和方法,使学生理解算法结构与解题过程,同时掌握程序调试与测试的初步技术。第二部分以C++面向对象机制为背景,介绍面向对象的基本概念:类、对象、消息、方法、封装、继承、多态,使学生初步掌握面向对象程序设计开发技术的基本方法,为后继课程打下基础。第二部分以标准模板库和Visual C++开发工具为背景,介绍容器、算法、迭代子、开发环境、MFC、视图等知识,使学生进一步掌握面向对象的程序设计方法,以及用高效的工具进行软件开发的能力。

教材的质量直接影响教学的质量,以注重学生的程序设计思想和能力的培养为指导,组织编写具有特色的、高水平的教材。此外,随着教育信息化进程的推进,仅提供一本平面纸质教材,已无法满足高校的教学需求。为了教学的需要,我们给学生提供了立体化的教材,主要包括:主教材、学习指导书(实验和课程设计指导书)、主要参考书目、电子教案、多媒体课件、习题库和试题库等。这些资料,学生都可以通过网站获得。

三、教学方法

教学方法是程序设计教学的核心,有了合理的课程设置和教学内容,把程序设计的知识传授给学生,这是决定教学成功与否的关键因素。

在目前普遍采用的教育模式中,学生处于一种较单纯的接受式学习方式中,学生所学知识,基本上是由教师以定论的形式传授给学生的,学生不需要进行独立发现,而只需接受或理解。教师则更多注重知识的传授,重视教学内容的选择和讲授的技巧和方法的研究,而往往不重视对学生的自主学习能力和创新思维的培养。因此,在对传统教学方法分析的基础上,继续保持传教法研究的优势,改变以教师为中心的状况,注重学生多方面的能力和素质的培养,特别要重视学生思维能力、思维方法和创新能力的培养,应采用探究式教学方法。

1.采用探究式教学培养学生的创新能力

“探究式教学”,是指教学过程在教师的启发诱导下,以学生自主学习和合作讨论为基础,为学生提供充分自由表达、质疑、探究、讨论问题的机会,让学生通过个人、小组、集体等多种解难释疑尝试活动,将所学知识应用于解决实际问题的一种教学形式,[6]探究式教学方法通过“探究—创新”的过程,在培养创新型人才上起了明显的作用,强调通过在教师引导下的学生自主或合作进行探索而获得知识,特别适宜于思维能力的锻炼和自主学习能力和团队合作精神的培养,它在启发和培养学生创新能力方面呈现着明显的优点,受到教育学界的重视并得到了逐步推广。

2.采用案例教学法提高学生的兴趣

案例教学法(Case Method),在1870年由哈佛法学院院长蓝德尔(C.C.Langdell)首倡,案例教学法已被大学很多专业及中小学教学广泛应用。它是培养和提高学习者知识能力的一种教学方法,即将已经发生或将来可能发生的问题作为个案形式让学习者去分析和研究,并提出各种解决问题的方案,从而提高学习者解决实际问题能力的一种教学方法。案例教学法是一种启发学生研究实际问题,注重学生智力开发及能力培养的现代教学方法,它有着传统教学方法所不具备的特殊功能。和传统的“满堂灌”、“注入式”教学法相比,案例教学侧重实践和案例的讲解分析,启迪学生积极思维,强调在教学过程中学生主动参与,引导学生动用科学的理论知识,去分析、归纳、演绎、推理、总结,从而达到巩固知识的目的。案例教学的实施一般包括三个步骤,案例的选择,作为教师可以选择一些经典案例课题,如程序设计课程中的“学生管理系统”案例,接下来是案例教学的开展。案例教学的一般流程是教师介绍案例背景给出任务目标,学生开展现场讨论提出初步意见,之后就是在教师的指导下不断讨论与实践直至最终完成任务目标。案例教学的最后一步是评价,对学生提交的案例实施报告和案例解决方案根据案例任务目标进行评价,这里案例的评价通常由教师与学生共同完成,让学生介入评价更有利于加强学生对案例的认识提高案例教学效果。古语云:“授人以鱼,三餐之需;授人以渔,终生之用。”在案例选择及实施阶段强调学生的自学能力是非常有必要的。那么如何做到这点呢?首先逐步削弱学生对老师的依赖,即老师不再是学生学习知识的唯一途径,告知学生如何提高各种途径获得解决问题的方法是一种很有效的手段。在课堂中经常告知学生获取知识的三种途径:互联网、书籍或者编程软件的帮助文档、他人。其次是对学生独立解决的任何问题给予鼓励及肯定,这必将进一步促进其独立解决问题的兴趣。最后是在案例中刻意制造一些未学习过的问题,促使学生必须通过各种途径找到解决方法。[7~8]

3.采用任务驱动式教学法增强学生的综合能力

任务驱动教学法是一种建立在建构主义教学理论基础上的教学法。所谓任务驱动教学法,就是让学生在一个典型的信息处理“任务”的驱动下,展开教学活动,引导学生由简到繁、由易到难、循序渐进地完成一系列“任务”,从而得到清晰的思路、方法和知识的脉络,在完成“任务”的过程中,培养分析问题、解决问题以及用计算机处理信息的能力,为学生创造良好的学习环境,让学生通过努力,能顺利完成每个具体的任务,掌握学习内容,获得成功的体验。任务驱动式教学在形式上是:提出任务师生共同分析完成任务的方法和步骤适当讲解或自学或协作学习完成任务实践归纳和研讨。比如我们在上运算符重载时,在没进入主题以前,先给学生布置一个任务,实现两个复数的运算,可能学生会用以前的知识完成任务,也有的学生可能会有比较超前的想法,然后通过研讨的方式对问题进行分析并提出解决方案,最终完成任务,学生在完成任务的同时既学会了运用以前的知识点分析解决问题,又学会了运算符重载这一知识点。采用任务驱动教学法进行教学,教师的教和学生的学都是围绕如何完成一个具体的任务进行。教师教学思路清晰,学生学习目的明确,学习变成了学生的主动行为,可以充分调动学生的主观能动性,在用的需求下学,学以致用,更容易掌握学习内容,增强学生的综合能力。[1、7]

四、教学手段

在教学手段上,采用多媒体(黑板辅助)+实验室环境+网络课堂的方式。多媒体教学已经是一种非常重要的教学手段,但单纯使用多媒体进行教学,老师的即兴发挥以及与学生的交互将受到限制,所以,我们采用黑板进行辅助的方式。对于识记性的内容可以通过多媒体展示,对于理解性的内容,为了理清学生的思路则通过黑板给学生讲解。此外,对于一些例题,我们采用在集成开发环境下进行现场调试和制作例题的多媒体动态演示课件等方法来加深学生的理解。当前,程序设计的课堂教学一般在教室里采用“计算机+大屏幕投影”的方式,实验课在实验室环境下人手一机练习。该模式缺点是理论与实践相脱节、以教师为中心、束缚学生的思维,最终直接影响到教学效果。[9]在实验室环境下,老师讲课时,锁住所有的机器,使学生机和教师机保持同步,在学生练习时,再给机器解锁,让学生自由练习,通过这种方式,边讲边练,可以通过实际动手编程加深对新知识的理解。为了使所有的教学资源能被有效地利用,要建立一个网络辅助教学环境,即建立程序设计网络课堂,将现实教学中的课堂教授、作业、答疑、测试、课程设计、讨论等全部在网络课堂中予以实现,提供课程的教学大纲、教学日历、参考资料等。这样,为学生提供了一个很好的学习氛围。学生可以进入程序设计网络课堂进行在线学习、在线讨论和答疑、在线测试等。

五、结束语

总之,程序设计是计算机专业的核心课程,合理的课程内容设置配以科学的教学方法,充分利用科技发展带来的教学方式的革新,定能促进学生能力的提高,但是,还有很多方面有待进一步摸索。

参考文献

1 杨静、王浩、胡学钢、方宝富、张晶.程序设计课程教学改革探讨[J].吉林大学学报(信息科学版),2005(S2)

2詹自胜.案例教学法在计算机程序设计教学中探索与实践. www.省略/lunwen/2008/200811/270935.shtml

3 方宝富、王浩、胡学钢.机器人足球赛程序设计教学研究——大学生创新能力培养实践第七届全国计算机系主任论坛论文集[C].北京:清华大学出版社,2004

4 何炎祥、伍春香.现代教学理论指导下的“编译原理”教学综合改革[J].计算机教育,2005(3)

5 刘传平.《C++语言程序设计》课程教学改革的探讨[J].中国科技信息,2005(11)

6 戴挺、童蔚苹.探究式教学法在计算机程序设计教学中的应用[J].电气电子教学学报,2005(4)

7 崔艳莉、张敏、王重英.浅谈“案例+任务”驱动教学法在VB程序设计语言教学中的应用[J].中国农业银行武汉培训学院学报,2009(1)

8 吴昌雨.案例教学方法在程序设计类课程中的应用[J].安徽科技学院学报,2006(3):49~51

9 梁建坤、于净、毕占举、郑小松.“实验室环境+ 案例教学法”和传统教学模式的对比研究[J].计算机教育,2006(1)

上一篇:英国法学职业教育探讨及对我国法学职业教育的... 下一篇:计算机公共基础课程差异性教学研究与实践