HI,欢迎来到学术之家,期刊咨询:400-888-7501  订阅咨询:400-888-7502  股权代码  102064
0
首页 精品范文 程序设计报告

程序设计报告

时间:2023-06-01 08:52:47

开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇程序设计报告,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。

程序设计报告

第1篇

Abstract: Matrix is an important mathematical method of diagonalization, but because of its computational complexity, it has caused great difficulties on the application, The mathematical software has the function of processing of diagonalization, but for rational matrix diagonalization problem in the field of rational number the result is not satisfactory. So the study of rational matrix over the rational number field similarity diagonalization diagonalization, contract and orthogonal diagonalization algorithm and program project, design to realize rational matrices over the field of rational numbers on the diagonalization of utility software, solves the rational matrices over the field of rational numbers on the diagonalization of the accurate determination and computation problem.

关键词: 有理矩阵;有理对角化;算法;程序

Key words: rational matrix;rational diagonalization;algorithm;program

中图分类号:TP311.1 文献标识码:A 文章编号:1006-4311(2013)22-0237-04

0 引言

经过一年多的潜心研究,我们有理矩阵有理对角化软件创作小组完成了《有理矩阵有理对角化问题的算法及程序设计》的课题研究与软件开发任务,现将研究情况总结报告如下。

1 研究意义

矩阵是重要的数学工具,在各个领域中都有广泛的应用,如电路学、力学、量子物理乃至三维动画的制作都用到矩阵理论。矩阵对角化是矩阵理论中重要的变换方法,利用矩阵相似对角化可以快速地计算出矩阵所对应的行列式的值或矩阵的高次幂;利用矩阵合同对角化可以化简二次型,为二次曲面的研究提供了极大的方便;利用矩阵正交对角化化简的二次型几何意义是保形变换,更有实在价值,等等,可见矩阵对角化应用广泛。从理论上说矩阵对角化方法已经完善,但是人工实现却非常困难,甚至力不能及,所以研究用计算机实现之就非常重要。

值得注意的是,在实际应用及计算中所面对的数都是有理数,因此所直接打交道的也都是有理矩阵(即有理数域上的矩阵),因此考虑有理矩阵在有理数域上的对角化问题即有重要意义,尽管说已有的数学软件(如,Mathematica、Matlab、Maple等)能够解决矩阵对角化问题,但因为这些软件均是基于实数进行运算,所以对有理数而言势必存在误差(如对于循环小数),因此用之处理有理矩阵在有理数域上的对角化问题所得结果并不精确,有的误差还很大,例如关于相似对角化问题,对于矩阵A=■

人工与我们设计的软件都可求得:

可逆矩阵T=■与对角阵D=■

使得T-1AT=D。但Mathematica求出的可逆矩阵是:

T1=■

而Maple求出的可逆矩阵是:

T2=■

比较可见,Mathematica和Maple的计算结果存在着误差。

又如对于矩阵

A=■

人工与我们设计的软件都可求得正交矩阵

U=■与对角阵D=■

使得UTAU=D.但是在“矩阵工作室”——Matlab中所求的结果却是:

正交矩阵T=■

与对角阵D=■

可见此结果存在较大的误差。再如对于矩阵:

A=■

人工与我们设计的软件都可求得可逆矩阵

p=■,使得

P′AP=■

但是Matlab中所求得的可逆矩阵却为

T=■,比较可见Matlab的结果存在误差。

因此研究和设计有理矩阵有理对角化软件具有重要意义,为有关矩阵对角化问题的学习、教学及研究提供辅助工具。

2 研究现状

本课题的研究主要是处理有理矩阵的有理对角化问题,从国外来看,相关的研究是已有的大型数学软件(如Matlab、Mathematica、Maple等),不过从对角化来说,这些软件均是在实数域、复数域上计算矩阵的对角化问题,而不具有精确处理有理矩阵在有理数域上对角化问题的功能,并且这些软件系统庞大、使用不便、输出的结果也不直观。从国内来看,在知网与维普资讯上搜索,只见到计文军等人《基于MATLAB的实对称矩阵对角化》的论文(该文系内江师范学院大学生科研项目论文),未见其它相关的研究。总之关于有理矩阵有理对角化的的算法与程序设计研究非常少见。

3 相关概念界定

有理矩阵:有理数域上的矩阵称为有理矩阵。

伪正交矩阵:如果n阶实矩阵T满足TT′=T′T=D(D是对角形矩阵),则称T是伪正交矩阵。特别地,当D是单位矩阵时T即是正交矩阵。当T、D都是有理矩阵时称T为伪有理正交矩阵。当T、D都是有理矩阵且D是单位矩阵时称T为有理正交矩阵。如果T的列单位化后仍是有理矩阵,那么T是有理正交矩阵,此时称T是可有理正交化的。

有理相似对角化:对于有理矩阵A,如果存在可逆的有理矩阵T,使得T-1AT为对角形,则称A能有理相似对角化。

有理合同对角化:对于有理对称矩阵A,如果存在可逆的有理矩阵T,使得T′AT为对角形,则称A能有理合同对角化。

伪有理正交对角化:对于有理对称矩阵A,如果存在伪有理正交矩阵T,使得T-1AT为对角形,则称A能伪有理正交对角化。

有理正交对角化:对于有理对称矩阵A,如果存在有理正交矩阵T,使得T-1AT为对角形,则称A能有理正交对角化。

4 研究方法

本项目的基本研究方法可简示为:

理论研究■算法设计■程序设计

这是一个周而复始的过程,为此制定了以下的研究方案:

5 研究过程

根据上述的研究方案,我们展开了具体的研究工作,下面介绍其中的部分工作:

①最困难的一步是有理矩阵特征多项式的算法设计。因为[xI-A]是含有未知数x的行列式,如果按照行列式的计算方法直接计算,算法即将非常复杂,程序设计也将非常困难,因此我们努力争取在不展开行列式的前提下而求得矩阵有理特征根。起初的思维是,因为整系数多项式有理根的求法只与最高项系数和常数项有关,而根据根与系数的关系以及矩阵的迹与根的关系,求特征多项式的最高项系数与常数项是容易的,所以就企图在只求出特征多项式的最高项系数与常数项的状态下解决问题。然而事与愿违,因为接下来需要判定是否所有特征根都是有理数,而完成这一工作的唯一途径是判断所有互不相同的特征根的重数和是否等于n,而确定重数又只能依靠综合除法,但使用综合除法就必须知道特征多项式的所有系数,因此即陷入了困境!为了在山穷水尽之际觅得柳暗花明,我们曾构想过许多方法,又查找了很多资料,终于找到了参考文献[2],其中给出了以矩阵A的幂及其幂的迹表示特征多项式fA(x)系数的方法,由此解决了确定特征多项式系数的算法。

②众所周知,高于四次方程的根是很难求得,这也就使一般的求多项式的根的算法依赖于近似计算方法。但因为整系数多项式的有理根容易求得,而有理矩阵的特征多项式必然是有理系数多项式,又根据有理系数多项式可约性理论,有理系数多项式完全可以转换为与其同解的本原多项式来求根,这就使我们形成了求所有特征根的算法思想:先将有理矩阵的特征多项式转化为与其同解的本原多项式,然后再用整系数多项式有理根的求法来求其特征根,并用综合除法来确定其重数.然而经过多次运算检验后,发现当特征根为0时,综合除法失效,于是只能先将0作特别处理,然后再用综合除法判定余下的部分。对此,经过讨论研究后,拟定了以特征多项式的最低次项系数来判定0是否为特征根,若是,则再由最低次项系数来确定其重数。

③在正交对角化中,当使用施密特方法对所求的变换矩阵正交化后(为了方便我们称正交化后的变换矩阵为“伪有理正交矩阵”),需要对伪有理正交矩阵的列单位化。然而并非每一个伪有理正交矩阵都能单位化,所以对于伪有理正交矩阵的每一列,在单位化之前需要判定其能否单位化,经研究,我们采用了“当其模均为有理数时,才可单位化”的判定方法。

④为实现有理数域上的精确计算,我们设计了分数加法、分数乘法子函数来实现有理数的四则运算,算法上说并不复杂,但麻烦的是程序设计中如何存储分数以及实现算法,在这里我们采用了用两个矩阵对应地存储一个有理矩阵的办法。

⑤由于有限小数及无限循环小数均为有理数,因此程序运行时除了以分数形式输入数据外,还允许输入小数,输入后程序将自动将所输入的小数转化为分数来计算,以确保运算精确性。

⑥程序设计中,由于矩阵对角化运算中,会临时出现不同维数的数组,这样动态数组就成了算法实现的关键之一,这需要反复调试、认真的处理,比如数组是定义在调用函数中,还是定义在被调用函数中,是需要具体处理的,否则会无故地损失内存,我们的经验是,对于循环调用的情况,数组最好定义在调用函数中。

6 研究结果

经过一年多的研究,我们完成了有理矩阵有理相似对角化、有理合同对角化、有理正交对角化的算法设计,三篇:①有理矩阵有理相似对角化的计算机实现;②有理矩阵有理合同对角化的计算机实现;③有理矩阵有理正交对角化的计算机实现。

并使用通用的、移植性好的C语言设计出程序,形成了一个方便、实用的有理矩阵对角化软件。由于该软件是在分数运算的基础上设计的,所以使用该软件能够精确地解决有理矩阵在有理数域上的对角化问题。具体说软件有以下三种功能:①有理矩阵有理相似对角化:对于有理矩阵A,判别有理矩阵A在有理数域上能否相似对角化,若能有理相似对角化,则输出其对角矩阵及相应的变换矩阵P;若不能有理相似对角化,则输出不能有理相似对角化的原因;②有理矩阵有理合同对角化:对于有理对称矩阵A,求出其标准形及相应的变换矩阵P;③有理矩阵有理正交对角化:对于有理对称矩阵A,首先判别有理矩阵A在有理数域上能否伪正交对角化,若能,则求出相应的伪有理正交矩阵T及对角矩阵,然后再判别T能否在有理数域上单位化,若能,则将T单位化后得到正交矩阵U,同时输出U与相应的对角阵;若T不能单位化,则输出不能有理正交对角化的原因。

下面给出三个计算例子:

例1 有理相似对角化计算例子,对于矩阵

A=■

存在可逆矩阵P=■

使得P^(-1)AP=■

程序运行时间:0.375000秒。

例2 有理合同对角化例子,对于矩阵

A=■

存在可逆矩阵P=■

使得P’AP=■

程序运行时间:0.312000 秒。

例3 有理正交对角化对于矩阵A=■

存在伪有理正交矩阵T=■

使得T^(-1)AT=■

进而,又存在有理正交矩阵U=■

使得U’AU=■

即A可以有理正交对角化。

程序运行时间:0.407000秒。

7 结论

本课题通过设计有理矩阵在有理数域上的相似对角化、合同对角化和正交相似对角化的算法,应用C语言编写相应的程序,设计出一个具有有理矩阵有理对角化功能的软件,为有关领域的学习、教学提供辅助工具。

但该软件仍存在着些许不足,如大规模矩阵问题、大整数运算问题、控制数据运算结果溢出问题都需要继续优化,进一步提高软件运算速度。

致谢:

感谢韩山师范学院王积社副教授的悉心指导!

参考文献:

[1]计文军,杨海彬,王艳华.基于MATLAB的实对称矩阵对角化[J].内江科技,2007(4).

第2篇

【关键字】程序设计 实验教学 ACM

一、引言

近来年,随着信息技术在社会各个应用领域的渗透和普及,程序设计类课程已经发展为高校计算机教育的重点课程。理论教学与实验教学是程序设计类课程的重要组成部分,其中,实验教学是完整教学过程中的不可或缺的实践性教学环节。实验的目的不仅仅是为了验证所编程序的正确与否,也是为了加深对程序设计语言知识的充分理解,更重要的是培养学生的实际操作能力和积累丰富的编程经验,从而引导他们利用程序设计语言编程来解决实际问题。基于此,本文对如何更好的进行程序设计类课程的实验教学作一些探讨。

二、现状分析

目前,我校计算机学院开设了高级语言如C、C++等多门程序设计类课程,这些课程的共同目标就是让学生通过上机实验和课程设计来巩固课堂上讲解的语法规则和算法技巧,锻炼编程能力。但是现有的程序设计类课程实验教学存在着很多问题,导致整个教学效果得不到提高,与教学目标的要求不相符。本节将主要从三个方面对其存在的问题进行总结:

2.1 实验教学安排

我院程序设计类课程的上机实验课时是有限的,一般都是每周安排两个课时,或者最多四个课时,通常会在连续的几周内结束。由于一般程序的编写和调试比较费时间,要是学生不事先做好充分的准备,仅仅靠在两个课时内去完成一个完整的程序编写是不太可能的,对所学内容也没能充分理解,很难在课堂上培养学生的实际编程能力。

2.2 实验教学内容

我院专业实验中心的机房环境是一个内部的局域网,不能连接到互联网,教师都是通过课件投影或屏幕广播教学软件来完成主要的实验教学过程。实验内容基本卜^都是对课堂理论教学内容进行验证和实现,学生按照教材或课件来完成实验。整个的实验教学环节中,教师根据实际的情况来选择是否进行案例教学,而当前多数实验教学过程中的案例所覆盖的知识点范围不够理想,不能将新旧知识点都包含进来。案例陈旧,缺少更新,实用性和趣味性也不强,因此不能很好的激发学生的学习热情,不利于培养学生的独立思考和动手操作能力,未能达到教学目标的要求。

2.3 实验教学考核

实验课程主要是通过实验报告中的程序编写情况来考核的。由于时间有限,实验报告的批改都是教师在课后另找时间检查,教师往往只能通过纸质的实验报告来分析学生的程序,要求程序能正常通过,看到运行结果就可以了,而忽略了程序中的调试环节,而这些环节中通常都是学生未掌握的知识点。这种考核方式不利于教师对学生学习情况的掌握,也不利于培养学生的创新能力。

三、ACM学习模式的特点

现在,随着ACM国际大学生程序设计竞赛(简称ACM)在高校中的推广,越来越多的学生参与进来了。在迎接ACM竞赛的学习过程中,形成了一种具有ACM竞赛特点的学习模式,这种学习模式的特点如下:

l、ACM竞赛所涉及的知识面十分广泛,算法电极具复杂性。通常在平时的训练过程中为了能深刻而透彻的理解各个知识点,教师会引入大量的案例教学。运用典型案例可以将学生带人特定的问题进行案例分析,通过学生的独立思考或团队合作,进一步提高其解决具体问题的能力。

2、ACM竞赛是通过在线测评系统上实时提交程序代码,给出评判结果的竞赛形式。ACM测评系统能够实时的给出参赛队的排名情况和每道题的通过率以及通过人数,教师可根据题目的通过率来掌握学生对知识点的学习情况,也可以反思其教学方法和教学内容中存在的问题。

四、基于ACM模式的程序设计类课程实验教学的做法

将ACM学习模式应用到我院现有的程序设计类课程实验教学过程中,具体措施运用如下:

4.1 实验课程的开设

我院高级语言(C、C++)程序设计实验课程都是在大一这一学年开设的,大一第一学期是面向过程的C语言编程学习,大一第二学期是面向对象的C++语言编程学习。这样开课的结果就使得大多数学生连面向过程的编程都还没有完全搞清楚,就直接跳到了面向对象的编程,可以说整个大一学期都是处于混沌的编程状态。因为对程序设计语言的思想和语法还没完全掌握,所以很多学生不具备基本的编程能力,甚至对编程有恐惧感。为了解决这些问题,我们结合ACM的竞赛模式来调整开课计划,把原计划2个学期的高级语言程序设计实验课程的教学时间调整为5个学期,这样可以贯穿整个计算机专业课的学习过程,从而将程序设计语言和其他计算机专业课的学习更好的结合起来,让学生有时间去深刻地理解程序设计语言的思想和方法,不断地锻炼实践操作能力和积累编程经验。

4.2 实验内容的选取和实验课程的考核

对实验环境来说,要求将我院专业实验中心机房连接到我校的源程序在线测评(Onlinejudge,简称OJ)平台上。根据程序设计类课程的实验内容和具体要求,每次实验前,教师可以从我校或者其他高校的OJ平台上的ACM竞赛题库中挑选或改造2-3个相关题目作为实验内容挂到我校的OJ上。在实验课阶段,由学生独立完成或者自由组队来编写程序,调试程序,解决问题,编写好的程序提交给OJ来判断正确与否。通过每次实验在OJ上完成的做题数量,教师可以由此掌握到学生对知识点的学习情况,对欠缺的知识点再给与重点讲解。同时教师可以根据OJ上的排名很轻松的完成实验课程的考核。学生也可以通过每次实验的做题和排名情况,来检查自己的学习方法和学习内容,从而达到熟练掌握所学内容的实验教学目的。

第3篇

关键词: C语言; 程序设计; 职业技能; 课程改革

中图分类号:G424 文献标志码:A 文章编号:1006-8228(2015)05-54-02

Abstract: The traditional software development course, focus on programming skills and logical thinking ability, can not meet the needs from the human resource market. Based on the analysis of the existing problems of current software development course, combining with the teaching practice of C language program course, this paper propses a teaching reform scheme for occupation skill training, integrates the information system software mechanism into classroom teaching practice, and gives one example of teaching design. The practice proved that, the reformed teaching scheme improves the students' engineering ability to apply knowledge to solve practical problems.

Key words: C language; programming; occupation skill; course reform

0 引言

在国家“信息化带动工业化”战略指导下,企业信息化飞速发展,带动了区域经济转型和产业结构升级,相关行业和企业对信息技术人才的综合素质能力要求越来越高,对从事信息技术应用型工作的技能型创新人才需求非常迫切[1]。高级语言程序设计作为高职院校信息技术专业的必修课,主要是面向编程技能和逻辑思维能力培养,人才培养质量和规格已远不能满足人才市场需求[2]。职业能力是人们从事其职业多种能力的综合,也是高等职业教育的重点培养目标之一,主要指灵活运用知识解决实际问题的工程能力和动手能力。当前流行的C++、Java开发平台运用,一般信息系统,Android应用开发,以及一些工具的应用和配置等,都离不开C语言的基础知识。如果将职业能力培养注入到C语言程序设计的教学目标,从系统工程的角度,重新安排知识点的学习路径,结合信息系统的建设、管理、运行、维护工作需求,增强实际应用技能和解决问题能力培养,将有利于提高学生的学习积极性和第一任职技术能力培养。

1 面临问题分析

C语言基础知识普遍适用于当前流行的开发平台,成为很多高职院校信息技术专业的必修课。但是,现有的C语言程序设计教学往往过多的关注结构化程序设计方法,按照知识点的先后顺序和难易程度讲解程序的基本结构[3],注重语言的各种语句、语法和命令,即便是列举了一些典型例题,也仅仅是从编写程序的角度帮助学生理解所讲的内容,无法达到灵活应用的教学目的,课程学习价值得不到充分发挥。

1.1 与应用需求脱节

很多学生毕业后认为程序设计课程教学安排不合理,37%的学生认为对就业没有任何意义,20%的学生认为没有掌握所学知识[4]。究其原因,是因为随着计算机和互联网应用的普及,人才需求两极分化严重,大量的人才需求是信息系统管理、运行和维护人员,不需要开发系统而要懂得系统优化配置、故障排除和客户服务。对于高职教育而言,显然应要求学生从技术上理解信息化系统的构成和配置。

1.2 与技术发展不相适应

计算机技术已经从一个高端的技术行业演变成一个工具,云计算、物联网等新技术层出不穷,多数实际应用是利用第三方平台进行二次开发,只需调用相关的软件构件,通过图形化的界面配置几个参数就能实现简单的应用。企业更关注人才解决实际应用问题的技术能力。单纯的语句、语法教学模式已经不能满足技术发展需求。

1.3 与职业技术能力不匹配

对语法、命令掌握的技术壁垒很低,但是数据建模、抽象问题的解决能力需要系统的学习。学生通过程序设计课程学习,应该能够真正理解掌握计算机软件的内在运行逻辑机理,而不是了解简单的语言规范。现有授课模式下,学生只是被动的接受语法和语句,而不能真正掌握软件的运行机理,也就无法转化成自身的职业技术能力。

2 面向职业技能的教学改革方案

职业技能体现的是第一任职技术能力。要适应市场人才需求,转变以传授知识为主的理论教学为提升学生技术能力的应用教学。教学内容要围绕应用技能需求设计,提炼出共性的知识和应用范畴,提高学生对程序设计背后运行机理的掌握,培养学生提出问题、分析问题、解决问题的综合能力。其教学强调在应用情景的驱动下,最大限度地调动学生的主观能动性,探究完成任务或解决问题,增强创新实践能力。

2.1 C语言应用现状深度分析

根据来自CodeEval的编程语言统计数据分析,2013年开发者使用Object-C飙升了300%,C#增长了100%,JavaScript增长了33%,Java虽然降低了14%,仍保持在领先地位。国内一些教育网站,则大量推崇Java编程、C#和Android应用开发。虽然已经很少将标准C作为开发工具,但上述这些编程语言的基础知识都在C语言程序设计教学中有体现。

2.2 教学改革思路

以就业第一任职技术能力为导向,突出程序运行机理分析和解决实际问题方法等应用内容,提高施教的针对性。在教学计划上,要依托学生在计算机组成和操作系统等相关课程上学到的知识,把软件系统运行机理融入到程序设计,增强C语言程序设计授课的有效性。在教学目标上,在掌握C语言编程基本规则的基础上,适当增加软件系统管理、配置和优化。在教学重点上,围绕编写、调试和配置一个实用、规范、可读性的程序,灵活运用任务驱动和项目教学法,由简单到复杂,逐步涵盖C语言的基本语法、编程知识点,涵盖实际运行维护各项流程,设计并实施一系列完整的项目,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。

2.3 课程教学方案设计

改革后的C语言程序设计课程,以学习项目为知识载体,以项目导向活动作为课堂教学的主要形式,突出项目开发过程中的管理、运行、维护等能力培养。教师要充分利用自身的知识能力优势,分析就业市场需求,定位课程岗位能力培养目标,在教学设计时突出对学生的专业技能、项目经验、职业素质等方面的训练。课程设计通常包括:设计项目、分解任务、协作开发、应用评价、迭代升级五个环节。首先,要对项目开发的相关技术进行概况式介绍,包括开发环境搭建、项目背景、任务要求。设计项目要由简到繁,前后关联,递进完善,将C语言程序设计的知识点融入到一系列项目中;分解任务,要成立项目小组,对应项目开发中的项目管理、系统分析员、程序员、测试员和运行维护人员等角色,轮流完成指定任务;协作开发就是创建仿真工作任务,采用任务驱动调动学生的积极主动性,由项目小组独立完成任务;应用评价要组织对一次任务完成情况进行研讨,分析下一次项目迭代升级方案,继而开展项目的迭代升级。

3 课程教学设计方法案例

精心设计课堂实例是教学内容的关键。仿真项目的安排,应该遵循课程内容之间的内在逻辑关系,充分包含课程知识点,完成相关应用知识和技能的掌握。

3.1 项目设计

让学生充分了解当前常用的C语言开发平台,在此基础上搭建TC2.0开发环境,研讨应用软件的安装配置基本要求,培养学生的项目建设能力,将其作为学生从事信息技术应用的基本技能。例如每五人分为一个仿真任务工作组,完成一个“找出最大数”的应用程序编写。其中每个人轮流担任项目管理,负责沟通协调项目开发中出现的问题,汇总系统分析员、程序员、测试员和运行维护人员文档,撰写项目报告。要求学生在程序设计过程中,不只是完成某一功能,还要分析每一行语句的应用场景,通过查找资料,转化为应用技能。下面例子中,重点是注释中的应用说明,拓展学生的知识点。

#include //C语言调用的头文件,实现对已有函数的引用,

可根据需要选择。C#、Java也有类似作用的package。这是实现程序复用的主要途径。

int main(void) //主程序,必须存在,是系统调用软件进程的入口。

Windows、Linux操作系统管理进程的入口,也可实现程序之间的调用和通信。本程序涉及了int和void变量类型,int类型数据在实际应用中可以用来表示一些整数如职员序号等。

{ //C程序的分段标识,以C为基础发展起来的程序大多以此为标识。

int i,j,k,t; //定义变量,要放在函数的最前面。主要是要考虑具体应用的对象属性。

printf(“input 3 number(exp:12 32 34):”); //输出显示,一方面

是调用已有的程序模块,二是实现程序界面的交互,当前主要是图形化交互界面,但在工业控制上还有一些字符型交互界面,主要取决于具体的应用场景。

scanf(“%d %d %d”,&i,&j,&k); //函数调用,接受键盘输入。每个

应用程序都要通过与输入输出设备实现信息的收集,存到相应的内存变量,然后进行处理。

t=i; //临时存储,计算机的功能之一就是存储功能,很多实际应用

都需要将数据格式化后进行存储处理。

if(j>t) t=j; //比较逻辑处理,完成功能要求,并存储结果。

if(k>t) t=k;

printf(“\n The max number is :%d”,t); //函数调用,显示结果。

由采用的函数决定什么方式来显示结果。加格式符是为了显示的人性化。

renturn 0; //向上层操作系统或调用程序返回运行结果,可以实

现应用间的衔接。

} //完成顺序程序结构的处理。

根据这一示例,学生分别完成程序设计、文档编写,并通过查阅相关资料,开展应用拓展分析。通过这个简单的项目设计,能让学生在学习C语言编程基本规则的基础上,创建仿真工作任务,让学生带着任务学习,拥有学习的主动权,带动起学生的学习兴趣。这个过程可以有效地拓展学生的应用技能。

3.2 项目评估

组织小组讨论,引导学生分析项目存在的应用问题。该程序存在的主要问题,一是只能处理3个数;二是程序不能重用;三是程序结果无法存储。一个完整的用户报告应包括提交问题报告和新的需求报告。通过学生的研讨和书面报告,对学生的综合素质进行评价,并给出问题处理方法建议。

3.3 项目迭代

在项目评估问题的基础上,提出项目迭代任务,一是进行输入保护,采用循环的方式实现随机个数数据输入和比较,掌握循环结构知识点;二是利用函数实现程序代码级的重用,掌握函数知识点;三是实现数据文件写入,掌握文件操作方法。教师讲解示例,完成相关应用分析后,交予仿真任务工作组进行实践开发。这样就将枯燥的语法融入到了一个不断完善的项目应用过程中,培养学生思考问题、解决问题的职业能力。

4 结束语

本文提出的C语言程序设计课程改革方案,以一个完整项目的迭代升级贯穿教学过程的始终,将编程知识点融入每次任务设计中,在任务驱动下提高学生学习的积极性和主动性,以仿真任务工作组提高学生沟通交流和实际工作能力,以应用拓展分析带动职业技能提升。该方法通过近年来的课堂教学实践,取得了较好的效果,学生在毕业实习阶段就明显得到了企业用人单位的认可,是一种适合于程序设计课程的教学方法。

参考文献:

[1] 工业和信息化部中小企业司.中小企业信息化发展指南[M].机械工业出版社,2013.

[2] 朱殷勤,论高职计算机应用专业技能型创新人才培养[J].农业网络信息,2013.11:150-153

第4篇

关键词:程序设计;学习模式;在线学习;自主学习;移动终端

DOIDOI:10.11907/rjdk.162141

中图分类号:G433

文献标识码:A文章编号:1672-7800(2016)012-0193-04

0 引言

当前软件人才培养的重要目标是有效提升学生的程序设计能力,使其拥有程序设计语言、数据结构、算法、计算机理论、软件工程等专业知识以及分析与解决实际问题的能力。常规的程序设计能力训练以传统课堂教学模式为主,侧重于理论教学,强调应试教育,而忽视对学生学习兴趣的培养,通常使学生处于被动学习状态。近年来,随着ACM国际大学生程序设计竞赛(ACM-ICPC)的发展,程序设计能力训练能够利用成熟的ACM-ICPC在线评判系统,形成基于ACM-ICPC的程序设计学习模式。

该模式可激发学习者对程序设计的学习兴趣,并帮助其提高程序设计水平[1]。

当前移动互联网和移动终端设备已成为人们日常学习、工作和生活中获取信息的重要手段,以此形成的普适化学习模式让人们的注意力中心回归到要完成的学习本身,构建出一个泛在的、随时随地可获得的智能化教育体系[2]。本文为程序设计能力训练设计了一种在线自主学习模式,研究将基于Web的ACM-ICPC在线评判系统[3]扩展至移动互联网环境下的移动终端平台,从而为学习者搭建起交流平台,形成一种高效的普适化程序设计学习体系。

1 程序设计在线自主学习模式设计

网络与信息技术的发展使程序设计学习可以突破时空限制,将现有的程序设计学习资源和平台有机整合,有助于实现在线自主的学习方式。本文将程序设计在线自主学习模式划分为课内学习、课外学习两个阶段,如图1所示。课内学习阶段主要适用于在校的程序设计学习者,要求提高实践课时比例,增加自主学习内容,因此采用适合在线学习的程序设计练习题目;课外学习阶段适用于所有程序设计学习者,要求构建课外学习在线资源,因此采用Web客户端、移动终端等多样化用户端,并逐步构建形成程序设计在线自主学习社区。

程序设计在线自主学习模式融合常规学习模式的优点,利用现有移动互联网和移动终端设备发展成果,使程序设计学习趋向于全天候在线及自主可控。课内学习阶段由课堂知识传授模式发展到包括实践学习、自主学习、在线学习等多样化的综合学习模式。课内学习阶段强调多样化的用户端,从个人自主学习模式逐步导向协作互助的社区学习模式。由此可见,程序设计在线自主学习模式为程序设计能力训练提供了一个便捷、开放、互动的普适化程序设计学习平台。

2 程序设计在线自主学习系统设计

程序设计在线自主学习模式的具体实施依赖于系统服务平台、Web客户端系统、移动终端系统以及普适化程序设计学习应用等,这些系统构成了程序设计在线自主学习系统,如图2所示。

图3给出了程序设计在线自主学习系统的功能。程序设计在线自主学习系统服务平台可以使用现有的ACM-ICPC在线评判系统[1,4]。移动终端系统主要实现数据的获取,与程序设计在线自主学习系统服务平台进行交互,一方面利用网络通过服务平台获取数据,另一方面访问本地数据库读取数据。与服务平台进行交互时,采用HTTP协议进行通信以及JSON解析[5]。下面给出几个重点功能模块设计。

2.1 显示题目列表

在程序设计在线自主学习移动终端系统中,显示题目列表功能模块包括题目列表界面设计、与服务平台的交互设计。图4给出了移动终端系统的显示题目列表功能模块类图。

在程序设计在线自主学习系统服务平台中,显示题目列表获取移动终端系统发送来的请求后,从数据库获取题目列表数据,然后将这些数据以JSON对象的形式返回移动终端系统。图5为服务平台的显示题目列表功能模块类图。

2.2 显示代码提交状况功能模块设计

移动终端系统的显示代码提交状况功能模块包括编辑代码界面设计、提交代码交互设计、代码提交状况显示界面设计等。图6给出了移动终端系统的显示代码提交状况功能模块类图。

服务平台的显示代码提交状况功能模块设计主要为获取移动终端系统发送来的提交代码,对这些代码进行评判,再将评判结果保存到后台数据库中。图7为服务平台的显示代码提交状况功能模块类图。

2.3 提示词功能模块设计

移动终端系统的提示词功能模块设计主要包括添加默认提示词、添加自定义提示词以及显示提示词。图8为该功能模块的类图。

3 程序设计在线自主学习系统实现与测试

为实施程序设计在线自主学习模式,上一节详细设计了程序设计在线自主学习系统,下面给出该系统的具体实现过程,并进行系统测试。

3.1 系统实现

在程序设计在线自主学习系统实现中,系统服务平台采用南京邮电大学的ACM程序设计在线评判系统(NOJ)[4],移动终端平台采用Android[6],程序设计普适化应用包括在线开放练习、在线实时比赛、训练交流等。以下为用户提交代码在系统服务平台上的执行情况示例:

Tomcat v7.0 Server at localhost [Apache Tomcat] C:\\Program Files\\Java\\jre7\\bin\\javaw.exe (2015年6月2日 下午2:18:06)

1241551 [http-bio-8080-exec-12] INFO com.nuaa.Hibernate.SessionFactory - commit tx

1001

整数求和

1268658 [http-bio-8080-exec-9] INFO com.nuaa.Hibernate.SessionFactory - commit tx

1

gao

1001

GCC_prompt

1683525 [http-bio-8080-exec-9] INFO com.nuaa.Hibernate.SessionFactory - commit tx

1683637 [Thread-3] INFO com.nuaa.util.judge.JudgeWaiter-JudgeWaiter提前题目ff8080814db2ec16014 d30 5addc0001

1683795 [Thread-3] WARN com.nuaa.Hibernate.SolutionDAO-getting Solution instance with id: ff808081 4db 2ec16014d305addc0001

1683989 [Thread-3] WARN com.nuaa.Hibernate.SolutionDAO C getting Solution instance with user_name: gao

getting Solution instance with user_name: gao

1684093 [Thread-3] INFO com.nuaa.Hibernate.SessionFactory - commit tx

1684093 [Thread-3] INFO com.nuaa.util.judge.Checker-开始评判--D:\\www\\AcmJudge\\ ff8080814db2ec16014 d305addc0001 1001 1 100 33600

1685739 [Thread-3] INFO com.nuaa.util.judge.Checker-评判结束

3.2 系统测试

下面对程序设计在线自主学习系统进行功能测试和在线自主学习模式的用户使用测试。在系统功能测试中,表1是显示代码提交状况的模块用例表,该表用于测试系统是否能够正确提供给用户显示代码的运行结果。其它测试用例与之类似,所有功能测试结果均为“通过”。此外,根据在线自主学习模式的用户使用测试报告,用户对程序设计在线自主学习系统及其支持的在线自主学习模式普遍持有肯定意见。其中,74%以上的用户使用Web客户端、移动终端等多样化用户端登录系统;86%以上的用户认为现在或未来需要在程序设计能力训练中使用移动终端系统;近94%的用户认为程序设计在线自主学习系统实现了随时随地的普适化学习;85%以上的用户认为

在线自主学习模式提高了程序设计学习的兴趣和效率;近95%的用户认为在线自主学习模式能够提高或有时能够提高程序设计学习的自主性。

4 结语

本文提出了一种在移动互联网环境下的程序设计在线自主学习模式,该模式将程序设计能力训练划分为课内学习和课外学习两个阶段,每一个阶段都强调程序设计的在线学习、自主学习和社区协作学习,这种普适化学习体系由系统服务平台、Web客户端系统、移动终端系统以及具体学习应用等构成。为此,本文设计与集成开发了一个程序设计在线自主学习系统,该系统使用现有的ACM-ICPC在线评判系统作为系统服务平台,支持包括Web客户端、移动终端在内的多样化用户端,实现了程序设计在线自主学习模式,有效提高了学习者的自主化程序设计能力训练效率。

参考文献:

[1] 陈志, 李梦泽, 马嫣, 等. 基于 ACM 程序设计竞赛的常规教学改革[J]. 电气电子教学学报, 2011, 33(6): 18-20.

[2] PENA-AYALA A, CARDENAS L. A revision of the literature concerned with mobile, ubiquitous, and pervasive learning: a survey[C]. Switzerland: Springer International Publishing, 2016: 55-100.

[3] 蔡崇超. 基于 Web 的在线判题系统设计与实现[J]. 软件导刊, 2016, 15(3): 107-109.

[4] 南京邮电大学. NOJ: NJUPT ACM online judge[EB/OL]. http://.

第5篇

关键词:C++程序设计;独立学院;教学改革

中图分类号:G434文献标识码:A文章编号:1672-7800(2012)012-0220-02

1《C++程序设计》在计算机专业课设置中的重要性 《C++程序设计》就是应潮流与需求而进化的一门优秀的程序设计语言。学生在前面学习了面向过程的《C语言程序设计》课程。C++语言是兼容C语言的。C语言的学习对学生掌握C++语言奠定了基础。学习C++语言后再学习Java语言或C#语言就变得相对容易。体现了这门课程在教学中的作用和重要性。

2独立学院学生学习《C++程序设计》课程存在的问题 (1)学生在刚开始学习C++语言时,感觉语法和C语言有很多类似的地方,但又有很多的不同点。针对两种语言的很多知识点都容易混淆,教学过程中需要帮助学生区别这两种语言,找到类似点帮助学习新的知识。

(2)针对独立学院部分学生基础较差的问题,教学中应该避免让学生在学习程序语言课程时感到枯燥。如何提高课堂的教学效果,需要采用多种教学方法来活跃课堂,促使学生去思考问题。

(3)很多学生反映学习计算机语言的特点就是语法太多,很容易忘记,课后又疏于复习,所以掌握起来较难。教师需要通过课堂的控制督促学生进行预习与复习。

(4)实验课程中对于教师布置的实验题目,经常是一部分学生在课堂内难以完成实验题目,而另外一部分学生提早做完了,课堂剩余时间没有事干。这需要教师合理安排实验的难易度,让不同进度和不同能力的学生在实验课堂内都能够很好地完成实验。

(5)很多学生提出课程设计课的课时太短,难以完成课程设计的内容,没有留有足够的思考设计时间来对程序进行优化与改进。这需要教师把握课程设计的灵活性,既要留有足够的时间给学生进行自主的设计,又不被课时所限。

3改进《C++程序设计》课程教学方案

3.1采用类比式教学法进行计算机语言教学

学生在学习了C语言的基础上学习C++语言时,把C++与C语言进行对比,比较两种计算机语言的相同点和类似点,找出不同点,能使学生快速掌握C++的基本语法。作为计算机语言,语法结构都是很类似的,例如,都有变量与常量,但C++语言要求更为严格。

计算机语言既然称为语言,就和自然语言也有共通点。计算机语言复杂性比较自然语言更为简单。对于计算机系的学生,初次接触计算机语言,对于语言基础的部分,总觉得需要记住的琐碎的语法很多。其实,与中文或英语相比这些语法是相当简单的。

学会中文的语法和英语的语法,有助于掌握语言,但是,真正能够写出好的文章,需要的是语言表达出好的思想。同样,在程序设计课程中所有计算机语言的语法结构都是很相似的。掌握了基本语法以后,最重要的是用好的编程思想来实现各种程序。计算机语言中定义的各种常量与变量,就好比英语中的单词。在计算机语言中,通过运算符来连接各种常量与变量,组成表达式。在英语中,通过连词来连接单词,组成短语,多个短语组成句子。在英语中,一个或多个句子组成一个段落,用来表达一个中心思想。在计算机语言中,通过函数来完成某个功能,函数中包含若干条表达式。编程思想涉及很多算法,不同的算法能够提高程序的运行效率,使得程序更为简洁,提高程序的复用性。在英语中句子与句子间的关系,包括转折结构、并列结构、假设结构等。在计算机语言中,计算机语言控制结构简单得多,只有3种:顺序结构、选择结构、循环结构。

3.2启发式教学法在C++语言课程中的应用

问题启发是启发式教学方法的重要途径,问题本身的质量是影响启发式教学效果的重要因素。C++语言编程是采用面向对象的程序设计思想。但是,C++并不是纯的面向对象程序设计语言。C++是兼容C语言的。这就意味着C++程序设计也是兼容面向过程的程序设计。面向对象的程序设计语言当然比面向过程的程序设计思想要好,但是,为什么C++ 必须兼容C语言?这种启发式教学法促进学生去思考问题。有很多学生在学习《C++程序设计》特点时教师授课一带而过。因为微软公司原先有一部分产品是采用C语言编写的,后期产品维护也需要微软公司来提供服务,而对之前C语言编写的产品,需要进行产品升级,也需要后续推出的C++产品作铺垫。

3.3《C++程序设计》课堂教学控制

针对独立学院学生思考问题和完成作业和实验的主动性和自觉性较差的问题,教师在课堂教学过程中需要对课堂教学的过程进行控制与把握。为了促使学生进行课堂知识的巩固与复习,在每次下课之前就布置一些关于本堂课程和下一堂课程内容的思考题。在每次上课之前对这些思考题进行点名提问,并对上堂课重要的知识点进行回顾。这样可使学生主动回忆上堂课程的内容,并很自然地进入当堂课程内容的学习。

3.4《C++程序设计》实验课程的教学设置

《C++程序设计》课程实验课的教学,在上机题目设置上应采用多种类型相结合,包括验证型实验、设计型实验和综合型实验。每次实验课之前布置上机实验题目与要求,每次上机教师的主要工作是检查所做的实验内容。上机题目分为4类,基础题、应用题、设计题和选做题。选做题是针对于已经完成了基本实验内容的基础较好的学生,安排需要运用综合知识点,并结合课外知识,完成难度较高的实验题目。

3.5《C++程序设计》课程设计教学改革

《C++程序设计》课程学期末安排本课程的课程设计。《C++程序设计》课程一般在第三学期,课程设计在期末给出题目,学生利用寒假期间来完成课程设计的内容。这样的安排既给学生留有足够的时间完成设计内容,又能让学生在假期复习巩固专业知识。学生必须完成实验内容,提交课程设计实验报告,以及系统实现源码,以光盘形式提交。光盘文件应包含课程设计报告、源程序、编译后的执行程序,测试数据文件以及说明文件来说明安装、运行、配置系统的注意事项。

课程设计采用团队分组模式,可以培养学生的团队意识。课程设计的考核在第四学期开始,进行分组提交课程设计作品,按照分组进行答辩,按照团队综合给分。

具体课程设计安排可以采用如下步骤:搜集设计课题的资料;总体方案设计(包括选用器件、原理图的总体框架、程序的流程);数据结构及算法的设计;编写程序;调试程序,对设计方法及结果进行测试;编写设计说明书;总结并书写课程设计报告;答辩。

课程设计成绩评定方法,按照百分制给分:①出勤、认真态度占10%;②设计方案的正确性占30%;③设计说明书内容及规范程度占20%;④软件正确性占30%;⑤答辩占10%。

3.6考核体系

《C++程序设计》课程考核的评分应该是综合评分,在评分标准中应该强调编程能力及操作能力的要求。实验及课程设计成绩应该占总成绩50%的分值。考试的最终总评成绩中期末考试占50%,平时成绩及实验课成绩占20%,课程设计占30%。

参考文献:

[1]郭建宏.C++面向对象程序设计语言教学探讨[J].辽宁高职学报,2008(2).

[2]袁柳,路纲.程序设计语言教学过程中的学生思维能力培养[J].计算机教育,2011(12).

[3]李学俊,李龙澍,徐怡.问题诱导启发式程序设计语言教学方法[J].计算机教育,2010(16).

Research on Teaching Reform of C++ Programming

Course in Independent College

第6篇

由中南大学信息科学与工程学院承办的湖南省大学生计算机程序设计竞赛研讨会于2009年5月9日在中南大学隆重召开!中南大学校本部民主楼小礼堂迎来了来自全省38所高等院校110名教务处领导及湖南省程序设计竞赛教练与领队。

湖南省教育厅高教处夏智伦处长、王文斌副处长出席会议并发表热情洋溢的讲话,中南大学信息学院院长、博士生导师桂卫华教授代表承办单位致欢迎词。中南大学学校教务处陈立章副处长参加会议并讲话。《计算机教育》杂志奚春雁主编参加了会议。

会上,清华大学博士生导师、全国ACM程序设计竞赛总教练吴文虎教授作了精彩的专题报告“国际大学生ACM程序设计竞赛”,受到与会代表们热情欢迎。湖南省高教学会计算机教育专业委员会理事长、竞赛专家组组长、中南大学信息学院副院长、博士生导师邹北骥教授介绍并解读了竞赛新章程,与会代表踊跃发言,为把湖南省大学生计算机程序设计竞赛推向一个新的阶段献计献策,会场气氛热烈。 当天下午,省高教学会计算机教育专业委员会召开了第四届常务理事第六次会议,会议就湘南学院筹备2009年学会年会情况、第五届湖南省大学生计算机程序设计竞赛安排以及与《计算机教育》杂志社合作、计算机学科教材建设、实验室建设等相关事项进行了激烈的讨论,形成了统一意见。

据悉,湖南省大学生计算机程序设计竞赛(HunanCollegiate Programming Contest,简称HNCPC)由湖南省教育厅主办,湖南省高教学会计算机教育专业委员会防办。竞赛每年举办一次,一年为一届,力求将国际ACM大学生程序设计竞赛引入校园,激发大学生开展计算机程序设计的兴趣,培养大学生的创新能力、团队合作精神和用计算机解决实际问题的能力,推动大学计算机基础课程的教学改革,加强湖南省各高校大学生之间的交流和学习。

近年来,中南大学信息科学与工程学院在学校的正确领导和教务处的大力支持下,高度重视大学生程序设计竞赛。2008年,学院共派出两支队伍,代表中南大学参加国际大学生ACM程序设计竞赛,并双双获得赛区银奖。在历届省级竞赛上也取得一系列优异成绩,为接下来的竞赛奠定了良好的基础。

第7篇

关键词:计算机学科;实验教学;教学改革

当前,培养适应社会发展、适应激烈科技竞争环境,且具有创新意识、创新能力的新一代高素质人才,已成为我国高校人才培养的核心任务和神圣使命,而传统的教学方式已经不能适应这种新形势的需要。

程序设计是计算机专业的基础必修课,是本科学习的入门课程,熟练掌握程序设计是计算机学生应具备的最基本技能。打好程序设计编程基础,学生对后续专业课程的学习就会产生浓厚的兴趣,这对学生的学习是无形的促进。实验是程序设计学习过程中的重点,只有经过编程实验的磨练才能熟练掌握程序设计课程的技巧。计算机知识的学习一定与实验结合,熟练掌握编程技巧是学生掌握理论知识、培养创新能力的关键,对学生毕业后走上工作岗位的持续性发展也会产生积极的影响。

改革程序设计教学,使之真正成为理论与实践相结合的纽带,成为培养实用性、创新性人才的平台。我们应在科学发展观的指导下解放思想,改变传统的教学方式,努力构建新型的教学机制。把培养目标定位在培养和训练学生的动手操作和实验设计能力,实施创新教育。学生不仅理论水平要高,实践能力也要强。

1改革目标

2008年我院试行大类招生计划,第一个学期是新生学习的基础阶段,我们要培养学生对专业的爱好,激发学习兴趣,这一阶段的程序设计实验教学尤为重要。以前,实验教学与理论教学联系不紧密,程序设计的实验教学也一样,实验教学学时少,教学内容简单,不重视实验教学,理论与实验脱节,教学达不到理想效果。一年级新生由于高中时所在地区经济发展的差别,对所学的信息技术课程的内容掌握程度不同,多数学生计算机的实际操作能力和编程能力普遍偏低,大多数同学只见过计算机,而没有实际操作过。我们发现以往的学生如果在一年级时,没有打好编程基础,后续课程需要编程序时则无从下手,也不了解如何进行调试、测试,后续的专业课程更无法入门,因此失去学习的兴趣。这对他们今后几年的学习会产生很大影响。另外,忽视程序设计实验教学,还会制约学生日后创新思维的发展[1]。

针对上述问题,我们以培养和提高学生实验学习能力、分析和解决问题能力,培养学生专业学习能力为目标,尝试对实验教学方法进行改革,尽快提高实验操作水平偏低同学的操作能力,克服学生对编写程序的恐惧心理,让新生的编程能力得到实质性的提高。

2改革思路

计算机实验教学是计算机教学的一个重要组成部分,是培养学生创新能力、独立工作能力和实践能

作者简介:黄荔(1963-),女,高级工程师,本科,研究方向为实践教学;庞雄文(1972-),男,讲师,博士,研究方向为软件工程;徐永广(1970-),男,实验师,硕士,研究方向为实践教学;司徒锡康(1949-),男,高级工程师,本科,研究方向为实践教学。

力的主要途径。当今计算机实验教学的功能已由过去单一教学发展成为集教学、科研、开发研制为一体。因此,为了适应教学改革的形势,必须深化计算机实验教学的改革,加强计算机实验室建设,最大限度地发挥其作用。另一方面,随着高校教育体制改革的深化、学生群体时代特色的增强,强调以生为本,注重人文关怀和个性发展的教学模式将成为高校计算机实验教学的必然选择。

成功的教学改革应使学生在基本知识、基本方法、基本技能等方面都得到良好的训练,并在潜移默化中培养学生的观察力和思考习惯。实验教学不仅要重视知识的综合性与完整性,更要注重学生的创造性思维,增强学生的创造性能力[2]。为此,我们进行了以下的改革。

(1) 队伍多元化:参与教学改革的成员来自同一学科和专业,既有理论教学经验丰富的教学人员,也有长期从事实验教学的教学人员,体现了教学与实验交融、优势互补、教学方法渗透的特色。

(2) 内容求变化:改变传统的实验教学依附于理论教学的内容,建立一套适用新生基本技能学习的内容体系,将理论教学和实验教学有机联系起来。

(3) 方法求创新:以一门实验课程研究探索为基础,通过对过去的教学经验进行研究探索与实践应用并行的方法,拓展为计算机方向适用并具有特色的实验教学模式。

(4) 成果求突破:建立一个狠抓计算机专业基本功的教学模式,通过新的教学模式,对学生程序设计学习过程有一个科学、合理的描述,形成有助于学生终身发展的“程序设计实验”课程教学大纲。

3改革内容

针对原有教学模式中存在的“重理论、轻实践,重教学,轻实验”的情况,我们对原有的教学内容进行整合,进行大胆而有效的改革尝试,具体改革内容如下。

3.1构建新的教学体系

从根本上改变实验教学依附理论教学的传统观念,将“计算机科学技术导论”和“高级语言程序设计”的实验课合并为独立课程来开设。形成新的实验教学体系,为程序设计的后续实验课程提供教改样例。

按照我院计算机专业的特点,我们加强基础专业能力的培养,从强基础、重实践的指导思想出发,总结以往学生学习的情况,在第一个学期开设32个学时的“计算机基础实验”课程。

3.2形成新的教学内容

从学生实验能力的培养出发,有针对性地安排实验教学内容,对每次实验课编写具体的实验教材,形成与理论教学既有机结合又相对独立的教学内容。整合后课程安排如下。

(1) 将“计算机基础实验“作为必修课程,总课时为32节,安排1个学分。每周安排2节教学学时,以实验教学方式进行教学。

(2) 要求预修课程有计算机科学技术导论、程序语言基础(C++语言基础)。

(3) 课程授课面向对象可以是各专业学习计算机基本操作和“C++程序设计“的学生,要求学生必须有一定的数学基础。

(4) 明确教学目的与基本要求。“计算机基础实验”课程是计算机科学与技术、软件工程、网络工程专业的必修课程。本课程以实验教学为主线,紧扣基础,循序渐进,面向编程应用。首先使学生掌握Windows 操作系统的基本使用、Office工具软件的基本使用、网络的基本使用,作为学生以后学习的铺垫。接着通过对C++程序设计的教学,使学生能把理论上学到的C++程序设计的基本思想和方法结合到实践编程中去,培养学生熟练掌握C++语言编程能力和解决实际问题的能力,培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。为学生进一步学习其他专业课程和今后从事软件开发工作打下坚实的基础。

(5) 明确课程主要内容、基本要求及学时分配。

实验1:微机的基本操作(4学时)。

了解实验课程的总体要求,掌握上机实验的基本操作与步骤,了解Window操作系统的界面,掌握“计算机基础实验”实验课程中涉及的基本软件操作(包括Word、Excel 、PowerPoint及上网的基本知识)。

实验2:VC++程序设计的入门基础(4学时)。

掌握C++单文件应用程序的开发步骤,掌握C++单文件程序的输入、编译、链接和运行的过程。掌握标识常量和变量的定义方法、各种运算符的功能、表达式的运算。

实验3:控制结构程序设计(4学时)。

掌握三种程序控制结构的程序设计和执行过程。4学时中用0.5学时对计算机基本操作进行堂上作业检查。

实验4:函数、作用域(4学时)。

掌握函数的定义及其调用、参数的传递,变量存储特性,作用域。

实验5:程序设计小专题(4学时)。

综合实验2~4的程序设计方法,掌握程序设计方法的综合运用。

实验6:数组、结构体、指针(4学时)。

掌握使用一维数组、二维数组的程序设计方法,了解结构体的简单编程方法,了解指针的简单使用。

实验7:程序设计大专题(综合性实验6学时)。

开发一个小型系统。了解程序开发环境调试工具的使用,掌握小型系统的开发过程,了解用该语言解决问题的方法。实验涉及的内容包含“程序语言基础(C++语言)”的大部分知识点,主要包括三种基本的控制结构、函数和函数调用、数组、结构、指针,还有一些必要的知识点,包括Windows界面的程序开发、Windows API调用、Windows中的画图功能,需要学生了解这些涉及到类的声明和调用的额外的知识点。

(6) 课程需要的实验环境。

主要仪器设备,硬件有多媒体计算机;软件有Windows 2000/2003/XP、Visual C++6.0;实验时每人1台设备。

3.3改变以往的教学形式

以实验课堂上的教学和学生操作为主,以实验室课后开放时间所进行不同难度的练习为辅,并以课内课外相结合的方式对新生进行教学和培训。

我们在实验室方面作了调整,主要是抽调实验教师专职担任实验教学,聘请本科毕业生做实验管理和技术维护的工作,全天开放软件实验室让学生在课余时间加强上机实践和自己选择上机题目,定期与学生沟通,了解教学和学生掌握知识的情况以便对教学进度和难度进行调整。

3.4构建新的教学评价体系

构建实验考试题库、考试软件,在期末对学生进行实验考试,作为实验考核的一项重要内容。

本课程期末进行实验现场上机考试,成绩按百分制计算。本课程总成绩包含平时成绩、综合性实验成绩、期末考试成绩[3],并按以下依据进行评价。

(1) 综合性实验成绩根据学生程序设计大专题完成的效果和实验报告给予评分。

(2) 平时成绩根据学生基本实验技能的掌握程度及学生的实验报告给予评分。

(3) 综合期末考试成绩和上述各项平时成绩,评定学生的总成绩。学生总成绩=50%的考试成绩+20%大专题实验+30%平时成绩。

(4) 实验报告要求学生全部使用计算机完成并提交电子版本的实验报告。这是因为学生上机的实验结果(程序)都已在机器上通过,学生可以方便地把实验结果加入到实验报告中,老师在批改实验报告时也能及时验证学生的实验结果(程序)。学生在计算机上完成实验报告的同时也是对“实验1”内容的复习巩固。

(5) 注意提交电子版本作业的报告雷同问题,对抄袭引起的报告雷同问题,一经发现,严肃处理。

4改革的实施

为了使改革更有效地进行,在确定改革目标、思路和做法后,我们在2007级新生中做试点教学,并为2008年大类招生的人才培养做好准备,2008年新生正式按计算机基础实验课程安排教学。实施分如下几个阶段进行。

4.1专题研究

分析整理前几年“计算机科学技术导论”和“高级语言程序设计”课程中实验教学的内容和教学方法,发现两者关系密切,它们都是学生学习计算机专业内容的入门课程。因此我们决定将两门课程的实验教学合二为一,作为一个新的实验课程“计算机基础实验”,初步确定新实验课程的教学方法和计划。

4.2拟定教学计划和内容

分析两门课程中实验教学内容的公共部分和不同部分,并加以整合,形成“计算机基础实验”课程教学的初步计划、内容和结构,课程有针对性地编排一系列对应的实验以帮助学生巩固课程内容的学习,改变过去由教师完成理论教学后学生自行上机的做

法,并按计划查找、收集、编写有关的教学材料,在此基础上编写出与新的实验课程相应的教学大纲和教材。

4.3探索与实践

我们在2007年新生“程序设计实验”课中试行新的教学计划,学生按照“计算机基础实验”课程计划进行实际上机操作,由于内容和要求明确,学生较过去更能有针对性地进行操作,实际操作能力大大提高,更易于掌握相应的课程内容,我们在试行过程中仍不断探索和改进教学方法和手段。

作为一门新的课程,它和理论课程一样,我们也将其实验课程纳入学校教学处的正式课程管理,期末考试安排在学校统一的考试周进行,学生成绩由教务处统一管理。根据“计算机基础实验”课程的教学大纲要求,学生的实际操作能力需要以上机完成指定的内容的形式进行考查,因此,我们在进行实验教学的同时构建实验考试题库,开发考试软件,以适应新的课程的需要。

4.4实验教学大纲的构建

我们及时对2007级新生实施改革后的教学计划、方法和手段进行总结。在此基础上构建这门实验课程的教学大纲,修改考试题库,修改、调试考试软件,为2008年大类招生的教学改革实施做好准备。

4.5新实验课程教学大纲的实施

我们在2008年大类招生的人才培养中实施新构建的实验课程教学大纲,用以验证新教学大纲的合理性、适用性,并使用考试软件对学生进行考核。在此基础上,我们也再一次总结了这门实验课程的教学方法和手段,修改教材,修改考试题库,修改、调试考试软件。

5结语

培养技术型和应用型专门人才是高等院校的目标和任务,为了完成此项目标和任务,我们对程序设计教学的改革方案和思路进行分析和探讨,提出针对学生特点教学的新体系。自从教育部实施“质量工程”以来,各高校根据本校人才培养的定位,大力进行实验教学体系改革,将实验教学与理论教学有机结合,而不是仅将其作为课堂教学的辅助环节。这样的改革是提高实验教学质量,培养学生创新精神和实践能力的重要基础[4]。

实践证明,重视教学体系改革,严格执行教学要求,充分调动学生学习积极性,教学质量就会明显提高。高质量的实验教学不仅能培养学生严谨的科学态度,也能提高学生独立思考和独立工作的能力。改革对教师提出更高的要求,只要我们扎扎实实地进行改革,就能完成新世纪赋予我们的历史使命,为国家培养更多高素质的应用型人才。

参考文献:

[1] 乔宪遐,郑焦. 网络环境下非计算机专业“计算机操作技术”实验教学改革的研究与实践[J]. 实验技术与管理,2009(3):207-209.

[2] 雷东升,郑全英. 计算机专业实践教学体系的改革与探讨[J]. 黑龙江教育,2006(10):65-66.

[3] 卫绍元,王彤,卢曼惠. 优化实验教学质量监控体系,提高实验教学质量[J]. 实验技术与管理,2009(3):225-226.

[4] 单志龙. 浅谈计算机专业实践教学体系的改革[J]. 教科文汇, 2008(8):81-82.

Strengthening the Foundation and Practice of Programming Reforms and

Explorations of Programming Experimental Teaching

HUANG Li, PANG Xiong-wen, XU Yong-guang, SI TU Xi-kang

(School of Computer Science, South China Normal University, Guangzhou 510631,China)

第8篇

关键词:C语言程序设计;算法设计;能力培养;课程设置

《C语言程序设计》课程的教学目标着重培养非计算机专业学生使用计算机分析和解决实际问题的意识与方法。笔者在多年的C语言课程实践教学活动中发现,该门课程的教学普遍以知识的传授为主,注重语言基本语法知识讲解,轻视学生编程能力的培养。这种教学现状导致很多学生只能考试,不能编程。这种教学现象的存在与课程的教学目标是完全相违的。为此本文提出了以算法设计能力、编程能力和自主学习能力培养为目标的课程教学方案。

1基于能力培养为目标的程序设计方案的实施

程序设计是为解决实际的某一问题而设计的一系列求解活动的描述,其实现的关键就是构建出解决问题的算法。基于能力培养为目标的程序设计教学方案的实施,要抛弃传统的复杂的语法细节,以突出算法设计和编程能力为主要目标,并注重计算思维能力的培养。

1.1课程教学内容设置

以能力培养为目标的教学,注重对学生分析实际问题、构建算法、编程能力的培养。具体教学内容安排如下:(1)详细讲解算法知识。算法是程序设计课程的灵魂,掌握常用算法知识对程序设计课程的学习可起到意想不到的效果。在程序设计基础课程的教学中应树立算法这一核心思想。首先通过自然语言的描述引入算法概念,强调结构化程序设计中顺序结构、选择结构和循环结构的重要地位。(2)略讲基础语法中的数据类型和数据的输入与输出方法。对于C语言基础语法中的数据类型涉及到的繁琐的数据存储相关知识省略不讲,简化对数据类型自动转换与强制转换的讨论。简化数据输入输出方法,省略复杂的输入输出格式。通过顺序结构程序设计训练,掌握最简单的程序设计方法。(3)课程基础语法知识的的核心集中在三大控制结构、函数和数组。通过对大量的实际常用问题的算法设计,逐步建立问题求解一般过程。并通过对一些常见的算法的实现,强化编程能力的训练,使学生理解和掌握模块化的程序设计方法。

1.2多元化教学方法的使用

基于能力培养为目标的程序设计课程教学,授课过程中应采用多元化的教学方法,如案例教学法、任务驱动教学、互动式教学等。在理论课的教学中重点尝试使用了四段式互动式教学方法,该方法的实施由四个阶段组成:模仿编程、读程序、改写程序和独立编写。模仿编程适用于程序设计的初学阶段,采用类似书法学习中描红的方法,只需要按照授课老师给的一些程序例题进行模仿编程。读程序阶段需要授课教师事先准备好大量的程序例题,让学生逐行阅读,并逐行添加注释。改写程序阶段就是将一个已经阅读过的程序实例用不同方式进行实现。通过前面三个阶段的反复训练,学生已经掌握了C语言基本语法知识,最后就是让学生独立分析问题编写程序的训练。与传统教学方法相比,互动式教学方法有利于提高学生学习C语言程序设计的积极性,提高了程序设计课程学习的效率,可有效使学生从被动学习转换为主动学习。

1.3课程实验环节设置

改变C语言程序设计实验课中传统的“课前预习———课堂实验———撰写实验报告”的三段串行模式,重视程序调试环节。以能力培养为目标的程序设计课程教学,应注重程序调试方法和调试能力培养,要教会学生进行单步执行、观察数据变化、断点设置等。在实验课开设的初期,当遇到有学生请求教师进行排错,授课教师要抓住机会,讲解程序调试和查错的方法,以使学生在实验课的前期就能够掌握程序调试的方法。在实验课的教学过程中以培养学生能力为目标,使用了“结对编程”这一创新的教学模式。结对编程是指两名同学肩并肩地坐在同一台电脑前合作完成同一个程序设计。通过研究发现,采用独立编程的学生在实验过程中遇到语法错误、逻辑错误总是习惯请教老师。然而采用结对编程的同学,在整个实验期间则忙于广泛与其他同学交流和讨论,遇到问题时相互帮助,利用他们所学的知识积极解决问题。结对编程能够提高程序设计质量、减少程序代码的错误、提高编程技巧、增强团队之间的相互沟通、使每个参与者都能受益。

2实验教学效果分析

在实施以能力培养为目标的程序设计教学方案之前,武汉生物工程学院开设的C语言课程,大多数学生的编程能力和算法设计能力较低,学生学习该门课程的积极性不高,课程的教学质量偏低。通过改革方案的实施,在2012年秋季开始采用了以能力培养为目标的程序设计课程教学方案进行课程教学的开展,考试方式采用编程题占60%的试卷统一进行测试,近3年课程考试编程能力的结果分析见表1。从表1的数据分析可以看出,通过实施了以能力培养为目标的程序设计教学,授课教师认清了语言知识与编程能力之间的联系。在课程教学中有意识的突出对学生编程能力的培养,弱化了一些语言语法知识的讲解。这种教学方式不仅有效的提高了学生课程的学习兴趣,降低了课堂的流失率,还有效的提高了学生的算法构建、程序调试和编程能力的提高,考核效果较好。

3总结

以能力培养为目标的课程教学方案的使用,有效的改善了传统C语言教学偏重语言语法知识,忽视编程能力培养的教学误区。以能力为目标的程序设计课程教学,重在学生编程能力的培养。在保证能够描述算法的前提下简化语言的语法知识,改进教学方法、改革课程考核方法,总体提高了学生学习C语言程序设计课程的兴趣,取得了较好的教学效果。

参考文献

1李丽萍,王冬梅.C语言教学改革的探索与实践[J].辽宁工业大学学报,2009(2)

2王孝平,董秀成,谢维成.电器信息类专业高级程序设计教学内容和方法的探索与实践[J].武汉大学学报(理学版),2012(S2)

3袁红照,关涌涛.程序设计教学中结对编程的实践和效能分析[J].安阳师范学院学报,2011(5)

4詹英,王黎征.结对编程在程序设计课程实践教学中的应用[J].南阳理工学院学报,2009(3)

第9篇

关键词:建构主义理论;程序设计;教学结构;创新人才

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

文章编号:1672-5913(2007)02-0023-04

1 引言

计算机教育是高等教育的基础之一,而程序设计基础是一门十分重要的计算机基础课程。运用现代教育技术的先进理论──建构主义理论构建程序设计基础的新型教学结构,不仅有利于程序设计基础学科的自身建设,更有利于培养和提高广大学生的创新思维、创新能力。

2 建构主义理论

建构主义理论是当今国际教育界影响较大,并日益显示其强大生命力的一种新的、较成熟的教育理论,它对于我们深入教育改革、进行学科教育研究等都有重要的借鉴和启示作用。建构主义理论的核心观点是:人作为认知主体对知识的获取不是被动地接受、而是主动加工建构的,即学习知识是“认知主体”的内部心理过程,并把学习者看作是“信息加工主体”,而不再是“刺激──反应”的行为过程,而把学习者看作对外部刺激作出被动反应的“知识灌输对象”。也就是说,学习是学习者在原有知识的基础上借助外来信息、通过双向、交互作用来加工建构的认知过程,用一句话可概括为:以学生为中心,强调学生对知识的主动探索、主动发现和对所学知识意义的主动建构(而不是像传统教学那样,只是把知识从教师头脑中传送到学生的笔记本上)。因此,建构主义理论的主要目的是让学生自主建构自身知识,教师只是起到通过科学的教学方法和手段帮助学生积极主动完成知识建

构的辅助、指导作用。

3 运用建构主义理论构建程序设计基础的新型教学结构

3.1程序设计基础的传统教学结构

程序设计基础的传统教学结构是以教师为中心,教师讲、学生听,主要靠教师向学生灌输知识,作为认知主体的学生在教学过程中自始至终处于被动状态,难以发挥其主动性、积极性。这样的教学,既不能保证教学的质量与效率,又不利于培养学生的发散性思维、批判性思维和创造性思维,也不利于创造型人材的成长。在程序设计基础的具体教学内容安排上,过于注重语句、语法和一些细节,基本上是以高级语言自身的体系为脉络展开满堂灌式的讲解,没有把逻辑和编程解题思路放在主体地位上;对如何分析问题和解决问题启发和引导不够,对学生的编程、上机解题的能力训练不够,直接导致学生普遍反映该课程枯燥难学,而且学过之后,不能用来很好地解决实际问题。在教学评价上,考试是“指挥棒”,它对教学目标、教学过程有着较大的负面影响,许多学生就是为了通过考试而学,学习过程中表现得十分被动,教师为了合格率而教,教学效果自然不好,也就更谈不上学生创造思维、创造能力的培养了。

3.2运用建构主义理论建构程序设计基础的新型教学结构

运用建构主义理论改革传统的教学结构,构建程序设计基础的新型教学结构,可以从根本上提高教学质量,真正培养和提高学生的计算机应用能力、实际操作能力,更有助于他们的创造性思维和创造性能力的发挥。

3.2.1构建程序设计基础的新型教学模式

运用建构主义理论构建程序设计基础的新型教学模式就是要强调以学生为中心,将学生视为教学主体,设计和安排教学首先考虑学生的认知规律和学习特点,并在具体的教学过程甚至每一个环节,都顾及到学生的实际情况,最大限度地激发学生的学习兴趣,帮助学生形成学习动机;通过创设符合教学内容要求的情境和提示新旧知识之间联系的线索,帮助学生建构当前所学知识的意义;为了使意义建构更有效,教师应在可能的条件下组织协作学习(开展讨论与交流),并对协作学习过程进行引导,使之朝有利于意义建构的方向发展,最终引导学生实现主动学习,创造性地学习。有了这样先进的教学理念,程序设计基础的教学内容安排就更趋于合理:以强调动手实践、上机编程为切入点;以任务驱动方式,通过实例讲授程序设计的基本概念和基本方法;并将授课重点放在程序设计的思路解析上,即在C/C++语言的环境下,针对问题进行分析,构建数学模型,理出算法并编程实现,努力提高学生分析、解决问题的能力,从中激发他们的创新意识,锻炼他们的创新精神,培养他们的创新能力。为此,在日常的教学过程中,我们采取了如下的细化方案。

(1)采用双语教学

程序设计基础的课堂教学采用双语(英语和汉语)授课。程序设计所选用的计算机语言(如C/C++)与自然语言(英语)很相似,采用双语教学便于学生对计算机语言的理解和掌握,有利于进一步学习程序设计。教师通过适时、必要的双语讲解和提示,启发和引导学生充分利用大学英语的语言背景,站在语言学习的基点来完成计算机语言及程序设计理论意义的建构,为顺利实现与计算机的真正交流打下坚实的理论基础。在此期间,学生作为主体直接参与教学,“外化”已学过的英语知识,并不断产生正迁移,自己发现规律、自己去纠正和补充片面的认识,进而完善程序设计知识的建构;因此,学生的学习兴趣和学习热情、主动性和建构性不断被激发,发散、逆向等创造型思维得以孕育和培养。学生完全是在一种“探索与发现”式的学习过程中,去积极主动地建构自己的计算机语言和程序设计知识。

(2)强化学生动手实践

强化学生动手实践贯穿程序设计基础的整个教学。教师明确告诉学生:程序设计是高强度的的脑力劳动,不是听会的,也不是看会的,而是自己练会的。在整个教学中,始终让学生直接参与思考、直接动手操作,鼓励和支持他们在亲自参与的实际操作中发现问题、解决问题,并积极启发和引导学生把当前学习内容所反映的事物尽量和自己已经知道的事物相联系,并对这种联系加以认真思考,最终用探索、发现的方法建构程序设计知识的意义。例如,每节课2/3的时间,学生都在教师的鼓励和支持下,积极动脑去参与具体的实际操作,教师既不是简单地指出学生的错误操作,也不是简单地解答学生的提问和要求,而是启发和激励他们进行个性化的学习,让学生自己积极主动进行所学知识意义的建构,最大限度地提高每一位学生的学习效率。除此之外,教师可将一些有较好编程基础的学生组织起来,因材施教,引导他们进行探索式的研究性学习,让他们继续提高,同时还让他们担任“辅导员”,指导和帮助其他同学解决所遇的问题,通过“自我协商”与“相互协商”,提高建构意义的效率和质量,开拓学生的创新性思维。这期间,教师始终是教学过程的组织者、指导者、知识建构的帮助者、促进者;学生则是积极、主动、快乐的学习者。

(3)培养理性思维,进行理性实践

有的学者认为:

程序设计=计算机编程语言+数据结构+算法

程序设计就是把用户解决问题的方法思路(数据结构和算法)用计算机能够读懂的语法格式表达出来,并通过运行来完成用户问题的解答。计算机是由人发明的,是“人类通用的智力工具”,它的“思维模式”完全是人类思维模式的反映。因此,在程序设计基础的教学中,教师有意识地将人的思维与程序设计的编程算法一一对照,引导学生不断寻找两者间的联系,理性思维,从而积极主动地建构起程序设计编程算法的理论和规律,并指导自己进行理性实践。

例如,在课堂教学中,针对一些理论知识,如计算机语言的语法结构及程序设计的算法等,教师可以利用5~10分钟的时间,通过精炼、简短的CAI双语课件演示和讲解,然后分别对比自然语言和人的思维,由感性认识上升到理性认识,启发他们通过理性思维递推和建构起计算机语言的语法结构;面对一些程序设计的经典实例,同样对照人的自然思维,结合一些数学知识,引导他们理性地总结和建构出程序设计编程算法的理论和规律,进而在具体的编程实战中举一反三,进行理性实践。教师平时比较注意对学生学习方式的正确引导,让他们明白:理论很重要,动手实践更重要。要在理论指导下,动手动脑、有条有理地进行实践。

因此,学生经过这样的理性思维和理性实践,掌握了程序设计的技巧和方法,成功地解决了具体问题,获得了成就感,进而对程序设计产生兴趣,真正克服了学习程序设计的畏难情绪,学习起来也会更加从容。

(4)培养良好的编程习惯

程序除了写给自己看,还要交流,良好的编程风格可以提高程序的可读性、规范性、通用性。在日常教学中,教师应该注意对学生这方面习惯的培养。比如,教师可通过规范、严谨的教学课件展示声明变量加注释,程序构思有说明,通过分析和调试典型的编程实例,让学生学会有效地编写程序、调试程序、优化程序,并对程序的运行结果作出正确与否的判断和分析,从而达到对学生良好编程素质的培养,也有助于学生严谨治学精神的塑造,这是建构主义理论对教师在教学中进行学习情景设计的要求。

(5)培养和提高学习能力,创新能力

程序设计基础是培养大学生学习能力、创新能力的大课堂。程序设计是一门实践性极强的计算机学科,所学内容与要求实践的操作完全一致。因此,适当安排学生自学,有助于提高学生的自学能力。网络平台的搭建为学生提供了一个较好的学习环境,为此,教师在教学期间可以不时地设计一些能够调动学生学习积极性的有关程序设计的最新问题,鼓励他们通过网络渠道学习和提高自己的程序设计能力,而且通过上网可以提高他们获取信息、处理信息和交流信息的能力,有助于培养他们的批判性思维和创制性思维[4]。

总之,经过近几年程序设计基础的教学实践证明:这种新型的教学结构产生了较好的教学效果,学生不仅掌握了程序设计的编程方法和技巧,还养成了良好的编程习惯,同时又培养了学生的创新思维能力和较强的动手实践能力,得到了广大学生的赞同。

3.2.2 构建程序设计基础的新型教学评价模式

运用建构主义理论构建程序设计基础课程的新型教学评价模式,主张评价不能仅依据客观的教学目标,还应该包括学习任务的整体性评价,学习参与度的评价等,即通过让学生去实际完成一个真实的任务来检验学生学习结果的优劣。而建构主义主张学习是自我建构知识意义的过程,因此,源于建构观的评价并不强调使用强化和行为控制工具,而较多使用自我分析和元认知工具。因此,程序设计基础的新型评价模式既便于学生及时了解自己学习的进展情况、存在的问题等,以便能够及时弥补知识漏洞,学生自主学习的积极性、创造性被调动和激发,同时又能够帮助教师及时调整和改进教学工作,最终促进教学质量的提高。

(1)学生学习效果的评价

考试是检验学生学习效果、评价学生学习业绩的重要环节。开课之初,我们就提醒同学:课程的考核方式是以上机考试取试,考试结果也由计算机评判,对就是对,错就是错,不纸上谈兵,不考死记硬背的东西。这样对学生的日常学习有一个正确的引导。然而,考试只是手段,不是最终目的,我们采用设计合理的阶段测试系统,对学生各阶段的学习情况进行跟踪测试,测试结果随机给出,学生可以根据结果随时调整和纠正这一阶段的学习方式和方法,及时查漏补缺,进而积极主动、创造性地完成学习。

(2)教师教学效果的评价

设计开发科学的程序设计考试系统,不仅可以实现考试功能,同时还可对考试结果进行评析,针对各位教师所教班级的考试结果给出相应的评估报告,实现学校对教师教学情况的监控,进而对教师的教学予以指导,以提高程序设计的教学质量,而教师本人也可根据评估报告及时调整自己的教学计划和教学设计,进而摸索出符合教学规律、更能培养学生创造性思维和能力的教学方法,最大限度地提高教学效果。

4 结束语

不论是从国际还是从国内的教学情况看,当前各级各类学校深化教学改革的关键都在于能否打破长期以来统治他们课堂的传统教学模式。为了改变这种状况,国内外许多教育工作者、教育学家、教育技术专家多年来从理论与实践两个方面作了大量的研究与探索,建构主义理论正是这种努力所取得的主要理论研究成果。广大教师在具体的教学实践中如何理论联系实际,将之转化成有效的教学方法和手段,还需要不懈地探索和开拓,最终才能使建构主义理论成为我们深化教学改革的指导思想和批判传统教育思想与教学观念的锐利武器。

参考文献:

[1]何克抗,李文光.教育技术学[M].北京:北京师范大学出版社,2005.

[2]冯忠良,伍新春,姚梅林,等.教育心理学[M]. 北京:人民教育出版社,2002.

[3]张建伟,孙燕青.建构性学习[M]. 上海:上海教育出版社,2004.

第10篇

关键词:程序设计课程;实验教学改革;应用型本科院校;“双主”教学设计;项目教学法

当前,应用型本科教育已成为高等教育体系发展完善的重要方面。与研究型本科教育所采取的“精英教育”思想不同,应用型本科教育的价值选择已经从社会本位过渡为市场本位,强调要从未来的人才市场需求出发,实现高等教育的供给与就业市场需求之间的平衡,实现学术性教育与职业性教育之间的平衡。

程序设计课程是目前国内大多数高校为本科生开设的计算机基础课程,不但有较强的理论性,更具有较强的实践性。实验教学效果的好坏直接影响到整体的教学质量和效果。在应用型本科人才培养背景下,程序设计类课程的实验教学对于培养学生的思维能力、分析能力、实践能力以及创新能力具有重要意义。

本文针对程序设计课程实验教学的特点,结合应用型本科教育的人才培养目标,探索通过改革程序设计课程的实验教学模式、内容和方法,以提高实验教学的质量和效果。

1 面向应用型本科教育的教学设计

目前,应用型本科教育正处于发展初期,其相关的理论体系仍有待实践的探索和验证。

1.1 教育信息化的发展

教育信息化大致经历了以下三个发展阶段:①CAI(computer-assisted instruction,计算机辅助教学)阶段(20世纪60年代初~80年代中后期),其特征是利用计算机辅助教师开展教学活动,CAI课件多以演示型为主。②CAL(computer-assisted learning,计算机辅助学习)阶段(20世纪80年代中后期~90年代中后期),其特征是辅助“教”转向辅助“学”,利用计算机作为辅助学生学习的工具,如搜集资料、制定计划、辅导答疑、对等讨论和交流等。③(ITCfintegrating IT into the curriculum,信息技术与课程整合)阶段(20世纪90年代中后期开始到现在),其特征是着重利用信息技术构建理想的学习环境、全新的学习方式与教学方式,从而彻底改变传统的教学结构与教学模式。

1.2 建构主义学习理论

建构主义学习理论是一种“以学生为中心”的自主学习理论,最早由皮亚杰(J.Piaget)提出。但是直到20世纪90年代以后,由于多媒体与网络技术的快速发展,建构主义学习理论才得以在世界范围产生重大影响,进而成为IITC阶段实现“信息技术与课程整合”的重要理论基础。在信息技术支持的教学环境下,通过建构主义理论的正确指导,可以有效地培养青少年的创新精神、实践能力与合作精神。

1.3 “主体-主导”教学设计

“以学为主”的教学设计有利于促进学生自主探究和创新精神培养,但不利于系统传授与掌握科学知识。而传统的“以教为主”的教学设计恰好与之相反。所以,将“以学为主”的教学设计和“以教为主”的教学设计结合起来,形成了融合教师的“主导性”和学生的“主体性”的“双主”教学设计。在“双主”(即“主体-主导”)教学设计下,学生不是被动地接受教师所传授的知识,而是在老师为其设置的学习情境下,提出问题,开展自主的学习,从而提高了学生的学习积极性。教师通过对学习者的学习活动进行有效的组织,来体现教师的主体性。以上特点正好适应于应用型本科程序设计课程的实验教学的改革需要。

1.4 项目教学法

项目教学法是由美国教育家凯兹博士和加拿大教育家查德博士共同创建的一种以学生为主的活动教学法,它以项目驱动教学,学生在项目教学中以探索性学习为基础。根据应用型本科的教学要求,融合企业的典型案例,重构当前程序设计课程的实验教学项目,将项目教学法系统地应用于实验教学过程,将有利于培养大学生的学习能力和应用实践能力。

2 程序设计课程实验教学的现状

长期以来,国内高校的程序设计课程实验教学环节存在严重不足,主要表现在:①现有的封闭型实验教学体系存在结构上的缺陷,学生的学习主动性无法充分发挥;②实验教学成为理论教学的附属,实验内容陈旧,与工程应用与实践相脱离;③实验方法落后,大多数实验只是验证理论知识,学生缺乏开展创新性和创造性实验活动的平台:④实验管理水平落后;⑤实验教学人员的专业素质参差不齐。

以上不足制约了学生的思维能力、分析能力、实践能力及创新能力的发展,使应用型本科院校人才‘培养目标的实现变得困难,从而亟需对程序设计课程的实验教学进行改革。

3 程序设计课程的实验教学改革

当前,以Internet为代表的网络技术和以Web2.0为代表的软件应用技术的迅速发展,使程序设计课程的“在线实验”和“自主学习”成为可能,通过应用先进的教学设计思想改革现有的实验教学模式、教学内容和教学方法,将有利于应用型本科院校程序设计课程实验教学的改革措施付诸实践并不断完善。

3.1 应用“双主”思想重构实验教学模式

目前,国内应用型本科院校开设了多门程序设计课程,以我校为例,主要包括高级语言程序设计(c)、面向对象程序设计(C++)、可视化程序设计(C#)和Web程序设计()等。针对当前实验教学的不足,我校基于“双主”教学设计思想,重新制定一套适用于程序设计课程的开放式实验教学模式,如图1所示。该模式利用网络实验教学形式,面向Web2.0环境构建了一套支持个性化实验教学、有利于培养学生自学能力与实践创新能力的综合实验教学平台;形成实验教学的“闭环反馈”,贯穿学生的实验前预习、实验中协作和交流、实验后总结这三个过程,调动实验教学过程中学生作为“双主体”之一的积极性,并充分发挥教师作为实验活动组织者和参与者(非领导者)的作用。从而,适用应用型本科教育“培养实践能力强,富有创新精神的高层次应用型人才”的需求。

3.2 融合项目教学法完善实验教学方法和内容

我校结合应用型本科教育的自身特点,以及IT企业发展的实际需求,在综合实验教学平台中构建了产学合作的教学环境,应用项目教学法完善程序设计课程的现有实验教学方法和内容。从情境、任务、组织、过程、资源和评价等方面研究实验教学方法的设计要素;从情境设置、操作示范、独立探索、确定项目、协作学习和学习评价等方面,给出实验教学的一般教学步骤的指导性意见。通过校企合作,跟踪IT企业的最新发展,按照IT职业活动的特点及要求设计 教学内容;根据实际的工作任务,设计围绕工作需求的新型实验教学项目。

以Web程序设计课程的“网上商城开发”实验项目为例,其教学设计如表1所示。

3.3 构建面向Web2.0的综合实验教学平台

根据“双主”实验教学模式和项目驱动的实验教学特点,实现了一个Web2.0环境下,支持“在线实验”和“自主学习”的程序设计课程实验教学平台,该平台以著名的开源课程管理系统Moodlele为基础平台,通过集成在线评判系统和虚拟实验室模块,可为学生提供个性化实验环境,支持开展创新型实验教学活动,并可实现应用实践案例的仿真运行。学生通过Internet可远程访问该平台,实现“实验前在线预习、实验中协作和交流、实验后提交总结报告”。教师可动态更新与管理实验项目,从而满足基于产学合作的实验教学环境中实验项目变化频繁的需求。系统运行界面如图2所示。

以Web程序设计课程为例,在教学过程中,Moodel系统的许多功能模块(如Blog、Wiki、投票、聊天室、论坛、作业、测试等),均可以直接成为Web程序设计课程的实验教学案例。通过精心设计实验教学内容,从而,使学生实现了“用中学”和“学中用”。以“网上商城开发”实验为例,系统运行界面如图3所示。

通过利用Moodle的“资源”和“活动”,教师可完成实验教学设计:①设置“聊天”活动:允许学生在实验过程中进行实时交流和沟通;②设置“投票”活动:允许学生评选“网上商城”动态分页技术的最优实现方案;③设置“Wiki”活动:以项目小组模式实现Serum中的“电子白板”支持:④设置“文本页”资源:设计“实验目标”项目;⑤设置“链接到文件或站点”资源:设计“实验说明”、“实验指导书”、“案例展示”、“历届优秀作品展示”项目,这些项目均支持以Flash形式播放特定文件;⑥设置“作业”活动:以“离线活动项目”形式实现“实验作业”的提交,以“高级文件上传”形式实现“实验报告”的提交。

第11篇

关键词:独立学院;C++程序设计;教学;任务驱动

中图分类号:G642文献标识码:A文章编号:1009-3044(2008)25-1484-02

Teaching Researches on the C++ Programming Course to Students Major CS in Independent Colleges

LUO Ai-jun

(Computer Science College of Yangtze University, Jingzhou 434023, China)

Abstract: Programming is a very important basic course to students major computer science, and the point is much more important in those independent colleges which pay more attention to training the students' practice ability. The paper aims at lots of problems exposed during the C++ Programming teaching in independent college, analyzes these problems and brings up some corresponding proposals.

Key words: Independent College; C++ Programming; Teaching; Task_driven

1 引言

随着社会的飞速发展,在高等教育日渐大众化的今天,用人单位对人才的要求也越来越高。各大专院校也因此纷纷即时根据社会的需求调整其人才培养目标,其中的独立学院把其办学思想定位于培养大批社会急需的应用型人才,非常强调学生动手实践能力的培养。

程序设计长期以来一直是大学工科各专业的一门必修课程。尤其对于计算机相关专业而言,程序设计学习情况的好坏,对计算机相关专业后续课程的学习将会产生较大的影响。目前,无论是搞开发还是搞研究,对使用的程序设计语言有同样高的要求:要求能有较好的可靠性,高效率,可以在不同平台上移植,有尽可能多的标准化语言内容,支持数据一致性,支持程序描述的简洁与清晰,风格自然[1]。这些都是C++的外在特点,高校计算机相关专业大多采用C++作为程序设计教学语言,全国计算机等级考试也把C++作为考试的主要语种,因此做好这门课程的教学工作具有较大的现实意义。但目前教学工作中普遍存在教师觉得不好教,学生觉得不好学的问题,本文针对教学中出现的问题进行思考分析,并提出了相应的解决方案。

2 存在的问题

目前在教学过程当中主要存在以下几个方面的问题:

(1)教学目的与学生的需求存在偏差,学生学习兴趣较大,但信心不足。

C++程序设计教学的目的是向学生介绍计算机程序设计的基本知识。让学生掌握C++基本语法及面向对象程序设计的基本方法与编程技巧;让学生了解常用的算法和数据结构知识,能根据给定的算法,选择合适的数据结构并编制出相应的程序。同时也为本专业后续其他课程的学习打下坚实的基础。

对此学生们的需求又是什么呢?博客上的调查结果反映:约75%同学希望通过学习本课程能开发出一款实用小软件。而我们课堂程序设计教学中甚至没有涉及到WINDOWS编程,学生学完了以后还是不能动手写程序。学生的需求与上述教学目的存在一定的偏差。

大部分同学对本课程兴趣大,学习积极性高。但在学习一段时间后,随着内容的深入,难度的增大,便有同学出现了畏难情绪,甚至认为C比C++简单,明显地缺失信心。

(2)教师教学内容和方法单一,师生互动不明显。

教师教学停留在传统的传授课堂知识,对“师者,传道、授业、解惑者也”的理解和认识尚未进一步更新。师生在课下的沟通互动不明显,导致学生在学习过程中遇到的问题不能够及时地得到解决,这在很大程度上,也影响到学生学习的主动性。随着科技创新和知识更新速度的加快,我们的教学内容和教学方法也不能停留在课堂教学45分钟“老师讲学生听”这一旧的模式和旧的层次上。同时,我们面对的每一个学生基础不尽一样,学习理解知识的能力也不同,如果采用单一的教学方法,很显然是违背“因材施教”的原则的。

(3)没有充分发挥实验教学的优势。

现在各高校大部分机房都已连入INTERNET,而互联网络对学生是一柄双刃剑。如果上课合理利用网络检索所需资源,则有利于学习和掌握知识;反之,如果上课时间利用网络看电影、听MP3、玩小游戏,或者甚至相互拷贝作业,则不仅没有任何优势可言,反而是极有害于教学的。同时“互联网”和“程序设计”二者谁对学生们的吸引力更大,这一点是不言而喻的,每次上机人数众多,实验指导教师监控管理措施不易实施。

教师在实验课上把精力放在指导学生调试程序上。作为初学者,学生们在程序调试中的问题层出不穷,只能被动地等待老师帮忙解决。有时教师还不得不重复解决相同的问题,课堂效率低下。传统的“一问一答”的方式,已经不再适合目前的实验教学。

因此,在网络技术越来越发达的今天,如何重新让机房、让实验课发挥其应有的作用是摆在每一位计算机教育者面前殛待解决的问题。

3 解决的对策

3.1 选择一本合适学生阅读的经典教材

要选择一本好的教材,这看起来是一件很简单的事情,似乎也不那么重要,因为现行各作者各出版社的教材上的内容大多相差不大。的确,这是事实。然而,不光授课教师需要认真咀嚼教材,学生们也要认真阅读教材。教师在讲台上讲授,同时还要求学生能够课下自己阅读教材上的相关内容。国内引进的许多多影印版教材,在每一章节的课后都列出若干的参考文献,引导有余力有兴趣的学生去阅读[5],既加深了学生对教材的理解,也拓展了学生的视野。一本好的教材,不一定是通俗读物,需要有一定的难度。过高的难度可能让学生望而生畏,但适当难度则可能激发学生更大的探索的兴趣。

3.2 加大学生的兴趣,增强学习的信心

兴趣是最好的老师!如何培养学生对程序设计的兴趣?当他们亲自感受到计算机程序设计的对当今社会的巨大影响力,便可能对之产生浓厚的兴趣。此外,还要让他们认识到学习程序设计目的在于培养学生用计算机解决生产生活中的一些问题,当然首要就是本专业后续其他课程学习过程中的实际问题的能力。

不是说兴趣高就意味着会编程了。眼高手低是学习过程中常出现的问题:他们对老师演示的内容都认为很简单,但让自己做却无从下手。有意识地锻炼学生动手编程能力,并引导他们取得成功,从成功中获取更大的成就感和自信心,这将是他们在程序设计道路上继续前进的巨大动力。例如,引导学生利用已学过的知识,编程实现简单的数字图像处理过程。虽然开始时会让大家觉得有困难,比如其中大量陌生的库函数让人望而生畏,有时可能自己还要写一些自定义函数。但只要做好指导工作并给予适当地鼓励,则不仅能激发学生的兴趣,还能巩固所学的知识,而且可以在实践中让他们的思维能力得到提高、编程能力得到锻炼、创新能力得到增强。

教师要付出足够的耐心,想方设法提高学生的兴趣和学习热情,培养和提高他们的创新能力,增强学生们对学好本课程的信心。

3.3 把握教学重点,灵活采用教学方法,加大师生互动

算法设计是程序设计的核心。我们要将教学重点从C++基本语法转移到算法设计上。有针对性地设计能综合运用已学和将学相关知识点的实例,课程上多采用案例教学。即使是同一本教材,同一个算法案例,只要我们善于挖掘,也可以推陈出新,找出更易于学生理解和接受的讲授方法。

针对不同的教学内容,更要灵活采用教学方法。常用的教学方法有:类比教学法、启发教学法、分步教学法、任务驱动法[4]等。而其中任务驱动法在C语言程序设计教学中运用较多、效果较好的一种。

除了传统的师生互动方式外,我们还可以采用其他更灵活有效的方式。考虑到学生们课外在网络上花费的时间较多,我们就可以充分利用学校的精品课程网站的网上答疑论坛子系统,还可以利用各大门户网站提供的免费博客系统,二者都可以较好地解决课堂45分钟以外的师生互动问题。在实际教学中,我们利用TOM BLOG进行师生沟通,也取得了很明显的效果。

3.4 加强上机实验指导,制订上机任务,保证上机效果

(1) 程序设计课程本身实践性较强,必须安排足够的上机学时。同时还要精心设计每一次实验内容,让学生每一次实验都有明确的上机目的。

(2) 学生明确任务以后,应首先仔细思考,形成思路,再将思路描述成为C++代码写到实验报告纸上,待形成完整的程序以后再输入计算机中进行编译。而不是一边想,一边输入代码。这样既提高了效率,同时也提高学生思考问题的能力。

(3) 针对学生在编译,链接过程中出现的错误或警告,教会学生使用调试工具。学生在调试中遇到的疑点和难点,及时给予必要的适当指导,主要是教给学生科学有效的调试方法,例如等价类划分法、边界值分析法、安插测试语句等。

(4) 实验课结束时,每名学生必须上交比较规范的纸质实验报告(其中除包括程序的源代码,输入数据,程序输出结果外,还应重点包含程序调试过程,以及本次实验体会),通过以上举措来保证学生完成实验任务。课程结业考试也必须包括学生上机编程能力考核。

(5) 课程结束以后,分组安排2周的课程设计。题目要具有一定的综合性和较强的实用性,如学生信息管理系统等。要求学生经过需求分析,软件设计,编码,测试等软件开发的各阶段,最后提交一个软件原型及相关文档。通过课程设计实践,提高学生的软件开发水平和合作能力,同时,还可使学生在以后的学习过程中,自觉将计算机技术应用到生产和研究过程中,真正做到学有所用。

在上机实验环节,教师要认真做好指导和督促,减少互联网络等对学生注意力的不良干扰,让学生在规定时间内完成指定任务,从而保证实验教学效果。

4 结束语

本文提出了近几年在独立学院计算机专业《C++程序设计》教学过程中出现的问题,进行了思考和探索。对提出的方案在独立2006,2007级计科、网络专业本科学生中实施,较好地激发了学生的兴趣,调动了学生的学习积极性,增强了学生的自信心,日常教学和计算机等级考试都取得了很好的效果。以上事实证明,只要教师教学目的明确,教材理解深入,教学方法灵活得当,师生加大互动,学生是可以轻松学好C++程序设计的。

参考文献:

[1] 钱能. C++程序设计[M]. 北京:清华大学出版社,2005.

[2] 刘晓锋, 吴亚娟. 计算机专业《C语言程序设计》教学与教学改革[J]. 四川师范学院学报, 2003(24):34-36.

[3] 孔垂柳,田地. 基于程序设计思想的C语言教学方案[J]. 吉林大学学报(信息科学版) , 2005,(S2):2.

第12篇

笔者下面以VB课程设计为例,浅谈课程设计的一般过程。

(一)精心选题

精心选题,力求既要结合书本的知识,又要结合学生将来可能遇到的实际工作需要。

课程设计题目不宜过大,不切实际,使学生无从下手。题目要使学生在自己通过搜集资料及在指导教师的指导下能够完成,使他们有成就感,增强他们学习的自信心。实践证明题目多、可操作性强、趣味性强、实用性强,对开阔学生的视野、丰富学生的知识、提高学生的实践能力有极大的好处。

我考虑到VB课程设计的特点以及每个学生不同的兴趣爱好精选了十几个题目,让学生分组设计。

如文字编辑系统,学生都学过Word等文字处理软件,对它有较深的体会,那么文字处理软件是怎么实现的呢?通过这个题目可使学生把以往所学专业知识和VB有机结合起来。又如古诗欣赏系统,是专门为一些对文学感兴趣的学生而设置的,这样的题目设计能够调动他们的积极性。除了以上题目外,还备以下题目:睡眠测试系统、设计计算器、设计电子贺年卡、窗体背景图案系统、设计一个收款计算程序、密码检测、数据流动等。

(二)合理布置题目

在布置题目时,要根据具体情况进行处理。可采用分组的形式进行,避免多人同时做一个题目,导致重复劳动或抄袭现象的发生。

布置题目时采取先在黑板上以文字形式布置题目,让学生先独立思考,然后再在机器上布置题目即在机器上运行程序,让学生直接看到运行后的效果。另外,教师一定要将每个题目都自己先完成,给出具体结果,使学生具有感性认识,增强他们的自信心。

在软件开发中,实际上用户要定制一个软件时给出的往往只是文字或表格要求,即用户需求,学生要将用户的需求用计算机程序设计的形式表达出来,这就涉及到软件开发的知识。在课程设计过程中我有意识地将软件开发工程中的一些方法传授给学生,使他们了解软件开发的一般步骤和过程,这样可以少走弯路。

在设计过程中,教师要尽量要求学生学会搜集资料,充分利用现代化工具,如上网搜集资料,到电脑公司去咨询,到相关部门去了解情况。这样有利于学生掌握第一手资料。

(三)操作要求

按照软件开发技术的原则和方法进行课程设计,并采用结构化或面向对象程序设计的原则和方法。对于课程设计可酌情选择以下过程及文档中重要的几个即可:①问题定义。②可行性研究。从技术可行性、经济可行性、操作可行性来研究系统是否可行。③需求分析。确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。④总体设计。确定系统的具体实现方案,确定软件的结构。⑤详细设计。设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。⑥编写代码(程序)。用某种程序设计语言书写的程序。⑦软件测试、调试运行。将所编写好的程序和有关原始数据输入到计算机中,不断地对其进行调试运行(修改程序中存在的语法错误和逻辑错误),直到所设计程序达到设计要求。这部分工作量往往占软件开发总工作量的40%。⑧软件维护。此阶段是软件生命周期的最后一个阶段,它处于系统投入生产性运行以后的时期中,因此不属于系统开发过程(此步骤可省略)。软件开发结束时,要对软件评价。可从产品修改、产品转移、产品运行三方面评价。⑨编写文档。一般情况下,软件系统有如下文档:可行性研究报告、项目开发计划、需求规格说明书、概要设计说明书、详细设计说明书、用户操作手册、测试计划、测试分析报告、开发进度月报、项目开发总结报告、程序维护手册、软件问题报告、软件修改报告、数据库设计说明书。