程序设计实践范文

时间:2023-02-28 00:21:23

程序设计实践

程序设计实践范文第1篇

关键词:程序设计实践;素质培养;学习能力培养;课程改革

中图分类号:G642 文献标识码:B

文章编号:1672-5913 (2007) 22-0025-03

1传统程序设计实践课程的不足

程序员素质的内涵很丰富,没有统一的标准,公认包括如下几个方面 [1-5]:① 持续学习的能力;② 团队协作能力;③ 需求理解能力;④ 文档习惯;⑤ 良好的代码编写风格;⑥ 测试习惯。

在目前的计算机课程体系中,程序设计实践课程是培养程序员素质的一门关键课程,一般安排在程序语言课程之后,通过指导学生动手完成一个设计课题来达到三个目标。一是让学生加深对编程语言的理解,提高综合运用能力、自学能力与创新能力;二是让学生体验完整的开发过程,获得具体的开发经验;三是训练逻辑思维能力,培养严谨的科学作风。在具体的实践中该课程存在如下问题[4]:

(1) 在学生的组织上,经常是多个学生独立完成同一个课题。学生没有被组织起来,相互间的协作、沟通不够。

(2) 在课程的选题上,过于偏重于语法,课题内容陈旧,趣味性不强,不能引起学生的兴趣与积极性。

(3) 在开发的流程上,教师无法对学生的开发过程实施准确有效的监督与控制,编程习惯、编程风格等方面的引导、训练不够。

(4) 在课题的考核上,评分以程序最终实现的功能为主,考核指标中缺乏对文档、代码格式等方面的考虑,并且无法完全杜绝抄袭的发生。

这些问题极大地阻碍了学生程序员素质的培养。针对这些问题,我们结合教学的实际,以提升学生的程序员素质为目标,以培养学生的动手能力、学习能力和创新能力为核心,在组织、选题、流程、考核等方面对程序设计实践课程进行了改革,取得了较好的成果。

2程序设计实践课程中程序员素质的培养

2.1团队协作能力的培养

团队协作能力是程序员应具备的基本素质。我们在课程中把学生分为若干个小组,每组3~5人。分组时适当参考学生的实际能力,避免能力较弱的学生分在同一组。

每组一个组长,由老师指定或者学生推举产生。组长应当具有较好的动手能力和奉献精神,负责整个小组的成员组织以及程序开发的进度协调。

小组中的每个成员都要完成一定的编码量,可以独立或者与其他人合作来完成整个课题。碰到问题时一起交流、讨论,各尽所能,取长补短。好的思路可以被整个团队共享。

实践证明,这种组织方式一方面培养了学生的责任感,提高了团队协作能力,另一方面也有利于课题的进展,减少了被难题卡住的可能性。对教师来说,这种方式部分减轻了对学生个体的答疑工作量,使教师能把更多的精力放在程序设计的整体指导上。

2.2学习能力的培养

由于采取了小组模式,多人合作来共同完成一个任务,因此可以选择相对较大的课题。从培养学习能力的角度出发,选题时我们考虑了如下几个方面:

(1) 由于程序设计教学是编程语言教学的进一步深入,因此对编程语言中的一些语法难点进行了有意识的强化,包括动态内存管理、文本菜单、文件操作、链表操作、高级指针、排序查找算法等,以夯实学生的理论基础。

(2) 选题时注意实用性与趣味性,并尽量与学生的专业相结合,以提高学生参与的积极性与主动性。

(3) 选题时注意新颖性,一方面提高了学生的兴趣,另一方面也能避免从网上搜到现成的代码。

(4) 课题具有一定的伸缩性,每个课题都设置了一些选做的功能,以满足不同层次的学生。鼓励水平高的学生完成较多的功能以及对功能的合理扩展。

(5) 为了培养学生的自学能力,出题时布置了一些超出课本范围的内容,如一些函数(数学函数、延时函数、发音函数、随机函数等)的使用以及界面的设计等。

(6) 鼓励学生自己提出符合上述要求的新课题,以进一步提高学生参与的积极性。

表1是我校近年来老师与学生所设计的部分课题,涉及体育、专业、娱乐等多个方面。实践证明,课题的多样性扩大了知识点的覆盖面,提升了学生的参与热情,保证了程序设计实践课程的质量,促进了学生学习能力的培养。

表1 我校近年老师与学生所设计的部分课题

2.3分析设计、编程风格、文档习惯等多种能力的综合培养

学生的动手能力是通过开发实践锻炼出来的。对开发过程实施积极有效的控制干预,是实现培养目标的关键。我们在课题进程中实施组长监督与教师引导的二级管理,注意培养学生的多种能力,并在不同阶段各有侧重。具体如表2所示。传统的程序设计实践课程对编码、调试能力强调较多,这里不再详述,下面讨论其他几种能力的培养。

表2 课题实施各阶段能力培养的侧重点

(1) 分析能力与设计能力

对于刚学完编程语言的学生,这两个方面不宜提过高的要求。我们在这两个阶段与学生进行较多的交互与指导,使学生能明确课题的功能需求与性能需求,学会正确表达程序设计的思路。通过对这两种能力的培养,可以让学生了解自己的任务在整个课题中的地位,并建立初步的软件工程观念。

(2) 编程风格

在现代软件开发中,良好的编程风格不仅有助于代码的移植和纠错,也有助于不同技术人员之间的协作。我们参考了一些知名软件公司的开发规范,从变量命名、注释、空行、缩进格式等方面对学生进行简单的引导与训练,帮助学生培养良好的编程风格,以适应将来社会的需求。

(3) 测试习惯

测试是软件工程质量保证的重要环节。在课题的实施中,我们要求学生掌握一定的测试方法,并养成及时测试的习惯,每编完一个函数都要进行测试。这样做既能提高学生的查错能力,也能帮助学生树立的软件产品质量保障的观念。

(4) 文档习惯

文档是软件产品的重要组成部分。一些知名的软件公司要求员工必须将30%以上的工作时间用于编写技术文档。我们对此也予以充分重视,要求学生在各个阶段都进行文档的记录,包括分析方案、设计方案、每天的开发进度、总结报告等。对于学生来说,这样做可以培养良好的习惯。对于教师来说,可以通过这些文档掌握课题进度,及时进行干预,并且这些文档也是最后评分的重要依据之一。

(5) 自学能力

自学能力是创新能力的基础。我们在课题实施中,强调发挥学生的主观能动性。布置课题时,提供了一些网站、工具书和论坛供学生参考。学生遇到问题时,教师以引导和提示为主,一般不直接提供答案。从而使得整个过程成为学生主动求知、探索的过程。

2.4全方面的考核

为了最大程度的杜绝抄袭现象,在课题结束时,我们要求每个学生进行答辩,介绍自己的作品和工作。成绩的评定在综合多个方面之后给出,主要的指标体系包括如下几个方面:

(1) 程序方面,从功能的实现与代码的风格两个角度来进行评价。

(2) 文档方面,从文档的质量、数量以及报告的内容来综合评价。

(3) 团队协作方面,主要评价个人在团队的作用,包括个人工作在课题中的比重,与他人的合作情况等。

(4) 答辩表现,包括PPT的制作和问题的回答情况等。

通过以上这些方面,能够对学生进行比较全面、公正的评价。

3比较

程序设计实践课程改革前后的比较如表3所示。从表中可以看出,新的实践课程能够保证课程质量,全面提高学生各方面的能力。学生的反响也比较好,不少学生在总结报告中表示“得到了很大的锻炼”、“受益匪浅”、“找到了编程的乐趣”。

表3 程序设计实践课程改革前后的比较

4结束语

合格的软件人员是我国信息化进程中的中坚力量。为了培养符合社会需求的软件人才,我们进行了一定的探索。我们的程序设计实践课程注意发挥学生的主动性,注重对学生程序员素质的培养,因而取得了比较显著的成效。这也是一个值得深入探讨的课题,我们将继续进行研究,以期能进一步提高效果。

参考文献

[1] 教育部计算机科学与技术专业教学指导分委员会. 中国计算机本科专业发展战略研究报告[R]. 中国大学教学, 2005, 5:7-10.

[2] Gerald Weinberg. The Psychology of Computer Programming: Silver Anniversary Edition [M]. New York: DORSET HOUSE Publishing Company, 2003

[3] Andrew Hunt, David Thomas. The Pragmatic Programmer: From Journeyman to Master [M]. New York: Addison Wesley Publishing Company, 1999

[4] 李晓明, 陈平, 张铭, 朱敏悦. 关于计算机人才需求的调研报告[J]. 计算机教育,2004,(8):11-18.

[5] 梁肇新. 编程高手箴言[M]. 北京:电子工业出版社, 2003.

作者简介

郭剑(1978-),男,讲师,南京邮电大学计算机软件基础教学中心,主要研究方向为演化计算、计算机在通信中的应用。

朱立华(1970-),女,副教授,南京邮电大学计算机软件基础教学中心主任,主要研究方向为计算机软件。

孙力娟(1963-),女,教授,硕士生导师,南京邮电大学计算机学院副院长,主要研究方向为演化计算、计算机网络。

程序设计实践范文第2篇

关键词:上机实践;实践教材;教学改革;创新;探索

中图分类号:G642 文献标识码:A

1引言

在计算机教学活动中,计算机语言程序设计方面的教学是比较困难的,因为计算机语言和我们自身使用的语言在逻辑上有很大的区别,具有较为严格的语法格式和独特的算法逻辑。在教学中,语法和算法都可以通过研读程序进行讲解,但是,如何使学生通过学习能够独立编写程序一直是我们教学中的难点。由于计算机的算法与数学上算法有很大的区别,而经过十几年的学习,大部分学生利用数学中的算法解决问题已成了定式,例如求“1+2+3+……+100”这个计算机程序语言中经典的问题,很多学生考虑的是简便公式而不是直接循环求累加和,类似的问题不胜枚举。如何使学生从多年养成的思维定式中解放出来,轻松编写适应计算机特点的优秀程序,扩展其思维能力、创新能力,是程序语言教学需要解决的首要问题。针对这一问题,除了需要在计算机程序设计教材上下功夫外,实践教材的切入与引导也是不可缺少的必备环节。

2遵循学习规律,重视实践环节

长期以来,大家对编写计算机程序设计语言的教材十分重视,但却忽视了实践上机教材的编写,甚至于上机教材绝大部分内容是程序设计语言教材的习题解答,有的老师甚至不希望学生购买上机教材,因为部分学生会直接抄书上的作业答案。但是,历年来上机编程却是学生学习计算机程序设计语言的薄弱环节,许多学生可以熟练地阅读程序,但需要独立编程时却束手无策,不知从哪方面下手。而大部分的上机教材的上机实验的内容都只是针对某一个知识点,简单地提出编程要求,达不到辅导学生自主编程的目的。

为了解决这一在教学环节中出现的问题,培养学生的独立思考和编程能力,拓展学生思维,我们编写了《C++程序设计上机实践与学习辅导》教材,教材由四个部分组成,分别为上机实验指导、学习辅导与习题解答、综合测试和书中出现的全部习题与测试题答案。

3针对上机环节的创新与实践

虽然第一部分的上机实验指导只有16个单元,但却不同于一般的实验教材,是遵循学生的学习规律,从阅读程序模仿程序入手,由浅入深,最后达到拓展思维、提高编程能力的目的。具体来说,有以下四个步骤:

(1) 分析运行样例程序

阅读分析程序是学习计算机程序设计的第一步。每个实验单元的第一部分都是一个有一定深度和难度的典型范例程序,同时对该程序进行编程分析,分析程序的算法和难点,并且针对该程序提出问题,需要学生通过上机运行分析程序予以解答,目的是使学生通过调试运行样例程序掌握算法的基本结构与常用语法规则,并且学习规范化的编程方法。

(2) 完善程序

实验单元的第二部分是完善程序。给出一个与样例程序类似的完整的程序架构,其中重点的算法或相关的语法部分由学生自己完善,完善后调试运行,并且回答有关的问题。这样通过练习,逐步使学生适应了程序的语法结构,同时因为算法是学生自己完善的,也解决了程序结构与算法不能兼顾的问题,使得学生可以有针对性地解决重点问题。在这一部分中,如果碰到经典的算法问题,比如弦截法求解方程、选择法排序等,则会给出详细的解释,以帮助学生深入掌握。通过这一部分的练习,学生对程序的结构和算法语言的特点有了一个比较全面的认识,也有了一定的独立编程的能力。

(3) 模仿样例程序编程

实验单元的第三部分是要求学生独立编写与样例程序类似的程序,主要是使学生通过模仿练习独立编程。模仿是独立编写程序的必要步骤,通过模仿,可以了解规范的程序结构,思维方式,编程方法,程序设计技巧,同样,对编程过程中涉及到的常用算法及编程难点都有详细的提示及指导。

(4) 进阶提高编程

实验单元的第四部分是进阶编程练习,编写与上述三部分内容与语法有一定的关联度但又具有一定难度的程序。这一部分要求学生比较好地掌握前面三部分的内容,目的在于加强学生对所学知识、技能的灵活运用。在这一过程中,学生独立分析问题和解决问题的能力得到提高,并且可以尝试不同的解决问题的方法,引导学生用多种思维方式去解决问题,拓展思维能力,增强学生的创新精神和创新能力。

每个实验单元都是由上述四个部分组成的,从学生实践的角度而言,由浅入深,构成了一个有机的整体,使不同程度的学生都能找到适合自己实际情况的实验项目,达到提高学生的知识水平和实践动手能力的目的。

例如实验书中的函数单元,其中样例程序是根据变量求解函数值,通过这个样例程序使学生掌握了调用函数的格式,实参、形参的定义、引用,函数返回值的使用等函数调用的基本知识。而完善程序部分有两个程序,一是用牛顿切线法求解方程的实根,另一个是利用二分法求解方程的根,两种算法都给出了详细的图示说明,要求学生完善的部分则是实参、形参调用的语法格式和关键的算法语句。学生在完成该部分内容的时候,不用去考虑具体的程序结构,而将重点关注在函数部分最易出错的地方上――参数的调用格式和函数返回值的应用。模仿编程的部分是编写弦截法求解方程的程序,同样在书中给出了弦截法求解方程的详细的图示说明,而弦截法解方程的程序结构与二分法极其类似,所以对学生而言,只要掌握了函数调用的概念,通过阅读程序说明就可以轻松地完成这一项目。进阶提高是用递归调用的方法编写牛顿切线法求解方程的程序,这个题目有一定的难度,因为递归调用本身就是程序语言学习的难点,但是,从另一个角度来看,掌握了递归调用,则对函数调用参数的传递、函数值的应用等函数调用的概念也有了一个深层次的理解,同时编程能力也有了进一步的提高。

由此可见,通过这四部分的练习,不同程度的学生都可以找到适合自己水平的切入点,进而深入下去,由浅入深,掌握每个实验单元的内容,编程能力和思维能力都得到了切实有效的提高。

以上是实践教材的第一部分即上机实验指导部分的内容及特色,也是我们编写实践教材的初衷。

4用多样化练习巩固所学内容

众所周知,C++语言由于概念复杂、规则繁多、使用灵活,是较难掌握的一门算法语言。这就需要学生在了解概念、语法、算法的基础上,有针对性地大量练习,在练习中加深理解,发现问题,巩固所学的内容。而现有的教材由于篇幅所限,无法涵盖大量的例题及习题,因此,在实践教材的后边部分,我们收录了大量的习题,用以补充这部分的内容。

程序设计实践范文第3篇

关键词:程序设计;实践;兴趣

中图分类号:G633.6 文献标志码:A 文章编号:1674-9324(2014)22-0178-02

《C/C++语言程序设计》是计算机学科体系中的核心课程之一,主要讲授程序设计语言的基本知识和程序设计方法,使学生了解高级程序设计语言的结构,掌握程序设计的思想和方法,以及基本的程序设计过程和技巧,具备初步的分析问题和利用计算机求解问题的能力。课程核心是培养程序设计能力,加强实践是培养设计能力的重要途径。本文基于教学中存在的问题,从案例驱动教学、注重实践教学等两方面探究如何在实际教学中提高学生的学习积极性和思维能力,实现学生从单纯的程序编写到解决实际问题能力的转变。计算机程序设计类课程实践性很强。实践性强体现为无论多简单或多复杂的程序设计问题都要形式化为数学式子或相应的操作步骤,最终都要编写程序,开发出能够解决相应问题的计算机软件;学习该类课程既要注意学习好理论,更要注重进行实际上机操作的训练,运用理论知识进行程序设计解决实际问题,做到理论与实践相结合。

一、教学难点

本文对2011、2012和2013年度参加C和VB二级考试的一年级理工类学生做了抽样统计(数据来源为西安科技大学大学教务处),结果表明报考率和通过率差强人意,尤其是C语言,9个班级中通过率在50%以上的只有3个班级,最低的通过率仅为17.3%。通过问卷调查的方式获悉学生普遍对C语言的学习有畏惧心理。程序设计类课程理论性抽象性较强,语法知识繁多,结构复杂,调试程序更是初学者的“拦路虎”,学生往往难以理解程序设计的思维方式,对教学内容似懂非懂,而掌握良好的程序设计方法则更加困难;采用传统的教学方法讲解课本上的内容难以调动学生的学习积极性。主要原因主要有以下三方面:第一,教学重理论轻实践,过分注重计算机语言语法知识的讲解,轻视了算法设计、逻辑思维和编程方法的培养;第二,学生计算机编程能力有待提高,大多数学生基本上是初次接触计算机程序设计,习惯采用数学思考方式来进行程序设计,还没有真正掌握计算机编程的基本思路;第三,实验课时不足,实践课时通常是理论课时的一半,大部分专业是16个学时,这样的学时安排远远不能满足学生能力培养的需求。教学要以学生为中心,要让学生容易接受理解。教师只有从学生的角度体会“学”之困惑,反思“教”之缺陷,才能明了如何通过“教”帮助学生学习,体现现代教育以人为本的思想。程序设计基础课程对许多学生来说,是第一次接触编程,因此,学生往往难以理解程序设计中分析问题、解决问题的方式,尤其是抽象思维。所以,教师不但要研究教学内容,更要研究教学对象――学生,根据学生的学习特点,研究教学内容传授中重点和难点的解决办法。

二、教学组织方式

程序设计基础教学内容的组织方式主要有两种:以语言知识为主线、以程序设计为主线。目前普遍采用的方式是前者,经过一些高校多年的探索实践,以程序设计为主线的组织方式也取得了成功的经验。以语言知识为主线的教学内容组织方式往往以上述语言表达模块为单位,同时考虑程序设计的学习进程来组织教学内容。典型的教学内容组织路线是:概论-数据类型和表达式(标准类型)―分支―循环―数组―函数―指针―结构―文件。以程序设计为主线的方式则重点围绕学生程序设计能力培养,以程序设计的学习进程为主,打破语言模块的完整性,循序渐进地组织相关教学内容。在教学中,以语言知识为主线的教学内容组织方式重视语法知识的完整性,侧重以语法的理解带动程序设计能力的培养;以程序设计为主线的方式则更加强调编程实践,侧重以编程带动对语法知识的深入理解。因此,以程序设计为主线的教学组织方式往往按照程序设计的渐进学习进程,结合实际案例来组织和实施教学,将程序开发过程的相关内容贯穿和渗透到每个知识点的讲授中去。一种以程序设计为主线的教学内容组织路线是:概论―初识程序设计―语句级控制(分支与循环)―数组应用―模块级控制(函数)―指针、结构应用―程序设计进阶(递归、链表结构)―文件应用。在采用以程序设计为主线的实施方式时,可以将课程内容分为若干渐进式的程序设计学习阶段。在每个阶段的教学过程中,通过案例讲解程序设计的思想和方法,引出知识点,必要时再使用多种方法(如多媒体动画)进行深入的讲解与分析,并通过布置思考题和实验题,让学生通过学习思考和大量的上机练习培养编程能力,掌握知识。

三、问题驱动式教学

问题驱动教学是围绕教学目标,通过完成事先设置的相关联任务(例题)来达成教学目标的实现。在开课前,对典型的例子演示运行结果,激发学生的学习兴趣,明确学习任务和目标;在课堂上,将本次课程的内容和知识点通过几个具体的任务表现出来,引导学生在完成任务的过程中掌握所涉及到的理论知识,并注重反例教学,让学生“吃一堑,长一智”。这种教学方式学习目的明确,任务清晰,能极大地调动学生的学习积极性,对教学效果的提高起到非常明显的促进作用。

四、模仿创新教学

模仿创新即通过模仿而进行的创新活动。在《C/C++语言程序设计》课程中,模仿体现在学生根据教师所给程序进行验证分析,碰到类似的情况和功能实现可以参照相应的程序;创新是在所给验证性实验的基础上,根据新要求,实现新程序,并能综合应用所学知识实现复杂功能程序。课程实验教学将学生学习到的理论知识应用到实际问题。考虑到学生的基础不同,应尽量设计有层次和梯度的实践训练内容,使不同水平的学生都能得到最大可能的提升。每次的实际教学设计中,可以把实验内容分成三部分:验证、改编和综合。

1.验证程序。结合案例教学方法,针对每次上课所学知识点的不同,分别提供给学生一些已包括所学知识点、实现实际问题、可直接运行出结果的有吸引力的案例,即源程序,让学生自己执行程序和查看结果,根据源程序和运行结果分析其程序中所包含的知识点及程序具体实现的功能,加强学生分析问题的能力。有时候源程序中包含一些常见错误,让学生发现问题,调试程序,带来成就感。

2.改编程序。在已给程序的基础上,提出具体的功能改编要求,学生需要结合已学知识修改相应的程序,从而实现新功能。例如,学生可以通过改编“猜数字游戏”源程序,实现“提示猜测数字大小、每个数字最多猜7次”等功能。

3.综合程序。在学习了基本的程序设计知识后,通过综合程序练习同学们运用知识解决问题的能力,例如象棋游戏、成绩管理系统、智能排序等综合程序。基于案例的教学方式有时教师遇到问题暂时卡住时也可问学生如何解决,学生会很有兴趣积极地帮助教师完成该案例的调试,这样真正做到上下交互,教学相长。这种教学方式忌只放PPT,要当场分析和编程,不能用解说代码代替实际开发,这样学生就更感兴趣学习编程了。

五、课外补充

1.建立“程序设计学习QQ群”。责任教师申请一个学习程序设计类课程的QQ群,所有的辅导老师和学习这门课程的学生都加入群。开学初老师把QQ群公布给学生,让学生课后每次上QQ都能看到群里的讨论。在QQ群里,学生与老师,学生与学生之间随时随地在网上进行讨论、答疑。在学习群里“能者为师”,学生之间经常互相解答问题,这样既提高了学生的知识水平和问题的回复率,也减轻了辅导老师的工作量。

2.定期组织学习小组之间的编程竞赛。每个班按10人左右分成若干个学习小组,老师为组织者和裁判,在教学大纲的范围内出题进行小组之间的编程竞赛,由老师出一个相同的题目,小组内的成员之间通过小组群,互相协作,共同参与,最后由组长整理提交程序的结果,老师做裁判,又快又准完成程序设计的小组为胜,获胜的小组成员每人都获得平时成绩加4分的奖励。这种编程竞赛方式能充分调动每个小组成员参与的积极性,提高学生的学习兴趣,同时又能激发了学生的团队合作精神。

3.制作“微课”形式的视频。仿照“做游戏学英语”的形式,制作各知识点的微课视频,在网上共享,以备学生课下自主学习。

参考文献:

[1]吴文虎.我怎么讲好“程序设计基础”这门课[J].中国大学教学,2011,(12):10-12.

[2]王洪波.杏坛英华――北京大学青年教师优秀教案集[M].北京:国家图书馆出版社,2009.

[3]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2009.

[4]何钦铭.“程序设计基础”课程教学实施方案[J].中国大学教学,2010,(5):62-65.

[5]刘芳.《C语言程序设计》教学存在的问题及改进[J].教育理论与实践,2012,32(36):51-52.

[6]孙慧然.“程序设计基础课”理论与实验教学的改革与实践[J].实验技术与管理,2012,29(4):299-300.

程序设计实践范文第4篇

关键词:程序设计实践;项目法;考核方式;教学改革

随着计算机技术逐步渗透到工作、生活的各个环节,本科院校,特别是理工类院校加强了学生计算机能力的培养,设置了计算机基础、高级语言程序设计等专业基础课程,把学生的程序设计能力培养作为教学的重要目标。

程序设计实践不仅可以巩固课堂上学习的理论知识,也能锻炼学生的程序设计能力和动手能力,它是引导学生从被动学习到主动学习的好机会,因此,这个阶段的计算机教学作用很明确。项目导入、以任务驱动教学、引入ACM竞赛平台等新的方法纷纷引入[1-3],多数研究都侧重于以实践环节带动课堂上的理论教学,也有单独开设一门实践课程以培养学生动手能力的[4],不论哪种形式都以让学生完成多个针对一定教学目标的程序为主,这不利于培养学生程序设计的整体思想,而我校C/C++程序设计课程除了在理论教学过程中根据教学目标安排学生完成相应的实践,还在本科二年级安排为期2周的程序设计实践集训,用于完成综合性、较大规模的程序。

项目教学法,是德国职业教育在20世纪80年代大力推行的一种“行为引导式的教学形式”,它是将一个相对独立的项目,交由学生自己处理。从信息的收

集、方案的设计、项目的实施到最终的评价,都由学生自己负责。这种方式在学生已具备一定的编程知识,却没有多少编程经验的情况下会取得较好的效果,非常适用于大学二年级的程序设计实践环节。

近两年,我校逐步将项目法引入程序设计课程,通过项目训练强化学生对计算机语言的学习,培养学生的程序分析、设计和开发能力,提高学生的学习能力、实验能力以及团队合作能力,取得了较好的效果。

1项目教学法的实施步骤

项目法以学生为中心,强调学生的主观能动性,因此,这种思想应贯穿于程序设计的各个环节:学生面对的是一个个能体现实际应用的典型编程“项目”,教师引导学生从实际入手,在强烈的问题动机驱动下,学生通过对已学理论知识的积极主动应用,进行自主探索,并通过团队之间的相互帮助,完成既定任务的过程。学生通过该项目,了解并把握整个过程及每一环节中的基本要求,逐步建立起程序设计的思想。

1) 创建项目组。考虑到学生实际能力和程序设计周期,一般3人组成一个小组。学生可以自行分组,合作完成一个课题,同时选定组长,负责项目小组的分工协调,保证项目的实施进度。

2) 选题。在教师给定课题的范围内,小组经过讨论选择合适的题目,也可以就感兴趣的问题自行命题。

3) 教师的监督和引导。学生第一次面对这些实际应用问题,无从下手,因此,教师在课题的理解、方案设计、关键技术解决等方面应给予指导,但应注意“授人以渔”,而非“授人以鱼”。

4) 考核。除了程序运行及提交程序设计报告外,增加答辩环节,答辩时各组演示各自系统,介绍自己完成项目的主要特色、功能、模块划分、算法思想,并回答老师以及其他同学的提问,接受老师和其他小组的点评。项目组的成员对项目的成败负有同等的责任,因此,原则上项目成员的成绩相同,成绩取决于项目完成情况、算法设计、分工合作、答辩以及程序设计报告。

2项目教学法实施的关键问题

程序设计实践环节中引入项目教学法,使得学生能以项目为核心完成软件设计的综合训练,培养程序设计整体思想,锻炼从问题的分析、总体框架设计、代码实现、测试到项目展示等一整套的实践能力。

为保证项目教学法的成功实施,必须关注以下3个关键问题。

2.1题目的选择与设计

程序设计题目的选择和设计非常关键,不仅要考虑到工作量还要考虑学生的兴趣、项目完成目的等多方面因素,表1是我校的程序设计任务书示例,其中基本功能是必须完成的,而学有余力的学生可以在任务书的提示下进行深入的开发,以满足不同层次学生的需求。在题目的设计和选择过程中要注重以下几点。

1) 题目内容的设计性。

这是达到良好效果的关键部分。以往程序设计的题目要求由教师全部详细给出,结果造成学生的惰性,相互之间的抄袭或直接上网查找答案的现象屡禁不止。因此,每一个程序设计题中都有要求学生根据实际生活经验或者知识进行设计的部分。表1的题目就是要求学生自动生成大批量的话单,并设计规则完成账单的定制。学生刚看到要求,会无从下手,经过思考后可以和时间函数、随机数、文件等知识联系起来,还有同学会联想到数据库。

这种形式可以发挥学生在实践类课程中的主导地位,设计部分往往成为各个项目小组的亮点,并引起更多的兴趣关注和讨论,学生收获最多。学生在教师的引导下体会到自主学习和解决问题的快乐,从而引发对编程的兴趣和自信心。

2) 题目类型的多样化。

程序设计题目的选择可以来源于生活的实际问题,也可以是与当前科研密切结合的问题,可以是小游戏的开发,也可以由学生自主命题,这样做的目的首先在于提高学生的兴趣,同时也有利于学生体会和理解编程在生活或科研中的作用。

3) 题目难度的多层次。

考虑到学生层次的不同,设计不同难度的题目,且每个题目都有基本功能和扩展功能,学生可以依据自身能力选择是否完成扩展部分的要求,这样可以尽可能让不同层次的学生在程序设计过程中都有所付出,有所收获。

4) 题目方法的通用性。

学生在程序设计语言的学习中,往往偏重于理论知识,关注的常常是语法,对于实际系统的设计和实现没有概念,因此,设计课题时,可以结合软件工程、经典算法等方面的内容,涉及到的知识点可以是学生没有学过的,只要给予适当的引导和帮助,学生不仅有兴趣,也有能力通过自主学习掌握。

2.2引入竞争机制,改变考核方式

实践环节的考核一直是教师头疼的事情,工作量的界定、程序的正确性、学生抄袭程度等难以给出客观的评价,因此,教师不得不采取各种方式来应对,如在线评测系统、主观题自动判断、增加笔试,等等[5-6],这些方法需要投入一定的精力,且效果不尽如人意。

但是,对于像程序设计这样一类的实践,需要给出学生最精确的成绩吗?笔者以为不然。程序设计课程强调的应该是学习过程而非结果,应着眼于学生程序设计思想,设计能力的培养,鼓励自主学习,成绩只是督促学生参与的手段,更何况除了编程能力,在实践中还有很多需要锻炼的能力,比如团队协作能力、自我展示能力等。

因此,我校对程序设计的考核方式进行了改革,成绩不再是一个人的,而是同一项目小组成员的共同行为。程序设计过程中大家合理分工、取长补短。考核时增加答辩环节,并且答辩不局限于项目小组,除教师外,其他同学也可参加并提问,答辩完成再由教师做相应点评。这样一来,学生的兴趣得到很好的调动,不同层次的学生都能参与进来,以各种方式展现自己的能力而不是单纯的抄袭,最后的提问和点评又使得学生对项目有了更深层次的认识。

2.3资源库的开通

程序设计实践范文第5篇

关键词:教学内容;教学手段;教学方法;考核方式

C语言是早期最经典、最强大的面向过程的程序设计语言之一。虽然现在面向过程已经全面转向面向对象,但是C本身的中级语言的设计理念以及对现有VC/C#等语言的深刻影响,使其至今仍是程序设计入门的首选语言,也是工科院校计算机专业学生接触的第一门程序设计语言。对于计算机类专业学生来说,一旦掌握了C语言,就可以较为轻松地学习其他任何一种程序设计语言,为后续的面向对象程序设计以及Java程序设计等语言的学习打下基础;对于其他非计算机专业的工科学生来说,比如电子、机电专业来说,该课程为学生用计算机编程解决实际问题提供了方法,是学习单片机技术教学的基础和重要工具。

一、C语言教学中面临的问题

C语言程序设计是一门基于dos操作系统下的面向过程的程序设计语言,随着面向对象语言的开发,C语言在界面交互性上逊色不少,作品上也不如Flash、三维动画效果吸引眼球,难学、难懂、难以应用的课程,对学生越来越缺乏吸引力。针对这种状况笔者认为,更新教育观念、探索新的教学模式才是根本出路。笔者根据多年的教学经验,对C语言程序设计课程从教学内容、教学手段、教学方法、考核方法方面进行了一系列的创新改革。教学内容主要解决如何调动学生积极性,激发学生创新能力,如何提高学生的创新能力、实践能力、研究能力、发现问题和解决问题能力等综合素质;教学方法主要解决如何实现“以人为本”,分层次教育,如何通过引导、启发等方法,激发学生的发散性思维。同时要利用目前课堂和实验教学在培养学生创新能力和实践能力方面的优点,利用大学生实训基地,为学生的创新和实践能力的锻炼和培养提供一个良好的平台。

二、教学内容的创新

课程内容的选取与组织是课程教学改革的基础。人才培养方案对C语言程序设计教学内容进行重新整合,把课程学习划分成培养学生的基本程序设计能力和培养学生的专业程序设计能力两个阶段。

第一阶段安排在大一第一学期,主要针对没有程序设计经验的大一新生,重点讲授C语言的基本知识,包括三种基本结构、数组、函数的概念。在第一阶段教学中,笔者采用案例教学方法结合具体的程序实例,创设情境,引导学生自己总结掌握C语言的基本语法和程序设计的基本方法。第一阶段的学习结束的时候,学生可以具备基本的程序设计能力,独立编写具有初等难度、几十行的程序,并且能够较顺利地完成程序调试与测试。第二阶段教学放在大一第二学期初,针对具备基础程序设计能力的学生,重点培养学生的专业程序设计能力。在第二阶段的教学中,以学生为主体、以教师为引导,采用国家火炬计划河北省软件人才工程实训课程,使学生融会贯通所学知识,完成一个具体的项目,以达到提高学生程序开发能力的目的。迄今为止,学生完成的项目包括“银行储蓄管理系统”“信息查询系统”。教学实践证明,这种理论和实践技能并行的教学模式,更加有助于学生的创新能力的提高,使学生在不断实践中掌握技能,在技能学习中提高基础理论。

三、教学手段的创新

在学习过程中除了发挥教师的引导作用,还需要充分调动学生的参与主动性。在授课期间灵活采用多种教学手段,如:自学、演示、对比、课堂提问、学生演练和讨论等,通过不同方法,寻找创意思维“契机”,安排创意铺垫内容,培育学生的创意萌芽,营造创意环境,引发学生争鸣,为学生提供更多的思维空间,诱发学生的思维灵感。例如,在教学中讲解“循环结构的循环嵌套”的时候,提出马克思手稿中的数学题的案例:伟大的思想家马克思的手稿中有这样一道有趣的数学题:有30个人,其中有男人、女人和小孩。他们在一家饭馆中吃饭,共花费50先令。如果每个男人吃饭要花3先令,女人要花2先令,每个小孩要花1先令,问男人、女人、小孩各多少人?先提出问题,引导学生分析、讨论案例,提问学生运用数学知识完成案例提出的问题需要进行哪些操作,这样学生就会比较有兴趣,课堂气氛就活跃起来。然后帮助学生从案例分析中理解并掌握什么是多重循环,并且如何使用双重循环解决问题,最终完成程序的编写。

在学习的第二阶段采用开放式训练教育方式,利用专题设计和课外指导方式,鼓励学生课外自主进行训练。如:完成的项目“信息查询系统”,教师提出设计方案,学生完成基本功能以后,自己可以对其他功能进行完善。

四、教学方法的创新

课程每个章节内容结构主要由三部分组成:

知识点:介绍本章需要掌握的知识或技术。

应用案例:介绍本章知识应用的案例。

创新训练:针对具体的问题,应用本章技术来完成知识点的应用。

在整个教学过程中,教师采用框架式教学,像建筑工程师修建筑一样,先采用精讲的方式,让学生建立整门课程的知识框架;接着通过案例教学、项目式教学等多种教学方式,让学生逐步去进行细节知识点的填充;最后通过综合训练方式,完成整门课程的学习。

例如,在讲解C语言程序设计中的函数时,搭建出例如综合排序等程序的框架,给学生留出函数,让学生自由开拓思想,独立完成一些小型实例的编程,经过具体知识点的训练后,还要重点进行综合知识的应用训练,开展一系列的创新应用,以达到知识综合运用和培养创新能力的目的。

五、考核方式的创新

传统的C语言程序设计考核模式一般以标准化的笔试题为主,这种考核方式侧重语法知识的考核,忽视编程实践能力的培养。为此,笔者改革传统的考核方式,将考核分为平时实验和期末考核两部分。平时实验成绩考核的是学生每一章知识,实训作业就是在每一章节结束的时候,布置相关的习题,学生利用业余时间编程,并且在实训期间进行调试,调试成功后上传到服务器上。期末考核成绩采用的是教研室开发的上机考试系统。上机考试系统模拟C语言二级考试建立了知识面齐全、题量充足、难易度合理的试题库,采取随机抽题的形式重点考查学生的程序设计能力和程序调试能力。这种考核方式督促学生在平时学习中加强对编程举一反三的实践环节。实践证明,这样不仅能有效培养学生的实践编程能力,还激发了学生动手实践解决问题的兴趣。

总之,经过不断的摸索与实践,通过以上的教学方法与教学手段的改革和实践,不仅提高了学生的学习兴趣,让学生从枯燥无味的语言学习中解放出来,从被动学习走向主动学习,同时也培养了学生分析问题、解决实际问题的能力,充分发掘了学生的创造潜能,锻炼了创新和协作精神。

参考文献:

[1]郭芹.对高职高专计算机专业程序设计教学的思考[J].中国科技信息,2008(1).

[2]秦玉平.C语言程序设计教学法研究[J].渤海大学学报,2005(6).

程序设计实践范文第6篇

关键词:VB程序设计;现代教育;实践与改革

Visual Basic程序设计作为一门程序设计语言,在教学过程中,应用和研发的特征比较明显,而初学者总是感觉程序设计比较枯燥无味、难于理解、入门困难,甚至对其产生畏难厌学情绪。教学中笔者利用现代教育技术手段,对传统的教学方法进行改革,实践探索出了一套行之有效的教学策略,取得了良好的教学效果。

一、着力培养学生学习兴趣,上好VB入门课

1.课前强调程序设计的重要性,充分调动学生的求知欲

在讲授该课程之前,结合学生实际所学专业,事先准备几个VB开发的应用程序或是信息管理系统,第一节课上课时通过多媒体演示,让学生明白程序设计的重要性和实用性,树立明确的学习目标:学习VB不只是达到计算机应用能力的考核要求,更是今后工作、生活中不可或缺的一项基本技能。学生了解了学习目标之后,就会迫切地想自己去尝试程序设计,这样学生学习程序设计的积极性就被调动起来了。

2.揭开程序设计的神秘面纱,开始学习之旅

初学者在学完计算机应用基础后,对计算机的运行原理还是似懂非懂,在这样的前提下,开设VB程序设计课,学生想到要自己编写程序代码来控制计算机完成一项任务更是一头雾水。通过长期的教学实践笔者得出的结论是,要解决这一问题,主要是要在学习者脑海中树立“万丈高楼平地起”的思想:即无论多复杂的程序都是由基本语句积累起来的,而基本语句是很容易掌握的。例如,借助Windows画图程序讲解一个简易调色板程序,改变文本框背景颜色只需要一行语句:Text1.backcolor=VBred即可实现。教师在给出VB颜色描述的关键字后,进一步要求学生实现其他颜色的编程。同时,在教学之初,教师还可以通过一些简单有趣的实例讲解来帮助学生正确认识VB程序设计的基本步骤和方法。

3.鼓励学生克服程序设计的畏难情绪,激发其学习兴趣

学生通过两周的学习,对VB程序设计会有初步的了解,如VB基础开发环境、对象、方法、事件等概念,但教学之初所形成的学习欲望会逐渐冷却,再加之VB的每一个对象都有许多个属性,而且全是英文,晦涩而抽象的概念和英文描述很容易使学生产生畏难情绪,甚至厌学。此时特别需要教师对学生进行鼓励、指导,引导学生明白虽然每个对象具有自己的属性,但各对象之间有大部分属性是相同的,并且这些属性中常用的只有一小部分,很容易就能掌握;另外程序代码的书写虽然看似神秘,但掌握了语法格式后很容易编写。

二、改革教学方法和教学手段,提高教学质量

1.从生活实际入手,将抽象的理论形象化

人类社会的理论知识都是日常生活中发现总结出来的,而VB程序设计作为一门课程也是前人在不断的实践中完善和发展起来的,必然和日常生活有着密切的联系。如果能将VB程序设计的教学过程同生活实际联系起来,原本枯燥抽象的理论就会变得形象生动、通俗易懂,易于学生接受。例如在讲解VB变量的命名时可以联系实际生活中起名的习惯来类比展开,“变量命名必须以字母打头”这一原则如同我们的名字必须以姓氏打头;变量起名时不能用关键字如if,for等,如同我们起名时不会用灯管、茶几等名词;变量在其有效范围内必须唯一,如同我们一个家庭的弟兄俩不应重名。只要将理论与生活有机地结合,找出理论在生活中的原型,教师讲课也感到轻松,学生听起来也容易理解,实践证明这可以取得事半功倍的效果。

2.利用现代教育手段,提高课堂教学质量

VB程序设计学习的特点是实践性强,所有的理论最终都要以写好的程序为结果。而传统的黑板+粉笔的教学手段使教师将程序代码写在黑板上讲解无异于画饼充饥,无法向学生展示程序运行的结果,特别是容易出错的地方不能验证,因此充分利用多媒体投影等现代教育技术手段是非常实用且必要的。一是利用多媒体授课,恰当的课件不仅可以提高学生的学习兴趣,还能把程序结果实时地展示给学生,增大了课堂教学的信息量,使讲授内容形象、直观,这样的教学过程学生听得清、看得切、记得牢、印象深,原本在课堂上听起来非常枯燥乏味的内容就会变得充满乐趣。二是采用实践型授课,在计算机实验室利用电子教室进行教学,即采用边讲边练的授课形式,学生对学习的程序进行现场操作,将理论讲授和上机实践融为一体,使讲解更直观、更清晰、更具吸引力,同时教师还可以随时发现学生实际操作中的问题,给予及时的指导,从而有效提高教学质量。

三、创新评价方式,巩固教学成果

课程的教学质量是平时教与学质量的总体体现,课程考核是对学习者知识、技能和能力的综合评价。VB程序设计由于其特有的实践性强而有别于其他课程,采用单纯笔试的评价方法不能全面、准确地衡量教学质量。通过实践发现,VB课程考核方法的改革思路是在现有的考核基础上,注重对学生过程性评价和实践操作能力的评价,即采用“理论(40%)+上机(40%)+过程性考核(20%)”的综合性考核模式。

四、结束语

总之,教学工作是一项艰巨的任务,还需要在长期的教学实践中不断改革旧的教学模式,并结合学生实际情况,去探索研究,寻找新的、行之有效的教学方法和手段,综合评价学生,努力培养学生自主学习的兴趣,只有这样才能提高学生实际应用的能力,VB课程的教学质量才能得到不断的提高。

参考文献:

陈翠松.Visual Basic 程序设计实用教程与实训[M].北京大学出版社,2006(8).

程序设计实践范文第7篇

关键词:C语言程序设计实践教学;课时统一化;小组竞赛;网络平台

中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2015)51-0224-02

在21世纪信息技术时代,大学生不能只满足于会用办公软件。为了迎接新世纪的挑战,无论计算机专业还是非计算机专业的学生,都应当学习C程序设计课程,并且把它当作进一步学习与应用计算机的基础。C语言作为一种程序设计语言,它功能强大、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高低级语言的许多优点和特点,适用于编写系统软件,又能方便地用来编写应用软件[1,2]。因此,C语言程序设计作为第一门计算机语言教学显得尤为重要,且实际上它也日益受到各个高校的重视。然而,当今大学生在学习这门课程的过程中却出现了各种问题,如学不会、不想学、听不懂,这些问题逐渐地恶性循环,致使这门课程没有完全发挥出价值,形同虚设。所以,我们亟需大家探讨并发现问题,解决问题。

一、实践教学现状

C语言程序设计作为一门计算机基础教育课程,已经在各高等院校开设,现各高校普遍采用板书或多媒体讲解概念、语法、教材,然后让学生上机操作,这种方式存在弊端,致使大部分学生只能读懂程序而不会编写程序,甚至一部分学生变成程序代码的“搬运工”,与我们的教学目的背道而驰。根据目前的教学状况,C语言程序设计的教学存在以下一些问题。

1.学生的参与度不够。在传统的教学中,教师采用的是全板书形式,如今,多媒体普及,教师又改为全多媒体教学[3]。实际上,多媒体就是节省板书时间,但依然是教师照本宣科地讲,学生一头雾水地听这种陈旧的模式。一味地采取“填鸭式”教学,从头讲到尾这样被动的课堂,学生就是一名观众,没有参与到学习与思考中来,正因如此,学生注意力不集中成为一件高频率事件,等学生再集中注意力回归课堂,会发现对教师的话已经是不知所云,所以为了保证学生高效率听课,一定要让学生参与其中。

2.理论与实践脱节。现在,大多数高校普遍存在的一个问题是课时总量不够,时间安排也不适当,表现在师资力量匮乏,教学班级多,教学任务繁重。以笔者所在的学校为例,一个学期理论课共42个授课课时,26个上机实验课时,加上各种节假日,上课的时间少之更少。C语言程序设计是长期的、逐步深入的教学过程,依照现在的教学任务设置,教师要想按照考试大纲要求进行讲解,就只能加快教学进度,顾不上对实践内容进行详细讲解,结果导致学生的实际操作能力偏低,但若全部进行机房实践,又不利于学生掌握基本理论。而且,为了教学课程的安排,通常学生的上机实验课会比理论课晚两天左右,甚至周一理论课,周五才安排上机操作,不能将实验与课堂教学环节很好地进行连贯,导致理论与实践的严重脱节[4]。

3.实践与应用太少。学以致用是学生学习的最终要求,我们的教学目的是让学生可以运用所学的知识读懂程序、编写程序,然后去解决实际问题,而现在高校的大部分学生做不到这一点。目前,多数高校的学生学习C语言程序设计这门课程的学习方法非常不到位,即在课堂上,学生仅仅翻开教材,盯着讲台听课;在上机课上,学生也只是按照课本照搬程序。除此之外,在课余时间,学生们不巩固复习教材,也不看程序,更不会自己编写代码。如此下去,他们的实践能力不仅不会提高,反而极大地降低了他们对C语言程序设计的学习兴趣。

4.实践未得到及时反馈。由于课时紧张,教师不能将学生上交的实践报告或上机操作的实验结果及时地反馈给学生本人,以致于学生不能在第一时间对自己的错误或疑惑有进一步的了解与解决,造成学生盲目地学习,甚至不学习。但等到课堂上,教师也不能占用大部分时间去点评学生的实践结果而耽误课程的进展。另外,新的知识点讲完就会有新的练习内容,如此积累,工作量繁杂,学生对之前编程的细节也会慢慢忘记,更重要的是程度较落后的学生会出现知识的缺陷,长此下去,学习困难的打击会使学生的学习兴趣急剧下降。

二、教学方法

要解决上述问题,我们就要紧紧抓住学生的实践锻炼,重视实践教学,明确实践教学方法,才能使我们的教学目标达到事半功倍的效果。

1.课时统一化,采用多种方式考察。既然由于课时原因,全理论授课与全上机操作导致学生的参与度不够,理论与实践脱节,我们可以统一课时,即我们的C语言程序设计课程全部在机房授课。如今,机房设施完备,软硬件已足够完善,我们可以选择在机房授课,利用机房的多媒体与黑板,讲解理论知识,遇到需要学生动手的地方,可以让学生及时地动手操作。教师完全不用担心在授课时,学生玩电脑游戏影响听课,我们可以远程控制桌面,实时控制学生的电脑,进行各种操作,提高学生的听课效率。同时,系统还可以自动统计出勤率,比点名更加快捷,具有实时的监督作用。另外,教师再也不用担心学生由于近视问题而看不清多媒体屏幕。其次,这种机房授课以多种方式对学生学习状况进行考察,例如提出问题法、纠错奖励法、学生演示法、小测试法……提出问题法是指教师提出一些重点或难点问题,由学生来回答;纠错奖励法指教师给出某个算法或程序让学生去发现其中的错误并纠正,最快找出的学生给予小小的奖励,如一张精美的书签、一句鼓励的话语等;学生演示法指的是找一名学生到教师端编写一个小程序或某个算法中的易错点,以此找出学生的通病,引起大家的注意;小测试法是在课堂最后十分钟左右给学生发放一份提前写好的试题,两到三题即可,可以按照计算机二级等级考试模式编写,学生提交,系统直接核对,省时省力。这样多种方式进行考察,真实地反映学生对该节课的掌握程度,也让教师真正了解学生的学习情况,以便进一步开展教学工作。

2.小组竞赛法,模拟各种编程竞赛。为了激发学生的学习兴趣,增强学生的动手实践能力,可以采用小组竞赛的方法来加强学生对C语言课程的学习。整个班级可以自由分组,两到三个人一组,教师布置相应的编程题目,要求学生在规定的时间内上交,由教师来评分,选出程序最清晰、代码更简练的一组。在学期中后期,学生拥有一定的基础和能力的情况下,可使其参与评选过程,通过评选人员相互交流讨论,在提高被评学生编程能力的同时使参评学生也有所提高,即所谓的“教学相长”。除了进行班级内小组竞赛,还可以进行班级之间、专业之间集体赛。依然是先在班级中进行初选,再经过层层选拔与淘汰,指出各方的优缺点,最终评出优秀、良好等。奖项不是重点,关键在于让学生都参与到实践活动中来。通过以上各种形式的竞赛,可以提升学生对C语言的学习兴趣和编程能力。

3.网络交流法,建立多种网络平台。伴随网络化时代的到来,教师可以通过多种网络平台与学生交流、互动,及时指出并解决问题。如教师可以给每个班建立一个QQ讨论组、微信群,如果学生在课下时间有难题或者对课堂上的知识点有疑问,可以在第一时间通过网络交流平台和教师取得联系,以此使得“教学课堂”在时间和地域上得到无限制的延续。另外,通过网络平台,教师还可以给每个年级建立公共邮箱、论坛,用来分配任务、布置作业、共享教学资源等。更重要的是,教师可以把一些实践或实验发到网上,对学生的作品进行网上点评,把优秀的程序分享给大家,同时指出学生的不足之处,到网上,学生自行查收,及时地给学生反馈。另外,这些平台还可以作为学生们的“讨论网”,大家自由交流各自的学习经验与学习心得,成为学生在线学习交流、在线测试的途径。通过各种网络平台,使教师与学生、学生与学生的交流不受时间的限制、地点的约束,由学生自主地选择学习,从而解决教学时间不充足的问题,消除教师与学生之间在时间和空间上的距离感,进一步方便学生及时解决疑惑,及时得到反馈,取得更有效的学习效果。

本文探索的一些方法和改革创新是优缺点共存的。研究发现,采用以上多种方法相结合,一环扣一环的教学组织与管理,能保证学生学到一定的知识。没有最棒的方法,只有最适合自己的方法,我们做的就是尽可能给予学生指导,建立良好的学习氛围。但是,如果学生对自己不负责任,学生之间存在相互包庇、帮忙完成实验上机报告等问题,将影响整个教学效果。所以,教师要特别关注这些学生,经常鼓励、辅导他们,督察学习情况,特殊情况特殊处理,引导和帮助他们找到自己的学习目标和学习方法。C语言程序设计成为越来越多高校学生选择的课程,也是全国计算机等级考试的选择之一。我们要紧跟时代的步伐,不断更新教学内容,分析和探讨C语言程序设计教学过程中存在的问题,进行教学方法的改革,适应时代需要,做好十足的准备去迎接未来的挑战。

参考文献:

[1]谭浩强.C语言程序设计(第四版)[M].北京:清华大学出版社,2010.

[2]薛小锋.《C语言程序设计》教学方法探析[J].福建电脑,2004,(01):87-88.

[3]余炳辉,孙娟.《C语言》课程教改浅论[J].科技资讯,2009,(27):222-223.

程序设计实践范文第8篇

关键字:Java教学改革;应用型人才;软件学院

Abstract: At present, many university software schools have“Java programming” course, but there are pay attention to theory, light practice problems. Based on in-depth analysis of the course at present on the basis of existing problems, and puts forward the corresponding solutions, and through a semester course reform experiment, proved that the proposed solution is feasible and effective.

Keyword:Java teaching, Application type talents, School of software

一、Java课程概述

《Java程序设计》课程是软件学院学生的核心专业课程,它的内容是介绍J2SE相关知识,包括Java语法基础、面向对象理论知识、基本类库、图形用户界面及事件处理机制、异常处理机制、多线程程序设计、数据库的连接访问、输入输出流和网络编程等。本课程学习的效果不仅关系到后续课程的学习和毕业设计的效果,而且直接关系到学生程序设计水平的提高和专业素质的培养。

二、问题分析及建议

以下结合本人多年的Java开发及教学经历,对一些存在的问题进行分析并提出相应的建议。

1.加强实践训练及实践管理

问题分析:Java语言是一门实践性很强的计算机语言,但目前成了单一为考试而设置的一门课程,其结果是有的学生连最基本的实践操作也不会做。有的实践教学学生只是将书上的程序输入电脑运行一下,并没有去思考为什么会是这样的结果。学生只是机械地完成了程序的运行,过后就忘了,没有达到练习的目的,更不能做到学以致用。

建议:在条件许可的情况下,教师上课均应采用多媒体教学。在讲授Java理论的同时,在课堂上给学生进行使用演示,这样不仅使学生对所学的理论知识有直观的认识,而且能提高学生的学习兴趣,引发其好奇心,促使课后实际动手练习。另外,教师在讲授该门课程时,除了教材上既有的实例外,还应多找一些典型的实例,在课堂上给学生讲解和演示,加深学生的理解。

2.选择合适的教材

问题分析:传统的教学方法都是注重教学的系统性和完整性.按照一般教科书的编排顺序组织教学,想把Java语言讲透,至少得100课时以上。这样的教材内容,必然有大量的语法结构生涩且难以理解,使学生望而生畏,学习效果较差。

建议:尽量选择有较多实际例子的教材,或者选择有配套实验手册的教材,方便学生实践练习。

3.注重双师型教师的培养

问题分析:在指导学生使用Java程序设计实践教学方面,由于目前双师型教师的匮乏,师资队伍存在着知识结构、能力结构不合理问题,难以完成应用型人才Java程序设计的实践教学要求。

建议:教师在上课之余,应该多学习Java领域的最新技术,并且利用假期时间多去企业参观,学习企业用的最多的开发技术,才能教出符合企业需求的信息技术专业人才。

三、课程改革及成效

在对Java程序设计课程目前存在的问题深入分析后,本人上学期对第2部分中提到的各个建议解决办法进行了试验,以下简单予以介绍:

(1)关于加强实践方面。在讲述理论的同时,教材90%的代码均在上课时现场输入、现场演示、现场评讲。另外,除了教材上的实例,还通过查阅搜寻一些典型的实例,在相应的章节进行演示。

(2)关于教材选择方面。经过仔细对比研究后,上学期选用了机械工业出版社的《Java语言程序设计教程》一书作为上课的教材。本书由叶乃文主编,于2010年第一次出版,所讲Java技术和业界最新技术基本同步,而且综合性实例较多,非常方便学生进行课后练习。

(3)关于双师型教师培养方面。2010年暑期,去北京中关村一些知名IT企业进行学习参观,历时20余天。通过学习参观,了解到目前企业最新的Java应用人才需求,也学到了不少企业的开发经验,返回学校后对学生进行了相应的指导,学生反响强烈。

上学期,经过以上3点措施的实施,Java程序设计课程的教学效果相比以前明显改善,学生们普遍反映良好。具体表现为:因为实践动手多了,学生对学习Java的兴趣提升,实践动手能力快速提升,上机作业质量明显提升,教学效果持续改善。

四、小结

针对应用型高等学校人才的特点,作者依据多年从事Java技术开发的实际工作经验与理论教学实践经验,分析了企业对Java技术人才的需求及现今Java程序设计课程体系中存在的问题,提出了一些建议解决办法,并进行了相应的课程改革实践。实践结果证明了提出的建议解决办法的可行性和有效性。

【参考文献】

[1]朱剑锋,王冬,熊志斌,尹成国.《项目教学法在Java程序设计课程教学中的应用》[J].琼洲学院学报.2011,(2):82-84.

[2]张建东.《Java程序设计教学探讨》[J].科技信息.2009,(24):700.

程序设计实践范文第9篇

关键词:计算思维;实践教学;面向对象程序设计;数据结构

中图分类号:G642.0 文献标志码:A?摇 文章编号:1674-9324(2013)39-0203-03

目前,计算思维已在教学当中逐步应用,但是,其本身还未成为独立的学科体系,教学中的应用只是少数专家学者进行小规模探索性的实验性教学,在培养过程中没有系统性的应用计算思维的系列方法[1]。本文对OOP课程中计算思维培养的实践教学进行了尝试。

一、计算思维

计算思维是当前国际计算机界广为关注的一个重要概念,也是当前计算机教育需要重点研究的课题。2006年3月,时任美国卡内基·梅隆大学(CMU)计算机科学系主任、现任美国基金会(MSP)计算机和信息科学与工程部(CISE)主任的周以真(Jeannette M.Wing)教授,在美国计算机权威刊物(Communications of the ACM)上,首次提出了计算思维(Computational Thinking)的概念:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。它包括了涵盖计算机科学之广度的一系列思维活动。”对于计算机科学的重要性,美国总统信息技术咨询委员会认为:虽然计算本身也是一门学科,但是其具有促进其他学科发展的作用,21世纪科学上最重要的、经济上最有前途的前沿研究都有可能通过先进的计算技术和计算科学而得到解决[3]。《中国至2050年信息科技发展路线图》报告指出:计算思维是克服狭义工具论的有效工具,是解决其他信息科技难题的基础[4]。

二、面向对象程序设计

面向对象编程技术从根本上改变了人们以往设计软件的思维方式,降低了软件开发的复杂度,能够开发出具有高可靠、可重用和易维护的软件,提高软件的开发效率,是现今软件开发的主流技术,对信息科学、软件工程、人工智能以及系统科学等学科产生了巨大而深远的影响[6]。

面向对象方法与人类习惯的思维方法一致。

面向对象的方法通过获取客户对系统的需求,建造需求模型;用基本的需求为指南来选择类和对象,定义类的结构;由客观实体的一般和特殊关系定义类的层次;而后建造对象关系模型,对象行为模型[7]。因此,面向对象软件设计通过抽象和分解来控制庞杂的任务或进行巨型复杂系统的设计,其分析过程是一个把问题阐释为如何求解它的思维方法。

三、计算思维培养与程序设计工程化训练

程序设计课程中,强调学生对语言规则的掌握和对基本编程能力的培养,而不重视工程化思想的潜移默化,容易造就个体化编程思想的孕育。按照软件工程理论,软件研发过程中存在的软件危机问题,一方面与软件本身的特点有关,另一方面是由于软件开发与维护过程中方法的不正确决定的。与软件开发和维护有关的许多错误认识和做法的形成,可以归结为在计算机系统的早期阶段软件开发的个体特点。错误的认识和做法主要表现为忽略或轻视软件分析、设计的重要性,对问题和目标没有正确认识的情况下,就匆忙进行代码实现,认为软件设计就是编写程序并设法使之运行。

程序设计课程涉及到了详细设计阶段、程序实现阶段的软件开发工作。详细设计阶段的根本目标是确定怎样具体地实现所要求的系统,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计阶段的任务不是具体的编写程序,而是要设计出程序的蓝图,以后程序员根据这个蓝图写出实际的程序代码。因此,详细设计的结果基本上决定了最终的程序代码的质量。考虑程序代码的质量时,必须注意程序的读者除了计算机还有维护程序的程序员。在软件的生命周期中,涉及测试方案、诊断程序错误、修改和改进程序等都必须首先读懂程序。实际上对长期使用的软件系统而言,人读程序的时间可能比写程序的时间要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,还看它是否容易阅读和理解。

因此,在语言训练的过程中,培养学生在掌握语言规则的基础上,先进行问题分析,算法设计,最后代码实现的程序设计过程,与培养学生的计算思维是一致的。

四、案例教学及题解多样性

程序设计在计算机学科知识体系中处于核心地位,对计算机专业的学生来说不仅是职业技能的培养,也体现着创造性思维的信息素质培养过程。程序设计也是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,对计算机专业人才素质的培养至关重要[8]。程序设计实验教学的教育价值在于突出计算思维,培养学生的创新意识、探索精神和问题求解能力。课程目标不仅仅是培养学生的操作技能,还要通过强调算法多样性来提高学生的计算思维能力[9]。教学过程中要使学生经历算法化过程并体验计算思维,它有利于培养学生的理性思维和形式逻辑能力。培养学生通过计算机编程,最终形成计算思维[10]。

下面列车车厢重排的实例,对面向对象方法来说,涉及到类的设置,类的继承,功能的扩展等重要知识。对于培养学生的计算思维有较好的作用。一方面可以对栈数据结构算法的特点加深理解,对其的应用有较深了解,另一方面,在解决问题的过程中,引导学生形成解决问题的思路,鼓励不同的解决方案,用一定的形式将形成的思路描述下来,最后完成程序的设计。数据结构的基本算法与程序设计课程相结合,在教学内容上相融合,加强了课程之间的联系,将孤立的知识点联系起来。

一列货运列车共有n节车厢,每节车厢将停放在不同的车站。假设n个车站的编号分别为1~n,货运列车按照第n站至第一站的次序经过这些车站。车厢的编号与它们的目的地相同。为了便于从列车上卸掉相应的车厢,必须重新排列车厢,使得个车厢从前至后按照编号1~n的次序排列,当所有的车厢都按照这种次序排列时,在每个车站只需卸掉最后一节车厢即可[11]。将在一个转轨站里完成车厢的重排工作,假设在转轨站中有一个入轨、一个出轨和k个缓冲轨道(位于入轨和出轨之间),如图1所示。

任务分析:在重排的过程中,车头只能将车厢在入轨、转轨、出轨三者之间移动,车头不能跳跃到车厢之间,车厢的进出操作符合后进先出的特点。因此,可以该重排可以利用栈数据结构。一般,栈的基本算法包括进栈、出栈、取栈顶元素值、栈判空、栈判满和栈的初始化操作。进行车厢重排,需要在栈中遍历,查找指定编号车厢的位置。因此,可以进行公有派生,在派生类中增加遍历和查找操作。

方案一:在待排车厢中查找最小编号车厢,依次排入出轨栈。

A?摇在缓冲轨A和入轨栈查找最小编号车厢,如果所有车厢遍历完成,转F;

B?摇如果最小编号在缓冲轨A,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到入轨栈;

C?摇将缓冲轨A尾车厢(编号较小)通过转轨栈进入出轨栈,转A;

D?摇如果最小编号在入轨栈,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到缓冲轨A;

E?摇将入轨栈尾车厢(编号较小)通过转轨栈进入出轨栈,转A

F?摇重排完成。

方案二:同时在待排车厢中查找最小和最大编号车厢,小编号车厢依次排入出轨栈,大编号车厢排入缓冲轨B,待排车辆处理完成后,将出轨车辆和缓冲轨B中的车辆链接,即可完成重排。

A?摇在缓冲轨A和入轨栈查找最小、最大编号车厢,如果所有车厢遍历完成,转F;

B?摇如果最小编号在缓冲轨A,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到入轨栈;如果最大编号在缓冲轨A,则将最大编号车厢至最尾的车厢依次通过转轨栈,进入到入轨栈;

C?摇将缓冲轨A尾车厢(编号较小)通过转轨栈进入出轨栈;最大编号车厢通过转轨栈进入缓冲轨B,转A;

D?摇如果最小编号在入轨栈,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到缓冲轨A;如果最大编号在入轨栈,则将最大编号车厢至最尾的车厢依次通过转轨栈,进入到缓冲轨A;

E?摇将入轨栈尾车厢(编号较小)通过转轨栈进入出轨栈;最大编号车厢通过转轨栈进入缓冲轨B,转A;

F?摇将缓冲轨B中车厢顺序链接到出轨栈,重排完成。

方案一和方案二的区别,在于是否查找最小编号车辆的同时查找最大编号车辆。方案二提高了重排的效率。

由于数据结构具有抽象性和灵活性等特点,这给教学和学习带来一定的困难。从算法的一题多解入手,对培养学生学习兴趣和提高其程序设计及编程实践能力起到了极大的促进作用[12]。

五、结束语

程序设计课程在计算机相关专业的作用不仅是掌握一门计算机语言,更重要的是通过这样一个平台,理解计算机一些重要的理论和方法,并将这些方法用于实践,解决实际问题。在程序设计课程中,有意识地将课程之间的内容融合,开展案例教学,将软件工程的软件开发过程和方法贯穿于课堂和实践教学活动中,不仅有利于培养学生的职业能力,也有利于对学生计算思维的培养。

参考文献:

[1]牟琴,谭良.计算思维的研究及其进展[J].计算机科学,2011,(3):10-15,50.

[2]Wing J putational Thinking[J].Communication of the ACM,2006,49(3):33-35.

[3]President’s Information Technology Advisory Committee. Computational Science:Ensuring America’s Competitiveness[EB/OL].http://www.nitrd.gov/pitac/reports/20050609_computational/computational.pdf,June 2005.

[4]中国科学院信息领域战略研究组.中国至2050年信息科技发展路线图[M].北京:科学出版社,2009.

[5]陈国良,董荣胜.计算机思维与大学计算机基础教育[C].第一届“技术思维与大学计算机课程教学改革研讨会”,西安交通大学教师教学发展中心,高等教育出版社,2012.07:21-26.

[6]张海藩.软件工程导论(第5版)[M].北京:清华大学出版社,2008.2.

[7]钱乐秋,赵文耘,牛军钰.软件工程[M].北京:清华大学出版社,2007.3.

[8]耿国华.程序设计能力培养模式的探索与实践[J].中国大学教学,2009,(3):30-32.

[9]陈杰华,戴丽娟.以培养计算思维为核心的程序设计实验教学[J].实验技术与管理,2011,(1):125-127.

[10]陈杰华.程序设计课程中强化计算思维训练的实践探索[J].计算机教育,2009,(2):84-85.

[11]曹衍龙,林瑞仲,徐慧.C语言实例解析精粹(第二版)[M].北京:人民邮电出版社,2007.8.

[12]吴绍兵.计算思维和程序设计能力的培养[J].计算机教育,2011,(16):11-14,25.

基金项目:本文受北京市属市管高等学校人才强教计划(PHR201007132)和北京服装学院教育教学改革项目资助

程序设计实践范文第10篇

关键词:计算思维;程序设计;语言;计算;新生

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)49-0276-03

一、《程序设计》课程简介

《程序设计》是高等学校理工科专业普遍开设的系列必修课程。这门课主要讲授用高级语言如C/C++及Java等开发计算机程序的基本知识,培养学生用计算机分析并解决问题的能力,使学生掌握软件设计的基本方法,为后续课程奠定基础。

国内高校普遍将《程序设计》课程按照语言的不同分为多个系列:C语言、C++语言及Java语言等。不同学校及专业根据各自的培养方案为学生开设其中几种,至少有一种语言(一般是C语言)为必修,开设于大一及大二学年,理论课与实验课共60~100课时,持续1~2个学期。各高校也普遍为计算机相关专业高年级学生开设其他流行编程语言如Visual Basic以及更专业化编程语言如Matlab、SQL及HTML等等。这些语言的基本语法与C语言相似甚至是高度相似,程序设计思想相通,因而其教学也高度依赖于低年级程序设计课程的教学效果。

二、面向新生的《程序设计》课程

对计算机及软件等专业的学生而言,《程序设计》是一门专业基础课,这门课程一般开设于本科一年级,因而授课对象主要是本科新生。一方面,大多数计算机相关课程如《数据结构》、《操作系统》及《数据库》等都需要编程语言的基础知识,学生在这门课收获的学习成果对高层次的学习乃至工作都具有非常重要的意义;另一方面,编程语言课程的教学能够直接训练学生的计算思维[1],计算思维的形成和培养,是目前高等院校计算机教学,甚至包括非计算机专业的计算机基础教学所追求的一个重要目标。在学生刚刚升入本科阶段,而几乎不曾开始学习专业课,专业思维模式尚未形成之前,就逐渐培养其计算思维,又显然是这项任务的重中之重。

高中信息技术课程一般包括Visual Basic等编程语言的知识,但长期以来,受高考指挥棒的影响,全国各省市的小学、初中与高中教育普遍对计算机(信息技术)课程的重视程度不够。在程序设计不作为会考要求内容的省份,一些学校甚至没有开设编程语言课程,或者要不做任何要求,导致在高中阶段,教师与学生的教学兴趣度极低。一个最直接的后果是,即使是计算机相关专业的学生,刚进入大学时,也普遍对程序设计这类课程既陌生又恐惧。

由于这类课程本身的深度与难度,本科新生,特别是在高中阶段没有学过程序设计,甚至几乎不曾接触过计算机的新生,往往承受较大的学习压力,如果不能很好地掌握程序设计的思维与方法,学生很容易丧失学习计算机相关课程的兴趣与信心,从而影响整个大学阶段的专业学习,因而承担大一新生程序设计课程的教师也同样承受较大的教学压力。如前所述,这个问题产生的直接原因固然是高中信息科学知识储备的不足,但根本原因还是学生在从多年来已经习惯的数理化式的定义与公式学习模式转变为以计算机学科为代表的设计与实验的学习模式时产生了障碍,或者说学生没有能够形成学习计算科学应具有的思维模式。因而解决这个问题的关键即是,要通过程序设计课程的教学使学生形成并逐渐强化计算思维。

三、计算思维的内涵及重要性

按照卡内基・梅隆大学Jeannette M. Wing教授提出的广义概念[1],计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。而具体到程序设计这门课,计算思维可以理解为编写高级语言程序的方式解决问题的思维活动。由此可以看出,程序设计课程是培养学生的计算思维最重要的方式之一,而培养学生的计算思维也是程序设计课程最重要的目的之一。

计算思维这一重要概念被提出后,引起高等教育界的广泛注意。关于如何在程序设计课中培养本科生的计算思维能力这一问题也成为高校计算机教学中普遍关注的问题。文献[2-4]讨论了如何通过计算机基础教学培养计算思维,文献[5-7]讨论了通过程序设计课程培养计算思维,文献[8]讨论了如何通过程序设计培养学生的多种思维能力,文献[9;10]提出以计算思维为导向开展程序设计教学,文献[11-13]提出了基于计算思维的程序设计教学改革方式,文献[14;15]讨论了通过程序设计课程培养计算思维的具体实践方式,文献[16]探讨了如何以计算思维为训练目标设计程序设计案例,文献[17]讨论了如何通过非计算机专业的程序设计课程培养计算思维。但围绕如何针对新生开展高效程序设计课程教学[18],以及如何培养新生的计算思维这些方面的研究却还很少。

计算思维,顾名思义,即“一切皆为计算的思维”,可以把它理解为一种将复杂的实际问题都转换为可以用计算机解决的思维模式,而计算机解决任何问题的本质,显然都是通过各种计算来完成的。掌握用计算机解决问题的方法,是当今社会中最重要也是最基本的技能之一。要实现这一目标,就要靠计算思维的长期渐进式培养与发展,这主要涉及两个方面的任务:(1)需要了解计算机求解问题所使用的计算方式。只有了解计算机计算的方式,才能判断一个问题是否可以直接被计算机求解,也才能将待求解的问题转换为计算机可以求解的形式;(2)需要掌握用计算机求解问题的设计方法。只有能够设计出让计算机求解问题的计算方法,即算法,才算真正掌握了计算机科学。在众多计算机相关课程中,程序设计是能够实现以上两个任务的重要载体课程,而计算,作为计算机解决问题的终极形式,又显然应该是实现培养计算思维这一目标的核心训练手段。

四、以《程序设计》培养计算思维的实践策略

本人所在基础教学部承担上海电机学院全校非计算机专业及计算机专业本科一年级学生的程序设计课程教学任务,包括C/C++语言及Java语言,分两个学期授课,理论课共64学时,实验课共32学时。从字面意义就不难看出,“计算思维”的核心思想是计算的能力和技巧。在教学中,我们以计算作为最重要的训练方式,贯穿于整个教学环境中,尝试以计算促进计算思维的形成。具体地,我们主要采取以下方法:

1.用计算问题让学生快速开始程序设计。学生都经过从小学到高中的数学训练,普遍对各种基本数学问题非常熟悉。用一些最简单的计算问题例如“从键盘输入数值,计算其和差积商”可以使学生迅速上手,开始学习编写程序。一方面,这样可以避免在学习初就因受困于复杂的问题本身而影响编程语言语法规则的学习;另外一方面,也使学生通过解决简单的计算问题获得学习新课的成功感和自信心,提高对后续课程学习的兴趣。

2.用计算问题使学生了解程序设计实现计算的规则。在讲授选择结构程序设计时,我们使用了“数学年份,输出各月天数”的例子。一年中的各个月份天数不同,仅需分为三种情况;二月份的天数需要根据该年是否是闰年来判断,而闰年的判断是小学生都非常熟悉的:即年份能被400整除;或能被4整除但不能被100整除。为了用编程语言描述这种判定规则,就需要引入逻辑运算符表示“与”和“或”的关系并且要准确理解运算符的优先级。这样就可以通过一个例子充分了解分支结构程序的设计规则和逻辑计算的规则。

3.用计算问题使学生了解用计算机解决问题所需要考虑的额外因素。在进行一般的数学计算时,除了有些情况要求数值只能是整数,我们一般不必考虑一个数是整数还是小数。但是用高级语言处理数据,除了比较特殊的Python等语言不区分数据类型,一般的高级语言如C和Java都是严格区分数据类型的。在数学上,我们可以很自然地书写x=1,y=0.5,但是在编程语言中,如果x被定义为浮点型,那么整数转换为浮点数,涉及表示方式的转换,可能会丢失精度;如果y是整数,将浮点数转换为整数会丢失小数部分。而后者,在类型严格的语言如Java语言中甚至是不允许的。虽然单纯的数学计算几乎不涉及整数和浮点数类型转换的问题,但数据的类型转换却是程序设计中最容易出错的。通过编写测试性程序验证0.1+0.2不等于0.3,学生的印象会非常深刻,并且能够更直观地了解在用计算机计算时,数据类型精度是一个必须要考虑的因素,从而形成一种思维模式,在设计计算方法时能够处处考虑类型与精度的相关问题。

4.通过计算加深对计算殊规则的理解,强化计算思维。在教学中,我们会让学生编程练习求“3斤2元的蔬菜,6斤多少钱”这样看似极其容易的问题。大多数学生会因为按照数学的习惯书写2/3*6这样的表达式而得到看似荒谬的答案0,这样的错误在程序设计中非常普遍地存在,并且在调试代码时这类错误隐蔽性极大,不容易被发现。只有通过大量这类的计算练习,才能让学生充分理解程高级语言(C/C++/Java等)中/的特殊运算规则,即整数除法的结果还是整数,如果要得到比较准确的结果,至少要把被除数和除数中的一个转换为浮点数,对于变量需要使用强制类型转换,对于常量,除了强制类型转换,还可以在后边添加.0,及2和2.0在计算中是截然不同的两个数,产生的计算结果也是全然不同的。由此可以进一步强化对数据类型转换的理解。

5.用计算问题使学生了解纯粹的数学思维和计算思维的差别。在讲解循环结构时,我们让学生编程计算两个数的最大公约数和最小公倍数。大多数学生会受困于小学数学中学过的短除法方法:用一个一个公因子依次去除两个数,直到商是互质的。对于手工计算,这种方法当两个数都不太大,公因子比较容易找且不都太大的情况是非常容易且直观的。但是用计算机套用这种思路编程时就会遇到麻烦:手工计算式公因子是直观“看”出来的,而计算机是没有办法一下子猜到一个公因子的。但是利用循环,这个问题就迎刃而解。按照定义,最大公约数,就是最大的可以整除两个数的数,最大不会超过两个数中较小的一个,只要用循环,从两个数的最小值开始,一个一个尝试,每次减1,找到一个能够同时整除两个数的数,就是答案而不必继续找,而各种高级语言普遍都提供了求余的运算符。当两个数变得很大时,这种方法的效率很低,于是可以利用循环实现更快寻找最大公约数的辗转相除法;对最小公倍数的练习,也同样可以强化循环的学习效果。通过这些例子可以使学生清楚地意识到,数学中的计算方式转换为计算机的求解过程需要一定的转换,而这种转换正是计算思维的关键所在。

对以上几种计算训练模式,一个重要的环节是让学生在实验时犯错误,通过在计算中发生看似怪异的错误,而运算过程在数学上看来又无懈可击,才能通过仔细的错误分析与代码调试,发现按照一般思维无法发现的,由于计算机编程语言处理问题的特殊性而导致的错误,这样才能使学生对这类错误的印象更深刻,从而尽可能减少今后出现同类错误的可能。

五、结语

在程序设计的教学中,我们利用学生普遍具有长期打下的良好的数学基础这一特点,通过采取以上几种方法,让学生在解决计算问题时学会设计计算方法,逐步形成计算思维模式、加强计算思维方法,最终培养其计算思维能力。目前,课程教学改革正在持续进行阶段,已初步取得一定成果,但还缺乏更久更大范围的理论研究和实践论证。我们希望能够以这些改革措施改进理工科《程序设计》课程的教学效果,为大一学生学习后续课程打下良好的基础,使他们受到全面的计算思维训练,具有良好的信息素养,最终提升他们在走出校园进入当今信息社会时的核心竞争力。

参考文献:

[1]Wing J M. Computational thinking[J].Commun. ACM,2006,49(3):33-35.

[2]朱鸣华,赵铭伟,赵晶,et al.计算机基础教学中计算思维能力培养的探讨[J].中国大学教学,2012,(03):33-35.

[3]陆汉权,何钦铭,徐镜春.基于计算思维的“大学计算机基础”课程教学内容设计[J].中国大学教学,2012,(09):55-58.

[4]李波.计算思维与大学计算机基础[J].中国大学教学,2012,(07):43-45.

[5]冯惠妍,陈争光,邰建华,et al.程序设计中“计算思维”的教学研究[J].农业网络信息,2013,(04):120-122.

[6]王卫华.在程序设计类课程中培养学生计算思维能力的思考[J].武警学院学报,2013,(07):51-53.

[7]王先超,王春生,胡业刚,et al.以培养计算思维为核心的C程序设计探讨[J].计算机教育,2013,(13):44-47.

[8]卜晨月.程序设计与学生思维能力培养的探讨[J].林区教学,2013,(03):72-73.

[9]董卫军,邢为民,索琦.以计算思维为导向的程序设计课程改革与实践[J].工业和信息化教育,2013,(06):60-64.

[10]刘光蓉.以计算思维能力培养为导向的C程序设计实验教学[J].实验技术与管理,2013,(01):154-156+191.

[11]刘晓璐.基于计算思维的Java程序设计教学改革[J].广东技术师范学院学报,2013,(05):108-110.

[12]孙丽君,杨志强,高枚.围绕计算思维培养的程序设计课程改革[J].计算机教育,2013,(05):29-31+38.

[13]徐燕,潘亚平.计算思维与计算思维能力培养――谈大学计算机基础教学改革[J].江苏技术师范学院学报,2013,(02):92-95.

[14]商书元.计算思维培养在程序设计课程中的实践[J].教育教学论坛,2013,(39):203-205.

[15]张雪伍,常晋义.计算思维在C++程序设计教学中的应用[J].计算机教育,2013,(13):52-56.

[16]杨俊生,张润.基于计算思维的“C程序设计”案例设计初探[J].工业和信息化教育,2013,(06):65-69+64.

[17]商艳丽,许美玲.基于计算思维的非计算机专业VB程序设计课程教学研究[J].河南科技,2013,(16):262.

上一篇:广告设计专业范文 下一篇:电路设计范文