计算机程序设计论文汇总十篇

时间:2023-03-21 17:01:45

计算机程序设计论文

计算机程序设计论文篇(1)

2实验对象与分析方法

实验对论文作者所授课的广西师范大学物理教育专业4届5个班本科生,其中1997级81人、1999级78人、2000级65人、2001级1班59人、2001级2班55人,选取大学一年级的力学、热学的期考成绩,力热课程开设之后的计算机程序设计课程的段考、期考成绩。利用相关系数法反映计算机程序设计课程成绩与力学、热学课程成绩之间线性关系的密切程度[7,8]。

3实验结果

分析所选取的计算机程序设计课程成绩比例分布,考虑优秀、不及格两端的学生人数相对较少,进行相关分析的误差较大,而良好、中等、及格分数段的学生人数较多,因此将分数S分为优良分数段(S≥80)、中等分数段(70≤S<80)、及格与不及格分数段(S<70)三段,三段中的学生人数相差不大,分别计算计算机程序设计课程成绩全部、优良分数段、中等分数段、及格与不及格分数段与力学、热学课程相对应成绩的相关系数,结果见表1、表2。可以看出,表中所有相关系数均为正值,除个别外主要分布在0.40~0.80之间,绝大部分相关系数均大于0.45,大于0.8的相关系数很少,没有大于0.9的相关系数,说明力学、热学课程成绩对计算机程序设计课程成绩有一定的影响,但影响并不是特别显著,有一定的正相关性,但相关性并不是特别高,计算机程序设计课程成绩还受其它因素的综合影响。

计算机程序设计论文篇(2)

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

1编译知识在计算机学科中的作用

自从20世纪50年代中期诞生世界上第一个高级语言编译器――Fortran语言编译器以来,编译技术不断进步,已经成为计算机科学中发展最迅速、最成熟的一个重要分支。自1966年以来的所有55位图灵奖获奖者中,有近1/3的科学家是因为在程序设计语言和编译方面的成就而获得该项奖励,可见程序设计语言和编译的发展集中体现了计算机科学发展的重要成果与精华。计算机应用能发展到今天,编译技术的发展有着极其重要的、不可替代的作用。

五十多年以来,随着编译技术的发展,有关编译原理和技术的内容被逐步引入到了计算机专业本科教学中。从早期各阶段ACM和IEEE的计算机专业教学计划,到近年ACM和IEEE联合制定的CC 2005,再到我国教育部高等学校计算机科学与技术教学指导委员会2006年编制的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》,直至最新的ACM和IEEE联合制定的CS2008,都把有关编译原理和技术的知识作为重要教学内容列入。目前,我们编译原理课程的教学内容覆盖了CS2008体系中程序设计语言领域、算法和复杂性等领域的多个知识单元。

2编译原理课程的理论性和技术性特点

编译程序的构造原理和技术可以说是计算机科学技术中理论和实践相结合的最好典范。在许多课程的教学中,经典理论和先进技术之间的联系往往缺乏具体而形象的例证,而“编译原理”课程在这方面具有得天独厚的优势。形式语言和自动机理论为编译程序的设计提供了坚实的理论基础,正是在科学理论的保证下,才形成了一系列先进的编译程序设计方法和工具,使得编译程序的构造具有很高的系统性和自动化程度。例如,正是有了有限自动机的经典理论,才有了LEX这样的高度自动化的词法分析器的自动产生器;正是有了Knuth提出的LR分析方法,才有了YACC这样的高效的语法分析器产生器,将程序员从繁琐的代码编写中解放出来。编译课程的教学既要强调经典理论在计算机科学中的重要作用,又要注重介绍利用这些基础理论来设计和构造编译程序各模块的先进方法及工具,可以具体形象地说明经典理论与先进技术的关系。理论和实践相结合是“编译原理”课程的鲜明特色。

“编译原理”课程特别强调运用理论知识进行实践的能力和素质,以突出计算机专业人才培养的特色。“编译原理”是每个优秀的计算机专业人员必修的一门课程。通过编译程序这一具体的案例,学生可以综合理解和运用计算机的程序语言、操作系统和体系结构等各种软硬件知识,形成计算机专业人才特有的系统的专业知识结构。在系统学习编译的理论和技术的过程中,学生一方面对科学理论的基础作用有了充分的认识,提高了学习经典理论的兴趣,形成了较高的理论素养;另一方面,通过课程综合性的实践,分析或改进简单或复杂、原型级或产品级的各种编译程序或工具,也可以提高灵活运用理论知识、设计较大规模的软件来解决实际问题的能力。在课程的学习和实践中,学生可以深刻体会到理论学习的意义和动手实践的乐趣。

有许多人认为,如果今后不从事编译器的开发,编译知识就显得并不重要了――事实上并非如此。编译课程鲜明的理论性和技术性特点,使得这些知识对于计算机专业人员来说具有重要作用,甚至可以说是计算机专业人才区别于一般计算机人员的重要知识结构。对于将来从事编译系统设计工作的学生来说,编译课程的学习当然可以使他们掌握和理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,获得分析、设计、实现和维护编译系统的初步能力,打下坚实的能力和知识基础;而对于那些将来不从事编译器研制的学生来说,编译课程的教学对于提高他们对计算机系统总体认识也具有重要的意义。通过学习编译的理论和方法,学生可以提高对程序设计语言的设计与实现等知识的综合理解,而这些知识对于准确掌握程序设计语言,学习新的编程范型,理解程序,开发出正确的软件都是不可缺少的基础。图灵奖获得者Perlis教授的名言“To understand a program you must become both the machine and the program”就精辟地说明了这一点。此外,编译课程介绍的经典语言分析方法和工具,对于一些实用的工具和软件,如自然语言理解、网络信息处理、网络协议的分析与实现等领域的软件或工具的研制,都是很好的基础。更为重要的是,编译课程中介绍的一些经典的理论和方法,对于传授计算机科学研究的方法、训练学生的思维都是难得的生动案例。因此,不能把编译课程片面地理解成为一个介绍编译程序的课程,而应当把该课程的教学放在培养专业素质、训练思维的层面加以认识,特别是应当强调如何在编译的教学中培养学生的计算思维。

3计算思维及其在编译理论和技术发展中的作用

计算思维(Computational Thinking)是卡内基梅隆大学计算机科学系Jeannette M. Wing教授在2006年提出来的先进的教育理念,被认为是近十年来产生的最具有基础性、长期性的学术思想,并将成为21世纪计算机科学研究的热点。

计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,它包括了一系列广泛的计算机科学的思维方法。Wing教授认为,计算思维不仅仅属于计算机科学家,它将和阅读、写作和算术一样,是21世纪每个人必须具备的基本技能。计算思维已经在其他学科中产生影响,而这种影响在不断拓展和深入。例如计算生物学、计算博弈理论、纳米计算和量子计算等新兴研究领域的发展正在深刻改变生物学、经济学、化学和物理学领域研究的思考方式。

典型的计算思维包括一系列广泛的计算机科学的思维方法:递归、抽象和分解、保护、冗余、容错、纠错和恢复,利用启发式推理来寻求解答,在不确定情况下的规划、学习和调度等。显然,这些计算思维方法都可以在许多编译理论和技术的发展中找到痕迹,很多编译成果正是运用计算思维的结晶。例如,抽象和自动化是计算思维的两个重要手段,也是编译理论和方法产生的基础。编译课程中介绍的语法知识描述、词法分析、语法分析、属性文法、乃至优化等知识点,都体现了面向具体应用、从实际问题中抽象出科学问题并运用科学的思维方法进行问题求解的思想,其成果根植于坚实的经典理论,并应用于实践,以推动技术的进步。因此,在编译课程的教学中,结合编译理论和技术中经典的案例培养学生的计算思维,是一条值得探索的途径。

4结合编译案例的计算思维培养

如何培养“计算思维”,是目前计算机教育界非常关心的问题。例如,在计算机专业的教学中,有些学校在专业核心课程中融入计算思维的培养;在非计算机专业的教学中,对计算机导论类或程序设计类的课程进行改革,针对学科交叉的需求,从教学内容和方法上进行改革,培养学生的计算思维。总体来说,计算思维的培养应该贯穿在大学教育的全过程,甚至在大学之前的教育中。计算思维对于计算机专业的人才培养提出了新的要求,我们必须在专业课程教学中结合计算思维的培养。

编译课程的知识体系完整,既有经典理论成果奠定的坚实基础,又有在实践中发挥巨大作用的先进技术,其中很多知识点都为计算思维提供了很好的诠释和生动的案例。下面,我们从抽象、自动化、递归、问题分解和权衡等典型计算思维方法出发,探讨结合编译案例培养计算思维的可能途径。

(1) 抽象

“抽象”是科学研究的重要手段,也是计算机科学研究的重要工具。在编译理论和技术的发展中,正是运用“抽象”这一有力工具,才获得了一系列的重要成果。例如有限自动机、形式文法等都是重要的抽象工具,有了这些工具,才能够把握词法分析和语法分析等问题的本质,发现其中规律,最终形成一系列的自动分析方法。

(2) 自动化

将抽象思维的结果在计算机上实现,是一个将计算思维成果物化的过程,也是将理论成果应用于技术的实践。有限自动机、预测分析程序、算符优先分析、LR分析等编译经典方法,都是在抽象的基础上将知识和控制分离(即分析表加控制程序),从而获得了经典的分析工具,而这种知识和控制的分离也为分析工具的自动产生提供了可能。自动化的思维方法不仅体现在编译程序本身的工作机制上,更体现在编译程序的生成工具的研究和设计上。

(3) 递归

许多编译中的问题都具有明显的递归特征。运用递归思维解决复杂的问题,通常是对问题进行逐步化简,最后得到了一个规模非常小、非常简单、更容易解决的类似问题,将该问题解决后,再逐层解决上一级问题,最后解决了较复杂的原始问题。编译中的递归下降分析是最直观的对递归思维的运用,此外,基于树遍历的属性计算、语法制导翻译都是典型的递归问题求解。

(4) 问题分解

程序设计中的“自顶向下、逐步求精”的思想就是一种典型的问题分解的计算思维方法。运用问题分解这种思维方法进行问题求解,首先须做出对问题本身的明确描述,并对问题解法做出全局性决策,把问题分解成相对独立的子问题,再以同样的方式对每个子问题进一步精确化,直到获得对问题的明确解答。在编译程序的设计中,通过引入中间语言,将编译程序划分成前端和后端,就是一种典型的分解问题的思路。

(5) 权衡

“编译原理”课程是一门理论性和技术性都非常强的课程。理论研究重在探寻问题求解的方法,而在编译程序的设计和实现过程中,对于理论成果的研究运用又需要在能力和运用中做出权衡。这方面一个典型的例子是,我们知道,虽然高级语言的大部机制都可以由上下文无关文法来描述,但是上下文无关文法不能完全刻画高级程序语言的所有规范,有些语言机制甚至存在二义性。但是上下文无关文法的分析是高效的,所以我们在编译程序设计中依然采取上下文无关文法来描述高级语言语法,但是在具体实现时,通过改造分析表消除冲突、符号表操作、语义检查等手段,去实现上下文无关文法分析所不能完成的功能――这正是在具体实践中结合具体问题进行权衡的结果。

5结束语

计算思维的培养不是哪一门课程的教学能解决的问题。对于计算机专业教育来说,应当关注在各专业课程中的计算思维的培养,强调对各种原理和方法进行提炼,从思维方法的高度培养学生,使学生能够应用计算思维解决问题。大学计算思维的教育应贯穿于整个大学教育,做到学习期间不断线。

参考文献:

[1] Jeannette M. Wing. Computational Thinking[J]. Communications of ACM, 2006,49(3):33-35.

计算机程序设计论文篇(3)

中图分类号:TP31 文献标识码:A 文章编号:1006-4311(2013)09-0220-02

0 引言

随着计算机现代智能的高速发展,计算机已经完全融入我们的生活,甚至占据了重要领域,从国家核心科技到每个人生活的小细节,都离不开计算机的覆盖和使用。我们简单的在键盘上操作几个键,打出一系列符号命令,就能使计算机按照人类的要求,高速运行和进展,从而达到人力所不能达到的速度和正确率。

我们从小学习数学,数学是什么呢?数学是利用符号语言研究数量、结构、变化以及空间模型等概念的一门学科。数学,作为人类思维的表达形式,反映了人们积极进取的意志、缜密周详的逻辑推理及对完美境界的追求。数学更多的是一种抽象的概念,是一门重要的工具学科。人类利用抽象的概念及一些固定的定律形成理论,而脱离实际应用的概念并不是人类发展学习的初衷,而是利用它们来指导实际,化抽象为实体。而计算机就由此演化。1946年2月15日界上的第一台计算机诞生在宾西法尼亚大学,主要运用于高倍数的数学运算。时至今日,计算机直接能识别的语言仍然是1、0二进制代码。

1 计算机中所需要的数学理论

计算机学科最初是来源于数学学科和电子学学科,计算机硬件制造的基础是电子科学和技术,计算机系统设计、算法设计的基础是数学,所以数学和电子学知识是计算机学科重要的基础知识。计算机学科在基本的定义、公理、定理和证明技巧等很多方面都要依赖数学知识和数学方法。计算机数学基础是计算机应用技术专业必修并且首先要学习的一门课程。它大概可分类为:

1.1 高等数学 高等数学主要包含函数与极限、导数与微分、微分中值定理与导数的应用、不定积分、定积分及应用、空间解析几何与向量代数、多元函数微分法及其应用、重积分、曲线积分与曲面积分、无穷级数、微分方程等。各种微积分的运算正是计算机运算的基础。

1.2 线性代数 线性代数主要包含行列式、矩阵、线性方程组、向量空间与线性变换、特征值与特征向量、二次型等。在计算机广泛应用的今天,计算机图形学、计算机辅助设计、密码学、虚拟现实等技术无不以线性代数为其理论和算法基础的一部分。

1.3 概率论与数理统计 概率统计与数理统计包含随机事件与概率、随机变量的分布和数学特征、随机向量、抽样分布、统计估计、假设检验、回归分析等。概率论与数理统计是研究随机现象客观规律并付诸应用的数学学科,通过学习概率论与数理统计,使我们掌握概率论与数理统计的基本概念和基本理论,初步学会处理随机现象的基本思想和方法,培养解决实际问题的能力。这些都是计算机编程过程中不可或缺的基础理论知识和技能。

2 计算机编程中数学理论的应用

计算机的主要专业知识包括计算机组成原理、操作系统、计算机网络、高级语言程序设计、数据结构、编译原理、数据库原理、软件工程等。计算机程序设计主要包括如:C语言、C++、JAVA、编译语言、汇编语言等编程语言的基本概念、顺序结构程序设计、分支结构程序设计、循环结构设计、函数、指针、数组、结构、联合以及枚举类型、编译预处理、位运算、文件等内容,掌握利用各种编程语言进行程序设计的基本方法,以及编程技巧。算法是编程的核心,算法的运用离不开数学,数学运算正是编程的基础。

计算机科学是对计算机体系,软件和应用进行探索性、理论性研究的技术科学。由于计算机与数学有其特殊的关系,故计算机科学一直在不断地从数学的概念、方法和理论中吸取营养;反过来,计算机科学的发展也为数学研究提供新的问题、领域、方法和工具。近年来不少人讨论过数学与计算机科学的关系问题,都强调其间的密切联系。同时,人们也都承认,计算机科学仍有其自己的特性,它并非数学的一个分支,而有自身的独立性。正确说法应该是:由于计算机及程序的特殊性,计算机科学是与数学有特殊关系的一门新兴的技术科学。这种特殊关系使得计算机科学与数学之间有一公共的交界领域,它范围相当广,内容相当丰富,很富有生命力。这一领域既是理论计算机科学的一部分,也是应用数学的一部分。

2.1 计算理论是关于计算和计算机械的数学理论。主要内容包括:

①算法:解题过程的精确描述。②算法学:系统的研究算法的设计,分析与验证的学科。③计算复杂性理论:用数学方法研究各类问题的计算复杂性学科。④可计算性理论:研究计算的一般性质的数学理论。⑤自动机理论:以研究离散数字系统的功能和结构以及两者之关系为主要内容的数学理论。⑥形式语言理论:用数学方法研究自然语言和人工语言的语法理论。

2.2 计算几何学是研究几何外形信息的计算机表示,分析和综合的新兴边缘学科,它是计算机辅助几何设计的数学基础。主要内容如:贝塞尔曲线和曲面、B样条曲线和曲面、孔斯曲面。

2.3 并行计算问题是 “同时执行”多个计算问题。他的延伸学科有:并行编译程序、并行程序设计语言、并行处理系统、并行数据库、并行算法。

2.4 形式化方法是建立在严格数学基础上的软件开发方法。软件开发的全过程中,从需求分析,规约,设计,编程,系统集成,测试,文档生成,直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。

计算机程序设计论文篇(4)

学生发展核心素养是回答“培养什么样人”的问题。计算机程序设计有助于人们具备基本的信息素养、逻辑推理能力和计算思维[1],是“怎样培养人”。因此,在高校人才培养中,此类课程一直都是理、工、管等专业的通识课程。然而,结合学生发展核心素养的计算机程序设计教学研究相对较少,现有文献大都侧重个别素养,不够深入和系统[2-3]。如何真正从学生自身的发展出发,最大程度地发掘计算机程序设计课程促进学生发展核心素养,是该类课程改革的重要方向。

一、计算机程序设计教学与学生核心素养的关系

根据《中国学生发展核心素养》的阐述,以培养“全面发展的人”为核心。核心素养分为文化基础、自主发展与社会参与三个方面,综合表现为人文底蕴、科学精神、学会学习、健康生活、责任担当、实践创新六大素养,具体细化为国家认同等十八个基本要点[4]。计算机程序设计能够培养学生的逻辑推理、计算思维和语言表达等方面的能力,它是重要的基础科学和思维科学,其思想方法具有一定代表性[5]。因而,此类课程与学生发展核心素养所包括的文化基础、自主发展与社会参与这三个方面均具有直接的联系。

(一)计算机程序设计与学生核心素养之文化基础

文化基础,重在强调能习得人文、科学等各领域的知识和技能,掌握和运用人类优秀智慧成果,涵养内在精神,追求真善美的统一,发展成为有宽厚文化基础,有更高精神追求的人[6]。文化基础要求学生具备基本的人文底蕴和科学精神。成功的程序设计作品往往蕴含着宽厚的文化基础。例如微软的操作系统、谷歌搜索引擎,简洁交互界面的设计融合了艺术学、美学和心理学等多种文化元素,而背后是算法赖以支撑的数学。另一个典型的例子是ACM国际大学生程序设计大赛。该大赛要求学生运用计算机、程序设计语言、数学、物理等学科知识和技能,结合程序设计解决实际问题。竞赛中时刻要求学生保持理性思维、批判质疑、勇于探究等科学精神的基本要点。既然成功的程序设计作品蕴含着宽厚的文化基础,那么,教授学生学习程序设计,就是利用计算机程序设计语言,综合其他学科知识,解决实际问题,培育学生宽厚的文化基础。有力的证明如广受中小学学生喜爱的Scrath编程工具,其发明团队领袖、麻省理工学院MitchelResnick教授一直倡导“编程化学习”,即把程序创造性地作为学习工具去承载丰富多彩的内容。例如,把它当作工具载体传授数学知识和讲解自然科学等。这种转变将对学生的核心素养培养起到重要作用。

(二)计算机程序设计与学生核心素养之自主发展

自主发展,重在强调学生能有效管理自己的学习和生活,认识和发现自我价值,发掘自身潜力,有效应对复杂多变的环境,成就出彩人生,发展成有明确人生方向、有生活品质的人。自主发展包括学会学习和健康生活两大素养。计算机程序设计语言发展至今已有几十种,且新的程序设计语言还在不断地涌现。教师不可能将所有程序设计语言教授给学生,而绝大部分学生后续课程和工作的内容都不是当前学习的程序设计语言。这就要求教师在计算机程序设计课程的教学过程中,要培养学生的理论基础、学习习惯、研究方法和独立思考、解决问题的能力,强化学生的自主学习能力。学生应从学习模式、时间管理和学习规划技巧等方面针对自身特点采取一系列学习活动。例如,许多大学生在学习期间没有给自己设定明确的目标,就可能容易沉迷于网络游戏中,甚至自身的性格也会变得沉默寡言。通过程序设计课程,学生将理解一个基本原理:一切网络游戏、智能手机应用的背后都是程序员所编写的代码。大学生不应该受程序控制,应有自己的人生规划,要能自我管理,健康生活。笔者的一名学生,在学习改革后的计算机程序设计课程时,就培养了非常强的自律意识和自我管理能力,并针对学生长时间玩游戏的问题,开发了一款屏幕自锁程序,提醒大家不要长时间沉溺于网络游戏。

(三)计算机程序设计与学生核心素养之社会参与

社会参与,重在强调能处理好自我与社会的关系,养成现代公民所必须遵守和履行的道德准则和行为规范,增强社会责任感,提升创新精神和实践能力,促进个人价值实现,推动社会发展进步,发展成为有理想信念、敢于担当的人。社会参与涵盖了担当责任和实践创新两大素养。当代社会,隐私保护和信息安全越来越重要。因此,程序设计课程不仅应教授学生如何设计程序,同时也应树立他们的信息社会责任,即不能编写计算机程序窃取他人的个人信息和隐私,不能散布和传播危害国家、社会安定的言论和病毒,不能参与和组织网络盗取、诈骗他人财务等行为和活动。另外,计算机程序设计是一项思维创新的实践活动,此类课程一般遵循由简单到复杂的循序渐进式教学,逐步强调在动手实践、不断挑战中培养实践创新能力,以解决人们社会生活、生产中的实际问题为教学目的。

二、基于核心素养的计算机程序设计教学策略

著名心理学家和教育学家维果茨基所创立的社会文化历史理论对世界心理学和教育学产生了深远的影响。他的社会文化历史理论包括“人是社会历史产物”和“最近发展区”两大重要概念。

(一)人是社会历史产物与“分享―交流―互助”学习社区

维果茨基在其社会文化历史理论中指出“人从出生起就是一个社会实体,是社会历史产物”,学习行为是在人际交往活动中产生和发展起来的。在学生学习过程中,教师和同伴是学生学习的促进者,而合作学习对学生的认知发展具有重要的促进意义。在课程教学实践过程中,我们建设“分享―交流―互助”的学习社区,为学生搭建分享与交流学习过程和程序设计作品的互动平台。例如,在新一轮课程改革中,我们搭建了有助于学习程序设计的网络互动平台,并逐步发展结合线上、线下的程序设计学习社区,为学生学习程序设计提供了学习资源分享、互商互助的学习环境,以及程序设计作品展示和评价和交流的平台。线上社区的建立可以依托博客、微信群、QQ群等软件工具。此外,线上平台的建立使师生之间、生生之间在课下也可以不受时空限制地相互学习和相互启发,尝试解疑。因此,通过“分享―交流―互助”的方法,也有助于培养学生社会参与的意识和能力。

(二)最近发展区与“使用―修改―创作”教学方法

“最近发展区”是维果茨基理论体系中影响最深远的概念之一。“最近发展区”中明确阐释了教学与学生发展之间的关系是“良好的教学走在发展前面并引导之”。教学应该落在学生的最近发展区内,这样才能最大限度地发挥教学对学生发展的促进作用。在教学实践中,我们采用“使用―修改一创作”的教学方法,循序渐进地帮助学生从了解和掌握知识,到自主创新。例如,在新一轮课程改革中,我们让学生从使用、修改他人的程序设计作品中学习程序设计,了解并掌握程序设计的基本原理和概念,也帮助他们从中发现一些疑问,以供后期自主学习和创新。以教授“排序”算法的课程内容为例,笔者在介绍了排序的概念和常用的选择排序算法后,把完整程序共享在交流平台上,让学生参与排序算法的“再创作”。在这一过程中,一些学生发现选择排序算法对大多数杂乱无序的序列进行排序时,由于时间复杂度不高,算法性能较好;但对极端序列排序时,时间复杂度就高了,算法的收敛性就差。对此,他们改进了选择排序算法并把程序代码编写出来,从“使用”和“修改”过渡到了“创作”。“使用―修改一创作”的教学过程还有助于促进学生培养自主学习的能力。仍然以“排序”算法为例,一些学生课后自主探究了其他排序算法,例如冒泡排序、快速排序、希尔排序和堆排序等,其中有些学生在理解了这些排序算法的原理后,自行设计程序并制作了微课视频和大家共享。

三、结论

本文从文化基础、自主发展和社会参与三个方面论述了计算机程序设计课程与学生发展核心素养之间的关系。以维果茨基的社会文化历史理论为指导,鼓励学生采用“使用―修改―创作”的方法,并依托“分享―交流―互助”的学习社区模式,发展学生的核心素养。计算机程序设计课程与学生发展核心素养相结合的改革之路,为走出灌输模式的知识教育,提供了可行的实践方法。

参考文献

[1]WingJ.M.Computationalthinking[J].CommunicationsoftheACM,2006,(3).

[2]王旭卿.从计算思维到计算参与:美国中小学程序设计教学的社会化转向与启示[J].中国电化教育,2014,(3).

[3]魏烁佳.科学精神引领下的创新思维培养―――以程序设计为教学载体[J].中国信息技术教育,2017,(5).

计算机程序设计论文篇(5)

1非计算机专业学生对计算机课程的需求特点

在学习计算机知识的过程中,非计算机专业学生的思维方式不同于计算机专业的学生。非计算机专业学生对计算机课程学习有其自身的需求,我们必须根据现代教育思想和教学理论,针对非计算机专业学生对计算机课程的需求特点,选择正确的教学内容,设立相应的课程体系,运用恰当的教学模式与方法,将理论与实践紧密结合,以提高非计算机专业计算机基础教学的效果和质量。

通过与计算机专业学生的需求对比,Kapland就非计算机专业对计算机课程的需求特点作出如下归纳总结[1]:

1)(1) 非计算机专业学生通常与诸如信号、图像、方程、表格等实体打交道比较多。为了能够对非计算机专业的学生有所帮助,计算机基础课程须教会他们如何表示这些工作中会用到的数据,以及如何操作这些数据,而对学生不太会感兴趣的,诸如AVL树和B树之类的复杂数据,则可以略去不讲。

2)(2) 非计算机专业学生往往将计算机看成是一种工具而非自身的兴趣所在,更非其职业追求的目标。他们通常对计算机已有所接触,能够在家里轻松自如地使用计算机进行一些图像编辑、音乐合成等简单的操作。一旦转到课堂,让他们学习如何打印从1到10的数时,计算机知识则变得复杂得多。强烈的对比很容易让他们产生一种错觉:大学的计算机课程过时了,没有实际应用价值。

3)(3) 非计算机专业学生有着不同的专业背景,将来也会从事各行各业不同种类的工作。课堂上引用的例子必须是不同专业的学生都可通过直觉所接受的。

4)(4) 非计算机专业学生的导师往往自身也不具备很强的计算机使用能力,不可能去很好地帮助学生改善其计算机使用能力。学生从导师那里得到的帮助十分有限。

5)(5) 非计算机专业学生用在计算机课程上的学习时间十分有限,他们不太可能系统地学习计算机课程。有相关统计数据表明,一个计算机专业的学生在计算机课程上所花的时间通常是非计算机专业学生的十倍。

6)(6) 非计算机专业学生会频繁地使用各类标准的图表,如点线图、直方图、散点图、轮廓图、投影图,等,即便是在一个很初级的阶段也是如此。

7)(7) 非计算机专业学生大都不常写软件包,但是会经常使用它们。他们写程序往往是为某一特定用途,而不是写给别人使用。

8)(8) 非计算机专业学生通常不用设计二进制格式的文件,而是直接采用现成的电子表格、图像、声音等形式来进行操作。他们迫切需要知道如何组织和操作存储在各类表格和数据库中的数据,但可惜的是,这些知识在大多数计算机基础课程中并未涉及。课堂上,教师们常常教给他们线性表、栈、队列、树、集合和图,但并没有教会他们如何进行数据库的选择、投影和连接等典型操作。

9)(9) 如今用于科学计算的软件包非常多。我们很难预测非计算机专业学生在将来的科研工作中会需要哪些具体的计算机知识。与此相反,计算机专业的学生会非常确定地使用计算机程序语言,如C++和Java。

2非计算机专业计算机课程的典型设置

应非计算机专业对计算机基础知识的迫切需求,当前,海内外高校为非计算机专业开设了多种不同类型的课程,大体上可分为三种:(1)计算机导论课程 (着重计算机文化基础);(2)计算机应用课程 (着重案例解答);(3)计算机编程课程 (着重程序语言与软件包使用技巧)。具体讲授方式也依照学校规模、教师队伍与学生分布的不同而各具特色,总体上有如下三种授课方式:(1)同时面向计算机专业和非计算机专业,统一授课;(2)计算机专业和非计算机专业分开授课;(3)面向某一特定的非计算机专业(如医学),专一授课。这样,可根据不同专业需要的侧重点不同,传授相应的计算机基础知识。下面,我们通过具体的案例,分别就海外非计算机专业计算机课程的设置经验作进一步介绍。

案例一:荷兰蒂尔堡大学(University van Tilburg, the Netherlands)

笔者曾经在荷兰蒂尔堡大学信息系统与管理系任教3年。蒂尔堡大学为非综合性院校,共设置有五个学院――经济商学院、法律学院、社会与行为科学学院、人文(艺术、哲学、神学、宗教学)学院和天主教神学院。该校的经济商学院是最早、最大的学院,其经济学科居世界前列。信息系统与管理系附属于经济商学院,所开设的课程面向本系信息管理专业的学生,同时对校其他专业的学生开放,属上述统一授课类型。该系开设的主要课程包括商业工程(Business Engineering)、计算机与因特网技术、计算逻辑、计算机体系机构、数据库、e-商业(e-Business)、电子商务、信息技术、商务信息技术、计算与通信技术、经济与计算通信技术、运筹学与计算通信技术、信息管理、信息系统的质量管理、Linux、面向对象程序设计、面向对象模型、信息技术讲座、软件工程、系统与程序开发、网络资讯,等。

2.1计算机导论课程的设置

该类课程的目的在于让不同系科的学生懂得计算机科学的基本原理,教给学生计算机科学中一些伟大的思想与发明,通过这些预备知识,让学生能够最大限度地为将来理解计算机的能力和局限性打好基础,使之能在所从事的行业中学以致用。与此同时,在不要求学生今后从事计算机方面工作的前提下,教给学生很多计算机方面实用的知识,培养一些实用(如软件包的操作及其在实际情况下的应用)。那种只有通过学院式计算机课程的学习才达到的对计算机科学的深入理解并不是此类课程的目的。根据参考文献[3],对计算的深刻理解是可以通过非编程的教育手段获得的。

案例二:美国卡耐基梅隆大学(Carnegie Mellon University, USA)

美国卡耐基梅隆大学的Cortina认为现在的非计算机专业计算机课程为了让学生能写出正确的程序,过分强调了程序设计中的细节及其严谨性。很多时候,学生修这类课程并不是因为他们在实际工作中会用到编程,而是因为这是必修课 [2]。为此,他提出计算机导论课应教给学生计算机科学的原理而非编程,课程应着重强调从计算角度看计算机科学中的主要贡献,学生着重对计算能力的理解以及在计算机科学中会遇到的可能影响其他学科的问题。在设计课程的过程中,教师不应该通过某一门程序设计语言或者某一个特定的应用领域贯穿始终地讲授,而应该从计算的角度,讲述计算机科学的主要贡献和事件。学生学习算法以及建立计算机科学的思维方式,可以通过使用流程图、模拟器来演示一些简短算法的流程,使得能够在不涉及程序设计语言语法的情况下,就可写出一个简单的小游戏。Cortina在其所讲授的计算机导论课程里,覆盖了如下几方面的内容[2]:

(1) 计算机科学的发展史。例如:早期的设备,欧洲中世纪计算机科学的缓慢发展进程,Babbage 和Hollerith在19世纪的贡献,以及战争(二战、冷战)对计算机科学飞速发展的影响和促进,等。

(2) 用算法表达计算程序。例如:采用伪代码表示算法,用Raptor工具模拟计算过程可视化流程图,等。

(3) 数据的组织。例如:基本数据结构(数组、链表、栈、队列、树和图)、数据库和算法的典型构成(赋值、条件语句、循环和子过程,等)。

(4) 用计算机可执行的程序表达算法(即计算自动化)。例如:程序设计泛型(命令式、面向对象式、函数式和逻辑式)、编译器与解释器。

(5) 算法设计的技巧。包括递归、分而治之(如归并排序、汉诺塔)、贪心算法(如Huffman编码、最小生成树)和动态规划(如Fibonacci函数、所有顶点的最短路径)。

(6) 优化,让计算更完美。包括正确性(常量的使用,用数学归纳法证明算法的正确性)以及有效性(算法复杂度)。

(7) 计算的极限。例如:难解性、不可判定性和通用计算模型(图灵机和计数器程序)。

(8) 并发性。包括多处理器(同步、最大加速比和负载)、流水线技术和多任务(操作系统、死锁与饿死)。

(9) 应用。例如公钥密码学、人工智能(图灵测试和博弈树),等。

(10) 计算的未来。包括量子计算、纳米科技等客座讲座。

2007学年,共65人选修该课,分别来自人文与社会学院、商学院、工程学院、计算机学院和理学院。根据学生的反馈[2],80%的学生赞同客座讲座,55%的学生期望继续启用但应使用更多的图例进行讲解,85%的学生会将这门课推荐给朋友。

案例三:香港理工大学(Hong Kong Polytechnic University, China)

考虑到医务人员通常需要使用计算机工作者开发的远程临床设备。很多时候,这些临床设备启用了一段时间,但使用者却经常因为基础电脑知识的缺乏而遇到各式各样的问题。为解决此问题,香港理工大学计算机系专门为医务工作者开设了一门名为“计算机开明”(computer literacy)的课程,听课者包括医生、管理人员、市场销售人员以及经理,等。课程教案几经修改,每次修改均安排在实战训练课程后或者研讨会之后进行。该课程旨在概述计算机的基本运作、资讯科技在医疗系统中的应用,以及计算机的基本操作常识。授课内容包括:

1)(1) 计算机系统导论,包括计算机系统的基本组成(CPU、存储设备、媒体和I/O设备)和工作原理。

2)(2) 系统软件,包括系统软件的功能和操作,MS Windows的基本特点和命令,等。

3)(3) 汉字的输入方法。

4)(4) 数据库,包括数据库系统的体系结构,数据库系统的操作,等。

5)(5) 资讯科技的应用,根据计算机组织结构,介绍计算机的应用。

案例四:美国波士顿大学(Boston College, USA)

美国波士顿大学Parker and Schneider认为非计算机专业课程应该超越计算机语言的语法讲授,重点介绍计算机学科的整体情况,让学生明白计算机编程只是整个计算机学科的一部分。课程所要达成的目标在于向学生传递一种计算机“感觉”,在讲解计算机的一些主要概念及其相互联系的同时,让学生真正地在实验室里操作实践[4]。他们所设计的课程内容涵盖了计算机理论、硬件与逻辑设计、计算机组成、算法与数据结构、程序设计语言、操作系统与虚拟机、应用以及社会等诸方面。其教学风格是在每一个层次上,介绍重要的原理并引出在这个层次上学习的关键问题,然后,迈向下一个层次在一个新的抽象层次上对新问题展开讨论,同时和前一个层次的内容相结合。

2.2计算机应用课程的设置

由于上述计算机导论课程依然着重于计算机系统本身而非计算机应用,或多或少地强调计算机编程,就好像教一个想学开车的孩子如何修汽车,因而,那些受好奇心驱动的非计算机专业学生往往觉得此类计算机导论课程困难且乏味。为解决此问题,另一大类偏重于实际应用的计算机基础课程孕育而生,即计算机应用课程。

案例五:美国哈佛大学(Harvard University, USA)

美国哈佛大学Leitner等人提倡在非计算机专业的计算机基础教学中,讲授计算机应用而非计算机本身,强调计算机应用程序的使用而不是单调的程序设计练习[5]。课程的目标在于让学生学会用软件系统刻画和解决实际问题,以加强对相应计算机概念的理解与认识。课程设计应围绕计算机科学中最让人感兴趣的应用领域(如人工智能、计算机图形学、计算机视觉、信息检索、人机交互,等)来组织。在授课的过程中,每一种应用可从两方面来讲授:首先,给出计算机科学概念的一个直觉性概观;其次,强调应用的特定细节,务必每一个实例都和一个特定的软件系统联系在一起。学生不需要程序设计的基础,在课堂上也不讲授程序设计。在选择具体的应用案例时,注意选题必须覆盖计算机应用的关键领域并提供这些领域特点概念的代表性举例;需用到的软件必须易学、易用、易引起学生的兴趣,适合新手使用和实验,需假定学生除了用过Word或浏览器这类的基础软件之外没用过其他软件。这些系统既可以是商业软件、自由软件,也可以是自己开发的。参考文献[5]中给出了几个案例及其分析说明。

(1) 光线跟踪。运用计算机图形学原理(几何建模和光线传输与反射)、计算几何(计算交叉、几何搜索)等计算机知识。

(2) 动画粒子系统。涉及离散时间系统驱动(随机数)、数值方法(数值积分)等计算知识。

(3) 交互优化。涉及计算复杂性(算法与问题的复杂度、旅行商问题和NP完全)、人工智能(启发式搜索和优化)、概率论和统计(算法的经验分析)、人机交互(协同用户界面的设计)等计算技术。

(4) 图像增强。涉及电子成像(图像感知与表示)、图像处理(点操作、图像过滤、噪音去除)等计算技术。

(5) 人脸识别。涉及计算机视觉(形状识别、图形跟踪和运动分析)、人机交互(基于照相设备的界面)等计算技术。

(6) 万维网上的信息检索。涉及经典数据处理(关系数据库和有效排序和查找)、信息检索(名词集合的向量空间模型、倒排索引、链接分析法、语义网和协同过滤)等计算技术。

案例六:美国坦普大学(Temple University, USA)

美国坦普大学Aiken等人为非计算机专业学生设计了一门计算机案例课程,期望通过具体案例,结合特定领域的知识和逻辑,运用解决科学问题的一般性计算和数学方法,借助信息工具,引导学生解决关键的科学问题,达到让学生了解不同领域专家如何使用信息技术解决问题的目的[6]。在选择案例时,所考虑的依据为:①案例所表述的问题必须能激发不同专业学生的兴趣;②案例必须是一些实际工作中可能会遇到的;③通过案例阅读和分析,学生能迅速把精力集中到解决问题的策略和信息技术上,而不会被其他一些困难所牵制;④案例所表达的问题必须涉及计算机科学的主要概念和相关工具。参考文献[6]中详细地绘出了案例分析的模板,包括如下八个组成部分:

1)(1) 任务描述。包括问题陈述、动机、背景、研究与验证所采用的模型、边界条件、作为一般性问题解决策略的解题过程、学习目标、陷阱与失败的范例,等。每一个案例应代表某一类问题以及与其相关的解决方案。

2)(2) 课程计划和讲义。包括课程内容、特定目标、讲解与实验、独立活动、讨论专题和小组活动,等。

3)(3) 试验计划、活动与讲稿。描述学生在实验前应该作哪些思考、应该在实验室里做些什么工作以及这些工作的目的。

4)(4) 作业、课程项目、考试题和讨论问题。应留有足够的各类问题,用于自我评估并可供学生进一步自学。

5)(5) 数据。应有与案例分析相关的数据(如文件、数据库、图像、动画和演示)。

6)(6) 程序与工具。在案例分析中所用到的每一个程序和工具,在网上都应该有足够的文档,以及为什么选择这种工具的陈述。

7)(7) 额外的资源,供进一步学习之用。包括参考文献、信息网站、相关项目,以及项目完善的建议。

8)(8) 评价体系。对于案例分析中的每一种活动,指出学生应达到的程度。

参考文献[6]给出了如下几个案例供参考。①模拟时空下人类的行为,通过GIS模拟,跟踪2000年前到9000年前巴拿马中部热带森林里农民的扩张和随之而来的巴拿马森林的减少。②工业发展对职业年龄等造成的一系列影响,自1980到现在,审查、评价和解释美国职业分布的变化。③用计算方法探秘有机分子的结构,教给学生简单有机分子的物理性质和结构之间的关系,让学生利用物理定律和特定的计算方法预测简单分子的结构和性质。

2.3计算机编程课程的设置

在鼓励向非计算机专业开设计算机导论课和计算机应用课的同时,当前仍然有很多高校认同计算机程序设计课程的必需性。这是因为科学计算普遍存在于当今绝大多数的科学领域中,科学家们倾向于使用应用软件包而非程序开发环境。掌握基本的计算机程序设计概念、学习一般性程序设计技巧对使用这些软件包非常有帮助。如今,越来越多的科学软件包采用脚本语言、或更为完善的程序设计语言(如Matlab,Mathematica,等)。另外,教给学生一门程序设计语言对于将来想从事计算机科学工作的学生也是有用的。

一般意义上,计算机编程课的目的在于培养学生清晰思考的能力、通过编程解决实际问题的能力、以及感知计算机可以解决哪类问题的直觉能力(如计算机的最大能力以及计算的极限)。程序设计课程的讲授一般需遵循下列准则:①因时间有限,所讲授的程序设计语言必须容易学习和掌握;②程序设计语言必须能清晰反映计算机编程概念;③程序设计语言必须提供科学工作者常用的基本运算,例如将程序设计语言与图形集成在一起,学生就可以较为容易地学会画统计图表;④程序设计语言必须具有一般性,可以通过程序设计语言来解释计算机科学中遇到的重要概念,如语言必须可以用自然而简单的形式去表达树,也可以支持递归;⑤应用程序和例子必须经过认真、仔细地挑选,向学生展示这些例子与所学知识的内在关联,教给他们将来从事科学工作的技巧,且所选应用对于每个理工科学生来说都应是有趣、易掌握的。

案例七:美国杜克大学(Duke University, USA)

美国杜克大学Biermann在讲授计算机编程课程时,兼顾了两大部分的内容:计算机硬件/软件部分和高级专题部分[7]。计算机硬件/软件部分着重让学生理解计算是一个机械的过程,从开关电路和机器基本部件的连接开始,讲授晶体管和超大规模集成电路技术,以及如何将大规模电路集成到小芯片上,然后展示一个典型的机器系统结构,机器的运转以及如何用它编程,最后,解释一个小的编译器如何把高级语言翻译成机器可以执行的语言。在高级专题方面,主要介绍一些当今热门研究问题,让学生认识到计算机科学的局限性,包括计算机程序的时间复杂度、并行结构、不可计算性和人工智能,等。

案例八:美国马可雷斯特大学(Macalester College, USA)

美国马可雷斯特大学Kaplan 在讲授Matlab 程序设计课程中,一半用来介绍Matlab编程,包括数据类型、函数的参数传递、索引、读取标准文件的操作(如文本文件,电子表格)、构造函数、条件和函数;一半用来介绍理工科的实例,如声音(音乐合成、降噪音、速度变化,等)、图像(颜色调整、图像分片、边缘检测,等)、与数学的联系(公式的运用)、计算机科学(Fibonacci函数、汉诺塔、最优匹配、生物信息,等),以及图形用户界面(识别图像上的点),等[1]。

3结束语

一门优秀的非计算机专业计算机课程带给学生的影响与作用力将超过一个学期。纵观海外各大高校关于非计算机专业计算机课程的研究与实践经历,我们认为在设计一门非计算机专业计算机课程时,应遵循如下五大方面的设计准则:

1)(1) 设定目标。根据学校教学大纲的要求,同时参考ACM推荐的课程(/sigcse/cc2001),达到以下的目标。

目标1:让课程内容更相关,所有课程内容和作业都和学生的职业目标相关;

目标2:为启发学生的创造力提供机会,提供机会引导学生把计算看作是有趣而又富有创造性的活动;

目标3:让理论更为实践化,让学生把计算机科学看作是一项社会活动,而不是把它看作一项如进行黑客活动一样的非社会活动。

(2) 选择上下文。许多有力证据表明,如果不讲授一些抽象的概念,如某一具体领域内的程序设计,学生根本学不会。因此选择特定上下文是改进学习的一个关键点。如果以深度代替广度,我们可以教授更多的可转化的知识,同时,使得学生在某门课程结束后仍然可以应用这门课程所学到的知识。最好的方法就是在某些可以实际应用的特定环境中教他们编程。

(3) 设定反馈渠道。不仅从授课教师中取得反馈,而且也应通过多种论坛渠道,获取学生的反馈。

(4) 制定课程的基本结构。选择语言和编程环境是关键的问题,甚至在有些时候是非常谨慎的问题。对非专业课程中所使用语言的选择过程,与社会、文化极其相关,这种相关性甚至不亚于教法的相关性。

(5) 定义课程。确定课程讲授内容、作业和实践操练的详细内容。

参考文献

[1] D. Kaplan. Teaching Computation to Undergraduate Scientists. In Proc. of the SIGCSE 2004, Virginia, USA, 2004, PP 358-362.

[2] T. Cortina. An Introduction to Computer Science for Non-majors Using Principles of Cmputation. In Proc. of the SIGCSE 2007, Kentucky, USA, 2007, PP 218-222.

[3] Mark Urban-Lurain and Donald J. Weinshank, “Is there a role for programming in non-major CS courses?”, Michigan State University, USA, in Proc. ofFrontiers in Education Conference, 2000.

[4] J. Parker andG. Schneider. Problems with and Proposals for Service Courses in Computer Science. In Proc. of the SIGCSE 1987, MO, USA, 1987, PP 423-427.

计算机程序设计论文篇(6)

Abstract: This paper focused on line plane, longitudinal and cross-sectional survey design process, design theory and method of calculation in the road route design, introduced some specific treatment for the problems in highway route design. It focuses on the basic theory of the highway route design, the basic approach, as well as computer-aided design program developed processes and algorithms ideas.Key words: highway routes; computer; design system

中图分类号:TP3 文献标识码:A 文章编号:

1概述

本文的研究目的,在于针对工程实际,对公路路线设计中有关问题的设计理论和实用算法进行一些基础应用方面的研究,同时从实用角度出发,开发具有自主版权、功能相对齐全、实用的公路路线辅助设计程序。在程序开发过程中,借鉴了目前国内一些新的关于设计理论和计算方法的研究成果,结合作者在多年公路勘测设计第一线工作实践中对公路路线设计理论与方法研究的结果和实践经验的总结与体会,应用计算机技术,解决路线设计中平面、纵断面、横断面设计计算、工程数量计算、设计图表绘制等具体问题。

所开发的应用程序,可直接应用于公路工程设计,特别适合中小型设计单位采用常规设计方法进行公路路线设计,本程序可完成较复杂的平面线形设计,提高计算精度,一定程度上提高线形设计质量、缩短设计周期,为设计单位提供一套实用的设计工具。同时,本程序也可用于大中专院校有关课程的教学过程,通过教学演示,直观地展示路线设计的步骤和方法、以及路线设计的主要成果。

本文着重讨论在公路路线勘测设计过程中有关路线平面、纵断面和横断面的设计理论和计算方法,介绍了在公路路线设计中一些具体问题的处理方法。在总结、引用相关算法的基础上,编制实用的公路路线辅助设计程序。对于计算机软件工程方面的问题,如系统结构、编程技术与技巧、数据结构与数据传输等问题未作更深入的探讨和介绍,程序设计的指导思想亦将能够实现预期的计算、绘图功能作为基本要求,因此,从软件工程角度来看,尚不够完善和成熟。

2程序流程及算法

2.1程序整体工作流程

在公路路线辅助设计程序的编制过程中,为了与用户的设计习惯相吻合,应用的步骤基本与常规的勘测设计过程相一致,程序整体工作流程如图1所示。

图1程序整体工作流程

2.2平面设计

根据测设阶段和数据采集方式的不同,平面设计可分为实地定线和纸上定线两种方法。采用实地定线时,路线导线和各种线形要素―直线、圆曲线、缓和曲线已通过外业测量敷设于实地,各设计参数均已确定,因此,平面设计系统的任务只需将有关数据输入计算机,验算各线形要素和控制点位置。采用纸上定线时,平面设计系统的任务是:路线导线计算,人机交互设计线形要素,推算控制点桩号。不论采用何种方法,定线都是前提工作,也是最关键和最复杂的工作,需要由工程师根据规划意图,结合实际地形、地物、地质、水文等自然条件和其它社会经济条件综合协调,最后确定路线位置。定线所涉及的因素多且复杂,需要由工程师来做出决策,即由人工完成。目前平面线形智能化设计和优化以及采用三维空间线形设计的方法尚处于研究开发和完善阶段,因此,目前公路平面计算机辅助设计的任务主要还是利用计算机快速计算来取代人工繁重的计算与绘图工作,本文中程序设计也是以此为出发点的。

平面设计的流程与工作方法有直接的关系因此其流程也可分为实地定线和纸上定线两种情况,两者主要区别在于数据收集的方式不同,反映在程序系统中则为输入数据的不同,而后续的计算内容基本上是相同的,平面设计的工作流程见图2。

图2平面设计流程

2.3纵断面设计

目前,国内多数CAD系统仍采用人工方法设计纵断面,通常是由计算机将输入的纵断面地面高程资料处理后,在屏幕上显示或由绘图仪绘制纵断面地面线图,由工程师设计纵坡,设置竖曲线计算参数,并将有关设计参数输入计算机,由计算机程序完成纵坡计算、竖曲线计算以及设计高程、填挖高度计算等内容,输出设计图表。本文亦采用这种方法,考虑到在屏幕上显示纵断面地面线不如以图纸方式输出直观,因而在程序中设置了输出《外业纵断面图》的模块,供设计人员试坡使用。

本程序中纵断面设计流程见图3。

图3纵断面设计流程

2.4横断面设计

与纵断面地面数据的采集方法相似,横断面地面线数据亦可通过现场实测、在地形图上人工读取或通过DTM自动产生。不论采用什么方式,横断面地面线都被描述为一条折线,为便于计算机存储和处理,其数据以各折点坐标的方式输入,坐标原点定义在中桩位置,并且将中桩左、右两侧分别建立直角坐标系。上述坐标数据如果由人工键盘输入,工作量非常大,而且容易出错,对于传统的数据采集方法,利用数字化仪将实测横断面图转化为坐标数据是一种较好的解决办法。

图4 横断面设计流程

基于导线的平面设计模型

中线设计是公路平面设计的核心问题,其设计模型应与生产实践紧密结合,同时涉及到系统的易用性、数据管理的统一性和人机交互实现的可能性,因此中线设计模型也是公路CAD系统研究的一个重要问题。目前己在设计中应用的方法有:基于导线的设计、基于曲线的设计和基于基本元素的设计等方法。其中第一种方法属于直线型设计方法,也称为“导线法’,是我国传统的平面线形设计方法,后两种方法属于曲线型定线方法,适用于复杂地形条件下的道路线形设计以及互通立交匝道的线形设计,目前已逐步得到应用并不断发展、完善。

“导线法”设计模型由于简单易行、便于掌握,仍被很多设计部门和工程技术人员所采用。它首先定出一系列直线组成的折线,作为公路中心线导线,然后对每一个转折点配以适当的曲线,形成道路中心线。平面线形组成的基本元素为直线、圆曲线和缓和曲线,在公路设计中常用的缓和曲线形式主要是回旋线。采用“导线法”进行平面线形设计时,由于先定直线,后定曲线,容易造成曲线与直线的匹配不够合理,在受地形地物限制的情况下需要布设比较复杂的线形组合时,采用“导线法”也往往显得不够灵活。本文着重讨论采用“导线法”布线时,几种常见线形组合形式在算法上的一些改进和处理方法,以提高采用这一方法时的灵活性,并进一步提高计算精度。

结论

本文主要讨论了公路路线设计的基本理论、基本方法,以及计算机辅助设计程序开发的主要流程和算法思路。其主要内容仍以公路路线常规设计理论为基础,在此基础上,引入了作者对线形设计理论研究探讨的成果,特别在平面线形设计理论方面,着重研究了采用“导线法”布设平面线形时,卵形曲线线形设计的数学模型和计算方法以及放样坐标的计算方法,在分析过程中,以非对称基本型曲线的计算方法为依据,较好地解决了卵形曲线等复杂线形设计、放样的实际问题,并且借助适当的计算机算法,可以实现高精度的计算。

本文提出的卵形曲线计算模型,有着较高的灵活性和适应性,由于从基本型曲线的算法出发,因而其设计概念较清晰、数学模型也较简单,而且在线形组合方面涵盖了复曲线的组合形式,与本文所述的其它的曲线形式相配合,从而使得在“导线法”布设平面线形的情况下完成各种复杂线形组合的设计成为可能。从这个意义上讲,在平面线形设计中,传统的“导线法”和曲线型设计方法并无本质上的差别,其主要的区别在于控制曲线线位的约束条件不同,根据约束条件确定曲线参数时的操作手法不同,而曲线的线形实质并未变化。在实际应用中,“导线法”和曲线型设计方法各有所长,有各自的适用条件,要根据具体情况选用。这一点对于采用常规方法设计、放样的基层设计、施工单位以及低等级公路建设项目来说,有着较为重要的现实意义。

在平面线形设计理论的探讨中,有一个很重要的特点,就是对于由直线、圆曲线、回旋线三要素组成的平面线形,直线和圆曲线的线形较简单,处理起来较为方便,而回旋线的应用以及与直线或圆曲线的配合则是主要矛盾,因此不论是何种形式的线形组合,都要基于对回旋线几何特性的深刻理解和认识,本文在讨论卵形曲线计算时,也是从这一点出发,并且借鉴了曲线型设计方法中“模式法”的有关数学模型进行处理。在本文中,各种曲线形式的计算和处理方法,最终都是以非对称基本形曲线的算法为基础,这样使得线形设计的概念较为清晰,而且也为程序系统的设计提供了方便。

参考文献:

[1] 徐维华,谭玉兰.浅谈施工阶段的质量管理[J].特钢技术,2005,(3):35-36

[2] 阙家奇,姜炜.公路工程施工中的质量管理探讨[J].中国科技信息,2006, (2):157

[3] 姜新,张秀荣.浅谈公路施工中的工程质量管理[J].辽宁交通科技,2005, (3):68-69.

[4] 公路工程基本建设项目设计文件编制办法

[5] 公路工程基本建设项目设计文件图表示例[M].北京:人民交通出版社,1997.

[6] 公路设计手册一路线[M].北京:人民交通出版社1979

计算机程序设计论文篇(7)

对于多数学生而言,在学习了程序设计语言后,除能应付计算机等级考试外,不能应用计算机语言去解决实际的问题,而社会对人才的需求要求学校所培养的学生不仅要具备较扎实的理论基础,而且要具备相应的专业技能和素养,具有解决实际问题的能力。要具有解决问题的能力首先应该掌握计算机语言的理论基础,然后是把计算机语言作为工具来解决实际问题。理论知识的获取无疑要通过理论课堂,应用能力要靠实践,现在的计算机语言课程设置也都是按照“理论+实践”模式,那为什么学生学过语言课后普遍认为不会写程序,不会应用计算机语言这个工具呢?本文在分析计算机语言教学存在的问题以及各个环节对学生学习的影响情况的基础上,通过优化综合实训的组织方式,让学生更好地利用程序设计综合实训的机会,锻炼学生综合程序设计的能力。

一、实践教学现状

1.实践教学的目标

通过实践教学使学生加深对理论知识的理解掌握;培养学生的基本技能和专业技能,使学生具有较强的实际操作和创新能力;培养学生良好的社会公德、责任意识和敬业精神,培养实事求是、严肃认真的科学精神、探索精神和创新精神,提高综合分析解决问题的能力,塑造初步的创新能力。

2.目前实践教学的各个环节及对学生的影响分析

实践教学由课堂实践教学、综合实训、课外实践活动以及毕业设计环节组成。

课堂的实践教学针对教学内容的,内容相对单一,缺乏综合性;课外实践教学对于程序设计来说锻炼机会较少;毕业设计的完成往往是专业知识的综合训练,要求学生已经具备一定的程序设计能力,能够通过程序设计解决实际的专业问题,因此,在校阶段的综合程序设计实训尤为重要,要通过综合实训锻炼学生进行程序设计的综合能力,为专业服务。

二、理论课注意调整学生对课程的认识

心理作用对学习的影响非常重要,学生对于计算机语言类课程的评价大多数是一个字“难”,普遍感觉课程很难,会把这门课当做一个独立的学科来对待,本人认为这样对学习语言课是不利的,计算机语言和我们日常讲话说的“汉语”是一样的,都是交流的工具,只不过汉语是人和人之间交流的工具,而计算机语言是人和计算机之间交流的工具,我们学习计算机语言,目的是和计算机进行交流,就如同我们学习英语,是想和不会说汉语的人进行交流和讨论一样,那我们要和计算机进行交流和讨论,就需要计算机明白我们的意图,计算机如何知道我们想要做什么呢,就是通过约定好的计算机语言来表达我们的想法,所以计算机语言是表达我们人类想法的工具。只有让学生从根本上明白计算机语言在日常生活中扮演的角色,才会更好地建立让计算机帮助人类解决问题的思维模式,才会更好地应用计算机语言转换自己的思想,才会意识到只有通过多编程多练习才能熟练使用计算机语言这样的工具。

三、调整课程设置模式,加强课内实践环节

目前,计算机语言类课程教学安排大多采用“2+1”的课程模式,也就是每周2个学时的理论课和1个学时的实践课,实践课的安排一般采取“两周一次”的方式,即每两周才上一次实践课,每次课2个小时。例如,对于结构化程序设计的语言来说,三种控制结构会在2~3次课完成,但是学生会用控制结构处理实际问题需要多练习多编程才能建立这样的思维模式,对于刚开始接触计算机语言的学生,应该针对每一种结构(例如选择结构)给出多道练习题,让学生通过自己写程序来解决实际问题,这样才能建立遇到同一问题多种解决路径的实际问题时,会自然而然地想到采用选择结构。但是按照“2+1”的课程设置模式,课内实践的时间不足以保证对单一知识点的很好掌握。因此,加大课内实践的时间是有必要的。近几年,我们将网络工程专业c/c++语言课程调整为“3+2”模式,每周有实践课,每周的理论课中增加对实际问题的分析和实验课前分析,学生对单个知识点的掌握程度明显提高。

四、程序设计综合实训的组织和实施

进行程序设计综合实训是要求综合运用所学的知识解决实际问题,增强对程序设计的理解并体验团队的合作精神。因此对于综合实训的内容安排、指导以及考核都要以综合实训的目的为核心。

1.综合实训的内容安排

学生能编出具有完整功能的实用程序时,会具有强烈的成就感和自豪感,这是最好的原动力,可以很好地激发他们的潜能,使他们的算法设计能力、程序设计能力和程序调试能力得到快速的提升,因此确定一个能激发学生兴趣的题目很重要。

关于内容的安排有两种方式:

一是在一系列现有题目中选择。我们编写了程序实训指导书,在书中列出了24个题目供学生选择,这24个题目分数据库管理、游戏设计、图形、算法设计等分类,学生根据兴趣自己选择实训题目。

二是根据不同的专业学生自己选题。鼓励学生根据本专业所学专业课,自己选择在专业课中要解决的问题,然后通过程序设计实训过程来完成。这种方式需要学生提前写一个报告,包括简单的选题内容,以及准备采取的方法,指导老师根据报告决定该选题是否能作为实训选题,并且提出补充建议。

2.综合实训的指导方法

综合实训采用结对编程的模式,两个学生选择一个选题,互相合作,共同完成。整个过程要以学生为主体,因此指导老师的作用是引导学生自己查找资料,鼓励学生通过多种途径解决出现的问题。

3.成果考核和成绩评定

考核是督促学生学习的一种手段,因此考核必不可少。一个完整的实训过程必须要有总结报告,总结能使学生发现收获和不足,为以后的进一步学习打下基础。

(1)实训结束要求提交的资料

完成题目的基本要求,提供正确的源程序;

提交实训报告,实训报告符合要求,给学生一个实训报告的模版,其中包括实验内容、设计步骤、程序流程、主要算法设计、总结与体会等。

(2)考核方式

按照平时考勤、程序源码、实训报告三方面,按照2:3:5的比重考核打分,最终成绩实行优秀、良好、中等、及格、不及格的五级评分制。

五、总结

从多个年级学生的实践结果来看,加强课内实践,重视综合实训,并且严格实训组织和内容选择,不仅能提高学生对程序设计的兴趣,极大加强学生的实践动手能力、解决问题的能力,也较好地培养学生的创新精神。

参考文献:

[1]李凌.“程序设计实践”课程教学怎么做[J].计算机教育,2006,(8).

计算机程序设计论文篇(8)

引言

C语言一直在等级考试和实际应用中占有不可或缺的地位,逐渐也成为国内各高校工科专业广泛使用的教学课程。它作为一种优秀的结构化程序设计语言,其功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、既具有高级语言的优点,又具有低级语言能够直接操作底层硬件的特点,既适于编写系统软件,又能方便地用来编写应用软件。

《C语言程序设计》课程处于非计算机专业计算机基础课程3个层次(大学计算机基础、计算机程序设计基础、计算机应用基础)中第二层次,是一门理论性和实践性很强的课程。所以,教学工作者单纯利用传统的教学模式,并不能有效帮助学生在这一课程上获得大步提升。相反,可能增强学生的抵触心理。因此,改革C语言程序设计课程教学模式改革刻不容缓。

一、计算思维的含义

2006年3月,美国卡内基・梅隆大学计算机科学系主任周以真教授在美国计算机权威期刊上提出:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。所以,在这里的“计算思维”不是狭义的计算机编程,而是运用计算机基本概念去求解问题、设计系统和理解人类行为。

二、C语言程序设计课程的现状

《C语言程序设计课程》作为高校理工类非计算机专业本科学生的一门的计算机基础课程,重要性不言而喻。C语言课程更是数据结构、C+面向对象程序设计、操作系统和软件工程等课程的基础,并可为这些课程提供实践工具。但是,一般而言,C语言程序设计所涉及的课程内容较为抽象,而大量的概念及语法更使得这门课程乏味无趣,降低学生的学习兴趣。并且,即便学习了这门课程,很多学生在处理问题时,仍不能利用C语言进行思维、表达,仍未建立起程序设计的计算思维模式,不会运用计算机基本概念去求解问题。

(一)无意识计算思维教学

传统教学模式的教学方式是:用大量的时间讲定义、语法、概念、语句,对学生的要求是注重接受、理解、记忆,讲课方式是老师讲、学生听。学生掌握的只是比较抽象、机械、静止、片面和孤立,他们不知道如何灵活地综合运用这些知识去解决实际问题,缺乏计算思维的培养。

(二)教学形式陈旧忽视整体思维培养

在教学过程中,教学工作者重视理论,轻视了《C语言程序设计》课程的实践性。理论教学与实验教学是两个相互依存、相互促进的教学体系。实验教学相对于理论教学更具直观性和创造性,可以让学生在实验中更好地理解理论知识。《C语言程序设计》虽然已经有了相对独立的实验教学计划,但实验内容脱离实际,导致理论和实际教学相分离,不能有效培养学生的实践能力和创新能力,制约学生整体思维能力的提升。

(三)教学内容偏重语法细节轻视而忽视算法思想

在讲解《C语言程序设计》课程时,教师过分注重C语言的一些语法规则,忽视程序设计部分,从而致使语言与程序设计不能有机结合,忽视了对学生算法思想和能力的培养。如此,突出了C语言程序设计枯燥的一面,难以调动学生的积极性和主动性,同时,对培养和锻炼学生的逻辑思维能力具有局限性,影响学生的问题分析理解和求解能力发挥。明确该课程的重点并非一些语法细则,而是培养学生思考问题、分析问题的思维能力和思维模式。

三、《C语言程序设计》课程的教学改革

《C语言程序设计》是典型的计算思维课程,其中的教学内容也成了计算思维能力培养的重要内容。任课老师可以以解决实际问题为引导,讲授C语言程序设计中最基本的方法,将程序设计中的语法知识有机融入,避免知识太过零散,影响学生的记忆和思维能力,进而消磨学生习积极性。

《C语言程序设计》课程是C语言与课程设计相结合的一门课程,这就要求教师既要讲解C语言的一些语法规则,又要重视程序设计。而对于计算机专业的学生来说“程序设计”应该是重点。所以,在整个学习过程中,就要让学生感觉是在学习“程序设计”,学习如何分析问题,解决问题,而不仅仅是在学习语法规则。相反,如果学生对于C语言的语法规则不熟悉,也会影响编程学习,进而影响学生的积极性。因此,将C语言与程序设计有机结合,是对于教师的基本要求。也是培养学生计算思维能力的一种方式。

在教学过程中,教师应一改传统固化的教学模式,采用多种灵活的教学方法和手段,提高教学效率,加强学生对于计算思维的培养。上课时,教师可以在短时间内把课本的主要思想和问题作引导性的讲授,然后有目的的布置具有一定代表性和实际意义的课题或小型项目,并简单提示解决思路,让学生通过讨论、查资料、做实验等方式完成任务,借此来理解相关知识及应用,达到融会贯通知识的目的。这种方式不仅提高学生学习的积极性和主动性,锻炼学生解决实际问题的能力,而且培养学生的思维方式和能力。

针对形式单一的考试制度,可以加大平时成绩和阶段性考核成绩在课程总成绩中所占的比重。将实践环节和理论环节相结合,加强实验考核,在规定时间内上机并完成实验习题,根据完成习题的数量、质量,记录成绩。如此,实验教学和理论教学同步进行,利于培养学生的思维能力。

四、结论与展望

计算思维不单单关联C语言程序设计课程,更与我们的生活息息相关,在到处都有计算机存在的时代,计算思维也越发重要。《C语言程序设计》课程的教学改革,是希望学生在学习C语言的同时,计算思维同样得到训练,从而提升学生的认知能力,为其专业课程的学习打下良好基础。当然,以计算思维为基础的C语言程序设计课程教学改革也并非是一蹴而就的事情,在这个过程中,我们仍需要不断学习、研究、实践、总结和优化。

参考文献

[1]郑爽,王全民,李秀荣. C语言程序设计课程中培养计算思维的案例教学法研究[J]. 计算机光盘软件与应用,2013,21:210-212.

计算机程序设计论文篇(9)

中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2016)11-0120-01

1 计算机算法教学过程中存在的问题

随着多媒体和Internet网络的诞生,计算机教育已经步入一个全新的阶段。计算机算法的教学也不例外,计算机算法教学从单一的理论教学逐步转换为动态演示系统。其综合了文字、图片、视频以及声音等媒体,通过多媒体技术动态演示算法过程,使理论知识化抽象为形象。这不仅使学生算法学习的兴趣得到提高,而且也使学生对算法具有更为深刻地理解。

计算机算法涉及的知识范围较广,难度较高,较多学生在计算机算法的学习过程中比较吃力。分析原因,主要问题是首先,算法理论性较强,对学生的数学能力和逻辑思维能力有较高的要求;其次,教师对于算法的讲解基本上是选取一些经典的算法,没有借助多媒体教学的方式,只是进行抽象的、理论的阐述讲解。而计算机算法这种理论性较强的课程教学,为了提高学生的学习效率,我们可以在课堂教学中引入多媒体教学的方式,将理论的、抽象的算法与多媒体技术相结合,使教学内容更加生动、形象,促进学生对各种算法的理解。

2 系统开发

开发动态算法演示系统时,需要用到程序设计、动态制作等一系列软件,通过鼠标点击图例的操作进行多媒体对算法的灵活制作,将按某种算法的理论知识和教学思路将算法中重要知识点,理论教学过程中不容易讲清楚的内容借助多媒体动态演示,引入学生的思维,使其理解算法的原理,加强学生对算法的了解和应用。只需要使用者通过点击鼠标来对声音、文字、图片等信息进行编排,系统设置了如单步跟踪、连续执行等多种演示手段来演示算法的具体执行过程,从而真正达到辅助教学的效果,使其组成程序实现实时操控。

在计算机算法学科中以及大学程序设计中占有重要地位的计算机算法有合并算法、冒泡算法、插入算法及快速查找被分为二分法和顺序法等,动态算法演示系统就是用来动态演示以上算法的执行过程,从而促进学生了解与掌握这些算法。

3 系统设计

系统主界面设计各项操作简洁明了,实用方便,可以通过键盘、鼠标录入不同的数据观察算法的不同的执行情况,从而加深对算法的理解;各种算法均具有相应的理论知识,所以实际案例演示的同时会通过适当的注释在操作界面上加以说明,帮助用户更好地理解其演示过程,另外设置了附件、菜单项等各种按钮,能够通过对这些按钮的点击切换来实现不同功能的展示,自顶向下的程序设计理念在整个系统的结构化设计中得到了充分的体现。

整个系统主要由三个构件组成,分别是操作界面、主窗口、文件菜单及回收。其中,主窗口作用是对各种算法进行调用;回收的作用是将一些无效的文件删除或返回主界面。各种计算机算法都具有各自对应的文件菜单,算法的工作原理、演示的操作及应用都在对应菜单下的选项组中,算法的设计通过选项组的调试来进行。

系统主界面的设置中,界面上文本显示包括两方面:字模的存储和显示方法出现问题,可以通过对文本格式进行设置与调整,就能使这些问题得到解决。算法演示的设置可以在主菜单功能中进行自定义格式的设置,再设置成全部应用即可,可以有效避免算法演示逐一设置的繁琐。

模板使用时,不同算法中可能某些结构相似,为提高效率,数据结构中重用现象可以通过模板技术来展示。比如,可以将正在演示的算法结构,选择界面中算法选项的菜单按钮,将该算法模板进行另存,为另存的模板取不同的名字,接着对一些自带的属性进行调整,再刷新,另存的模板将在模板选择窗口出现,可以将其在其他算法结构上得到应用,将其置于对应的流程线上就能够使用。

多媒体技术演示系统能够将各种生动形象的动画展示出来,其不仅可实现通过鼠标来移动图标,而且还可以点击对所有图标进行设置。点击选中属性选项,进入设置界面更改图片的部分属性,对图标的动作进行控制。下面用快速排序算法简单介绍一下系统的设计过程。

冒泡排序改进后的快速排序,它的基本原理是:通过第一趟排序把所有参与排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按照顺序对数值进行依次比较,数值排列按照从小到大的顺序进行。

快速排序算法的设计中,假设数值为垂直状态,首先,任意选取一个数据(通常选用第一个数据)作为关键数据相当于较大的关键气泡,其他各数值相当于不同的气泡。在同一垂直线上进行所有气泡的分布,再逐次对气泡进行比较。

快速排序算法如果动态演示步骤如下:首先,点击算法流程图中的各个圆形中按钮,进行圆形下一步位置动态演示算法的效果的设置,其中关键圆形按钮的设置不同于其他圆形按钮。再者,可以将算法流程图的线条、字体以及背景色等设置成各种各样的风格。最后,针对相同算法的结构,在比较的过程中,需要将其向其他算法切换,点击算法的结构对象,将切换的算法拖至流程图中,将弹出显示数据分析算法窗口的切换。

4 结语

总的来说,动态算法教学演示系统不仅是科学技术的产物,也是教研工作者长期研究的成果,在教学过程中发挥着十分重要的作用。计算机算法动态教学系统中,其实现了算法理论知识从抽象化往形象化的转变,有利于提高学生算法学习的兴趣,加强学生对算法理论知识的记忆与理解,从而促进学生对知识的掌握与应用。在这个过程中,也实现了教师专业水平的提升,对教师的专业发展也具有积极的意义。动态系统演示生动直观,操作灵活方便,作为计算机算法教学的科学模式,对计算机算法教学效果的提升具有十分重要的影响。

计算机程序设计论文篇(10)

随着计算机软件行业的发展与普及,十几年来计算机软件技术发生了翻天覆地的变化,而高等学校的教学内容、教学模式与教学方法却没有多大的改变,课程教学理念严重滞后于实际需要,教学效果存在相当大的问题。现在的计算机软件专业学生拥有的优势越来越少,就业压力也越来越大。对独立学院的计算机软件专业学生而言,更是如此。比专业理论知识,他们没有一本、二本的学生全面扎实,比实践操作能力,他们又远不及高职学生。那么独立学院应该培养怎样的计算机软件人才呢?学生将来毕业以后,凭借什么在社会上立足呢?这是我们老师一直在思考和探索的问题。

为适应新的形势,我院明确了计算机软件人才的定位:培养应用型软件人才。这个培养目标既是从独立学院学生的自身条件出发,又符合当前社会对计算机软件人才的需求。在这个培养目标的指导下,我们在计算机程序设计课程教学上进行了大胆尝试,修订了教学大纲,增加、删除了部分教学内容,并将新的教学模式与教学方法引入计算机基础教学中,取得了较好的效果。

1存在的问题

已往的教学经验表明,学生在学习程序设计类课程时最难的地方不是掌握某种程序设计语言的语法规范,而是掌握程序设计的基本方法。

程序设计语言的语法规范是死的,并且与任何一种自然语言相比,程序设计语言的语法规范更简单规则。因此,只要学生掌握好了程序设计的基本方法,再花费一定的时间掌握某一种程序设计语言的语法规范,就能用该程序设计语言设计程序,甚至达到精通水平。

具体而言,目前教学中存在的主要问题有:教学内容与教材组织过于陈旧;教学目标没有反映新形势的需要。其典型表现在:程序设计方法强调不够,抽象思维能力培养不足;某些程序设计中重要的概念讲授力度不足,如库与接口、UML建模以及目前流行的软件开发方法等,学生在实际的软件开发中无法满足企业的需要。

2构建程序设计基础培养四阶段课程体系

大多数独立学院的本科计算机软件专业现行的课程设计,与普通的一本、二本院校相比相差无几,没有突出独立学院的特点,也没有明确独立学院的培养目标。因此,对独立学院计算机软件专业课程体系进行改革迫在眉睫。我院以“计算机导论与C语言程序设计”为公共基础的程序逻辑训练、以“高级程序设计技术”为核心的程序设计方法培养、以“数据结构”为支持的数据与程序抽象能力培养、以“C++程序设计”贯穿面向对象程序设计新理念,并在大三大四高年级开设了Java、Linux、UML建模等程序设计类选修课程,形成了“基础训练+方法培养+提高能力+拓展层面+实践应用”的程序设计教学新模式[1],在强化程序设计能力培养过程中发挥了重要的作用。

3提出并实施四层次软件人才培养新模式

我院以课程体系为基础,提出并实施了“基础训练+提高能力+拓展层面+实践运用”的四层次软件人才培养模式。

3.1基础训练

程序设计基础训练课程开设在大学一年级,是大学阶段系统认识计算机、应用计算机的入门课程,通过程序设计的词法、语法及使用方法的学习,要求学生掌握、体会计算机解决问题的基本技能。在基础训练中,通过对计算机导论课程的学习,让学生认识并能熟练运用计算机编写程序;通过对C语言程序设计课程的学习,让学生初步掌握程序设计的方法,训练程序设计中的逻辑思维。

3.2能力提高

程序设计能力提高课程开设在二年级,主要从两个方面提高学生的程序设计能力:一是高级程序设计技术课程,重点学习典型的程序设计方法技术,便于学生系统地学习并掌握程序设计方法技术。二是数据结构课程,通过构造性思维的训练,重点突出数据抽象与程序抽象能力的培养,让学生在基础训练阶段之后能更深入地理解程序设计的概念。

3.3层面拓展

主要以市场需求为基础,包括工具类别与应用环境的拓展,以选修课形式开设在三、四年级。在具有良好C程序设计能力基础上,展开其他程序设计工具层面,如开设Java、VC++、VB等程序设计类选修课程,增强学生掌握新工具,举一反三的能力。随着我国经济发展,国外市场份额不断增加,熟悉和使用Unix环境已成为计算机软件专业应当掌握的重要技术,开设Unix环境编程和Linux程序设计等课程,将拓展应用环境,提高学生适应新环境的程序设计能力。

3.4实践应用

自2006年以来,我院就加大了程序设计课程中的实践课时比例,实践课时占到总学时的1/2或1/3,每门实践课都单独安排了实践课老师,指导学生更好地进行实践。在实践课设计中,我们既重视学生理论知识的巩固,又注重其解决实际问题能力的培养,因此,我们把实验自下而上分为知识层、应用层和综合层3个层次。

知识层注重对知识的理解和掌握,数据结构、数据库原理和Java程序设计等理论课增设了相应的课程设计,课程设计的主要内容是:按软件企业先进的项目管理和开发模式,以“项目驱动”进行软件系统开发的实训。应用层重点在于巩固与应用,学生在校期间参加课外兴趣小组或在毕业论文设计中,大部分学生都能使用VC++做系统级深层次应用。综合层则关注综合与创新,学校鼓励学生参加大型的综合性IT比赛,如ITAT、大学生挑战者杯创业大赛等。

3.5创造性思维能力的强化

计算机程序设计能力,对计算机专业学生的知识结构、技能的提高和智力的开发变得越来越重要,技能培养的重要程度决不亚于知识传授。对程序设计能力的提高来讲,编程序不难,编好程序不易。质的飞跃来自量的积累、艰苦的磨炼,所以良好的专业技能和创造性思维培养的关键在于实践。程序设计是高强度的脑力劳动,是创造性的艺术,只有提高了科学思维,学会了程序设计的真本领,才会将知识与技术变成能力,应用自如。

3.5.1案例驱动教学:兴趣引导

针对独立学院学生思维灵活但学习自觉性较差的特点,我们采用案例教学法,避免了传统填鸭式教学方法的呆板,通过实例演示,让学生对所学知识产生兴趣,有了一定的感性认识之后,再提升到理论高度,循序渐进地掌握知识。经过多次教学的探索,总结出重点讲授解题思路、算法设计及编程构思,突出上机训练,在编写程序过程中让学生自己进行探索性的学习,程序设计中的成果能极大地增加学生的成就感、培养学生程序设计的兴趣,并达到更加牢靠地巩固理论知识的目的。好的程序设计案例所采用的程序设计方法教会学生用适当的语言清晰地表达其思考过程。

3.5.2指导―大运动量实践―反馈训练:加强创造性思维培养

数据结构[2]的学习过程,是进行复杂程序设计的训练过程。技能培养的重要程度不亚于知识传授。难点在于让学生理解,习惯算法构造思维方法。针对数据结构技术性与综合性较突出的特点,我们提出并实施了“指导―大运动量实践―反馈训练”教学法。通过作业练习、课程实习、课程设计3个环节实现实践过程,前者偏重于对课程内容的理解,后者侧重于软件设计综合训练,促进了专业学生逻辑抽象能力和创新能力的培养。

3.5.3项目训练:提高应用能力

通过“项目训练”[3]方法,我们提出课程设计规范要求,突出关键技术要点,贯穿基本技能训练主线,精心设计综合性实验,体现加强实践能力培养的重要思路。数据结构课程设计时进行软件开发综合训练的第一门课,通过选用具有一定实用性的综合题目,采用学生个人进行和小组合作的方式,通过问题分析、总体结构设计、用户界面设计、程序设计基本技能和技术的一系列过程,培养学生动手实践、合作研究、协作开发大型软件项目的能力,培养学生采用软件工程正规方法进行设计与实现,为专业技能训练奠定了基础。“项目训练”方式将学生引入具体的项目研发,使学生有更多的主动学习机会,培养了科研能力。

3.5.4提高学生的兴趣与创新能力

竞赛等多种活动为学生提供了展现程序设计能力的舞台,激发了学生学习的主动性。我们已连续3年开展全校“电脑文化节”、“网页设计大赛”、“Flash竞赛”、“计算机知识竞赛”;学生参加省级、部级数学建模比赛,6人次获部级奖励,20人次获得省级奖励;学生在程序设计大赛中取得优异成绩,获得多项奖励,3人次获ITAT部级奖,多人次获省大学生挑战杯一等奖。

4结语

计算机课程改革势在必行,特别是对于独立学院来说,更是迫在眉睫。改革的成功与否将直接关系到学生以后的就业。在进行计算机课程改革的基础上,我们针对软件人才的培养,提出程序设计教学的新模式和以设计为中心的能力培养新方法。作为一种有益的尝试,新的课程体系通过一种有趣的、面目可亲的方式向学生说明了创造性思维能力在程序设计中起到的重要作用。

参考文献:

[1] 翟玉庆,邓建明. 计算机科学研究型人才培养模式的探讨与实践[J]. 计算机教育,2005(1):31-33.

[2] 耿国华. 数据结构[M]. 北京:高等教育出版社,2007.

[3] 王志英,宁洪,戴葵. 强化计算机专业实践教学[C]//第七届全国计算机系系主任论坛论文集. 北京:高等教育出版社, 2004:37.

Reform of Computer Courses and Training of Software Personnel in Independent Colleges

LIU Ya, TAN Qian-mao, ZHOU Li

上一篇: 化学分析工论文 下一篇: 传统美德论文
相关精选
相关期刊