【VB开源代码栏目提醒】:网学会员为广大网友收集整理了,Java作为大学文科专业程序设计课程首选语言的构想 - 硕士论文,希望对大家有所帮助!
Java作为大学文科专业程序设计课程 首选语言的构想 陆汉权 许端清 冯晓霞 陈建海 浙江大学计算机学院,浙江杭州,310027 摘要:程序设计基础是大学计算机基础教育的核心课程,其选择的语言主要有 C、C++、Visual Basic和Java。
本文对目前高校文科类程序设计语言选择Visual Basic的现状进行了分析,解读了国家教育部计算机基础教学指导委员会制订的计 算机程序设计基础课程教学目标,比较了目前作为大学计算机程序设计基础课语 言使用较多的C和VB,提出了Java比VB更适合作为大学文科类计算机程序设 计基础课程首选语言的观点,并给出了相应的教学计划与安排的构想。
关键词:Java;visual Basic;程序设计;计算机基础1现状:理工科学C,文科学VB 从20世纪90年代中期,我国普通高校开始在大学本科阶段开设计算机基础课,主要是学习计算机操作的应用技能性课程,该课程目前被定名为“大学计算机基础”,教学内容也从操作为主到技能与系统知识并重。
到90年代后期,随着计算机基础课程的普及,对大学阶段的计算机基础教育的三个层次被提出,即大学计算机基础、计算机程序设计以及计算机专业应用‘1‘。
进入21世纪以来,真正作为计算机基础类课程的是大学计算机基础和程序设计两个层次,其应用层次课程大多数为选修或者根据专业需要设置,如电子商务、多媒体、网络技术等。
计算机课程在大学中定位为基础课,映射了计算机在各专业中广泛和深入的应用。
一个普遍的共识是,高校计算机基础类课程中的核心课程是程序设计。
在我校的课程设置中,《大学计算机基础》的学分低于程序设计,其绩点系数也是程序设计高;在学业评估中,程序设计定位等同于专业课或者专业基础课。
目前,大多数高校开设计算机程序设计基础课程是区分大类专业的。
一般而言理工科推荐选修①C语言或者C++,以C语言为主,而文科专业则多以Visual Basic(VB)为主。
其基本着眼点是,业界普遍认为C语言适合解决较为复杂的工程和计算问题,而VB相对比较简单,适合非理工科专业的学生学习。
笔者所在的浙江大学从1998年四校合并后,程序设计基础课程经过了多次改革,进行陆汉权 E—mail:luhq@zju.edu.cn ①此选修并非指选修课,而是指多门程序设计课程中必须选择修读一门。
30 计算机教学研究与实践——2009学术年会
论文集过指定语种学习到同一种语言按不同专业分层次教学。
从2003年开始至今,一直稳定在理工科学C,文科(也包括部分医、农、生物等专业)学生学VB。
程序设计基础课程教学实践表明,目前这种语言与专业大类结合的教学指导原则有其一定的合理性。
它已在大学校园里深深地植下了“C难,适合理工科;VB简单适合文科”的印记。
不过今天来看,这种观点也许不是那么准确。
程序设计课有其稳定性,尤其是教学内容和知识结构上。
尽管计算机应用程序开发越来越广泛,但程序设计的语言要素和程序结构是稳定的,运用语言实现其基本算法也是成熟的。
课程改革需要的是根据教学对象的实际,尤其是大学新生的计算机能力的不断提升,更新其教学内容及教学方式方法,使之更符合学生的学习需求。
针对教学对象满足其学习需求既是课程设置的最终目标,又是我们推进课程建设的源动力。
就这一点而言,随着课程建设的不断推进,今天文科专业的程序设计课程也应有所变化。
这是本文探讨的主要内容。
2解读程序设计课的教学目标 程序设计课程的教学目标是明确的。
根据国家教育部计算机基础教学指导委员会确定的《程序设计基础课程教学要求》(以下简称《要求》),这类课程“主要讲授高级程序设计语言的基本知识和程序设计的方法与技术”〔1〕。
这个目标已经指导我国高校计算机程序设计课程建设长达数十年。
而且在可预见的今后一段时间内,它仍然是我们进行课程建设的目标。
按照《要求》所确定的课程教学目标,学生需要“了解程序设计技术的发展过程,理解一门高级语言的基本构成;掌握基本的程序设计过程和技巧;掌握基本的程序调试和测试的方法”。
通过这些知识点学习,进而“了解计算机学科求解实际问题的基本过程,具备基本的分析问题和利用计算机求解问题的能力”〔1〕。
我们理解,《要求》中所确定的非计算机专业的程序设计课程教学目标有5个方面的含义。
(1)学习程序设计的意义在于培养学生的计算机能力,而不是以程序编码为主。
计算机能力是运用计算机求解问题的能力,也就是说要能够理解计算机是如何解决问题的,即计算机解决问题的过程和方法,进而学会去寻找能够解决其问题的计算机软件。
而理解计算机求解问题过程的最好途径就是学习它的程序设计。
这是很重要的一点:大多数非计算机专业的学生不需要通过自己编程解决
问题,因此非计算机专业的程序设计课程的学习不是以写
代码为主,文科专业更是如此。
(2)计算机语言具有极其相似的属性。
要实现《要求》中程序设计课程的教学目标,需要有语言作为基础。
但是我们知道,有成百上千的计算机语言就是为了解决不同的问题而被设计出来的,那么最好的方法就是将专业语言与专业结合起来。
但由此产生的问题是,这种方法使得程序设计课程成为了专业课或专业基础课,而不是公共基础课程了。
值得庆幸的是,无论何种程序设计高级语言,它们的数据类型、程序结构和组织,也就是语言的基本属性是相似或者是相同的,这也是能够将程序设计定位于基础性课程的前提。
因此能够掌握一种计算机语言,再学习其他语言就不存在困难,且学习各种应用软件就更加 3】 计算机教学研究与实践——2009学术年会
论文集容易了。
我们认为这就是程序设计课程的基础性所在。
(3)语言只是程序实现的工具。
《要求》中提出的基本程序设计过程及技巧,程序的调试和测试方法,大多数是和语言结合的。
但几乎所有语言都具备了这些基本功能:如常用的顺序、分支、循环结构,设置断点、单步单语句调试、在线跟踪等常用功能。
因此语言只是实现程序的工具,而程序设计的方法是与语言无关的〔2〕。
(4)
程序设计课程的语言可以是任何一门高级语言。
《要求》中并没有提出何类专业学习何种语言是合适的,也没有指定语言。
因此只要能够覆盖《要求》中的相关知识构成,任何计算机语言都是可以被选择用来作为程序设计课程的语言。
(5)重点在程序设计而非语言。
按照《要求》中的知识单元(理论和实验)教学要求细目,课程建设的重点在程序设计上,如《要求》中“掌握”的多在数据类型、表达式、控制结构和基本算法,过程/函数、数组、文件流、自定义数据结构等方面。
在教学实践中,程序设计基础课程中这些知识单元的教学所占课时比超过60%〔3〕。
和语言相关的,如面向对象、面向过程、类、指针等所占课程知识点的比重要少于语言的共性部分。
综上所述,作为“基础课程”的程序设计,课程建设及其教学内容上并不依赖于特定的语言。
因此,程序设计类课程建设应该定位在“程序设计”上,进而帮助学生理解计算机处理问题的过程,理解计算机方法,提升学生的计算机素质和能力。
3 VB的特点及在教学中的问题 根据笔者多年的程序设计课程的教学实践,C语言的定位以及教学内容的选择、教学方式方法、考试及课程评价手段等日趋成熟,且学生学习C语言的认知度高。
在我校。
C语言教学是国家级精品课程,也是学生选修比例最高的课程之一,全校每年选修人数超过4000人。
扣除重修人数,选修C语言课程的比例高达65%。
这个比例远远超过教学指导计划中划定的工科和部分理科专业的学生数,有相当一部分比例的文科学生选修C语言。
这种状况,既有C程序设计课程是优质课程的吸引力,又有C语言相对VB更为注重程序设计本身的客观因素:VB依赖于界面设计及其对控件的编程,而VB的界面并不是程序设计的共性部分。
如本文第一部分所述,我们在进行课程设置时将VB推荐为文科学习的语种,这是延续了“BASIC”是简单的思维,认为它是适合文科学生学习的。
事实上,有两个主要原因导致我们开始考虑VB为文科类专业的程序设计语言是否需要进行改革:第一是教学过程中所存在的问题,第二恰恰是VB本身的特点。
我们一直被VB教学中的问题所困惑:一般认为VB简单易学,但是在学生中普遍反映学习起来困难,而且考试结果也证实这一点。
在我校,程序设计课程的建设,例如教材、教学资源网、多媒体教学等,VB和C是同步的,实验及考试系统也都实现了自动批阅提交等。
其程序设计的案例、算法、程序
代码等,VB同C一样,建立了相当规模的题库,且在教学内 32 计算机教学研究与实践——2009学术年会
论文集容的选择和教学方法的研究方面也是并进的。
但多年来学生对VB课的教学评价不如C,且VB成绩分布也不如C那样符合正常规律,不及格比例异常。
这个问题不是我校独有的。
其二,无论我们如何改变,我们始终摆脱不了VB自身的局限。
就VB而言,语言部分仍然保留了早先解释型BASIC的各种元素,增加了编译功能。
因为是可视化(visual)的,所以增加了Windows环境编程需要的许多控件。
因此VB编程严格意义上有两个组成部分:编写
代码和设计界面,其中界面设计还是有很大一部分需要对控件的属性进行设置和改变,也需要编写相关的
代码¨J。
从语言及集成开发环境(IDE)本身而言,BASIC较C要简单易学,VB IDE秉承了Windows系统应用
软件的一贯风格,界面友好。
但是从学习程序设计的角度看,学生不但要学习BASIC语言,也要学习VB
常用的多种控件属性,并使用其进行编程。
从需要
学习的语言及程序的知识结构看,VB比C繁杂,且学习内容更多。
这是导致文科学生学习VB程序设计难度大的几个主要原因。
文科学生缺少抽象逻辑思维的
系统训练,其学科特点是以记忆为主。
学生的理解力尤其是对需要抽象思维、形式表达的计算机及其语言课程,其学习难度比专业课程要高∞〕。
计算机基础课普遍被认为是较难学习的,其原因是学生在中小学阶段一直是接受递进式教育,如数理化学科都是从简单到复杂的渐进过程,且具有严格的学科体系和完整的知识结构。
进入大学,学生对同样是基础课的数学、物理等课程的学习就丝毫没有阻滞感。
但计算机课程就不同了,它本身的体系就是一个集各种学科于一体的学科,有数理基础,有物理实现,有电子学,也有机械、光学甚至
社会学的内容。
庞杂的知识结构难以渐进化组织,例如学习软件需要一定的硬件知识,而学习硬件也离不开软件。
毕竟计算机是由人创造出来的“科学”,其自然科学的属性难以系统、完整地表述,且基础课的有限教学时数也限制了学习计算机系统性知识。
这就是学生在接受传统的自然学科学习训练后一下子难以适应学习计算机课程的离散型知识结构的原因所在。
这一点在文科学生中表现尤为明显。
当然我们也不能因此降低教学要求,因此课程建设不但需要建立知识体系,也需要课程本身的特点,对程序设计课程而言,要旨就是学习程序原理而不是语言本身。
4为什么是Java 尽管有数以百计的、现在仍然被使用的各种计算机语言,但是适合作为“基础”教育的语言仍然是少数。
因为基础教育必须是具有高度共性和广覆盖的,专业化的程序设计语言受限于此。
国家教育部计算机基础教学“教指委”推荐的语言中,Java是其中一种。
据笔者所知,目前大多数高校仍然将Java和C++一起作为已有程序设计基础的学生学习面向对象编程的主要语种。
Java来自C,但是为了提高程序的安全性,Java没有沿用C的指针等复杂构造数据类型,保留的是C的基本数据类型,再加上了面向对象的类。
经过数十年的发展,Java被广泛用于
网络编程,也是Java开创了面向对象的编程新技术邙〕。
毫无疑义的是,Java能够实现程序设计基础教学的目标,不管其教学对象是哪一个专业。
其次,只要将Java的知识结构细致梳理,突出《要求》中的程序设计任务的Java语言功 33 计算机教学研究与实践——2009学术年会
论文集能,再将面向对象的编程特点体现出来,它就应该能够为文科专业的学生所接受。
就我校而言,既然有相当数量的文科学生学C,那么同样他们可以学Java。
在语言层面上,我们可以将Java和现在被普遍用于文科开课的VB相比,有以下特点。
(1)语言结构类似。
这是程序设计语言的共性,它们之间没有本质区别。
VB的数据类型要多于Java,如日期时间、货币、变体类型等。
是Java中没有的。
(2)程序控制流VB比Java繁杂。
主要是在循环控制部分,VB不但有“当”型,也有“直到”型控制语句,其Do…Loop就有5种形式,还有其他2种循环语句和遍历数组元素的循环,而Java只有3种格式的循环语句。
(3)构造型数据类型,VB和Java基本相同。
主要的构造数据类型是数组和字符串,也有自定义数据类型。
(4)面向对象编程。
严格意义上,VB也有类,不过它更多的是通过控件实现的,而Java是真正的面向对象编程,其编程思想更为先进。
(5)其主要应用领域。
VB基于Windows平台,Java是跨平台的。
VB依赖于Windows系统进行开发,而Java是网络编程为主。
当然,真正表现Java特点的是面向对象,但从程序设计基础课程的教学目标而言,这方面并不是我们所要着力表现的。
以上简单的比较使我们有理由认为,Java也适合且也许比VB更适合文科专业的学生学习程序设计。
另外,我们不可忽视的一个语言技术发展趋势是,Java已经是编程第一语言。
其次,VB已被选用于中学阶段的信息技术课程。
那么大学阶段文科学生应该选修哪一种语言?我们认为答案是Java。
5我们的初步构想 良好的愿望和实现之间存在着距离,如果没有一个好的教学过程的设计,这种愿望也许就不会成为现实。
Java是否真的适合作为文科学习程序设计的首选语言,也是需要实践检验的。
我校一直在开设Java课程,一个值得重视的实际情况是:其选修人数从数百到目前不足百人。
原因是课程教学的知识与课时分布不尽合理,与程序设计的教学目标有偏离,课程学习难度大。
我们一直认为Java应该突出的是面向对象,因此语言与程序基本结构、面向对象、应用编程三部分均匀分配,这让教师教起来感到课时不够,学生学起来也觉得很吃力。
基于这种现实改变的需要,我们构想,根据《要求》所确定的程序设计课程教学目标,应该将Java的教学结构定位在突出程序设计上,如表l所示(我校程序设计基础课时为32+32)。
按照我们的初步构想,教学重点放在前6个知识点上,即用60%以上的教学时数教学数据类型、表达式、程序结构、程序调试测试及常用算法等,30%~40%的时间学习面向对象编程基础,这部分只要求理解和掌握基本概念,编码以示例(Demonstration)为主。
这种教学结构的定位既符合《要求》的教学目标,又比较切合文科学生的学习特点。
34 计算机教学研究与实践——2009学术年会
论文集 表l Java教学目标 l 引言,Java程序入门 2课时 2 基本数据类型与表达式 5课时 3 程序控制流 5课时 4 构造数据类型 4课时 5 常用算法 4课时 6 类及其构造方法 2课时 7 类的继承、封装、多态基础 2学时 8 多线程, l学时 9 异常处理 1学时 10 Applet实例 2学时 11 顺序文件处理 2学时 12 其他 2学时 以上构想是在总结我们现行的Java教学过程并借鉴C语言成功的教学实践〔3〕:以程序设计能力培养为主,复杂数据处理技术可以通过高级程序设计实践教学环节学习。
如何为文科学生开设出一门能够让其既易学、又好学的程序设计课程并选择合适的语言,本身就是难事。
因此需要我们在教学实践中认真总结,不断修正教学计划,改进教学方法,激发学生的学习兴趣和热情。
也许我们的构想是现实的,也许仍然没有解决VB教学中的问题,这都需要进行必要的尝试。
在我校实施的2009—2012学年教学计划中,我们已经将VB改Java列入课改计划,2009—2010学年秋、冬学期执行上述的Java课程教学
方案,为教育学(文科)专业的程序设计基础课开Java教学班,作为初步探索,以期能将本文的构想变成现实。
如果这一步的探索能够达到预期目的,这样我们将以Java作为文科类专业的首选程序设计课程语言,在2009—20lO学年的春、夏学期开设更多的教学班。
参考文献〔1〕教育部计算机基础教学指导委员会.关于进一步加强高校计算机基础教学的意见.北京:高等教育出版 社,2006〔2〕何钦铭主编.C程序设计.北京:高等教育出版社,2008〔3〕何钦铭.c语言程序设计精品课程网站.http://jpkc.zju.edu.cn/k/409/m113.htm〔4〕陆汉权等.Visual Basic程序设计教程.杭州:浙江大学出版社,2006〔5〕严文虎.文科专业Java语言课程教学的思考与探索.大学计算机课程
报告论坛
论文集.北京:高等教育 出版社,2006〔6〕翁恺等.Java语言程序设计教程.杭州:浙江大学出版社,2007 35