前言:中文期刊网精心挑选了计算机基础与程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
计算机基础与程序设计范文1
(安徽大学 大学计算机教学部,安徽 合肥 230601)
摘要:介绍在大学计算机程序设计基础课程中引入项目化教学模式的方法,将常用的计算思维方法贯穿于整个学习过程中,为计算思维能力的培养奠定基础。
关键词 :程序设计;计算思维;项目化教学模式
基金项目:教育部高等教育司2012年大学计算机课程改革项目(2-3-ZXM-06);安徽省质量工程项目(2013gxk015);安徽大学校级教育教学改革项目(J01001789)。
第一作者简介:吴蕾,女,讲师,研究方向为软件测试、云工作流,wuleijsj@ahu.edu.cn。
1 背景
程序设计基础课程作为大学非计算机专业学生的基础课,对培养学生运用计算机解决生活中各类问题的能力具有极其重要的意义。然而,目前大部分高校在程序设计基础教学中多以知识点层级为体系,学生对知识的应用缺乏整体感,不利于拓展思路并进行思维能力训练。在大学计算机程序设计基础教学中如何培养学生计算思维(computational thinking)能力已成为当前计算机教育重点研究的一项重要课题。
2006 年,美国卡内基·梅隆大学的周以真(Jeannette M Wing)教授给出了计算思维的定义[1]。2010年11月,陈国良院士第一次正式提出了将“计算思维能力培养”作为计算机基础课程教学改革切入点的倡议[2]。2010 年7 月,全国9所“985 工程”建设高等学校发表了联合声明,声明的核心是必须正确认识大学计算机基础教学的重要地位,把培养学生的“计算思维”能力作为计算机基础教学的核心任务[3]。2012年7月,教育部高等学校计算机基础课程教学指导委员会与文科计算机基础教学指导委员会在《关于申报大学计算机课程改革项目的通知》中指出,大学计算机的教学总体目标是“普及计算机文化,培养专业应用能力,训练计算思维能力”。课程明确把计算思维和计算工具并列起来,“训练计算思维能力”被看成是大学计算机教学目标要求的第3个层次;强调“以培养计算思维能力为主线”进行教学改革,解决计算思维从学术研究“落地”到教学过程中出现的一系列关键问题[4]。
由此可见,在高校计算机教学中培养学生的计算思维能力仍然处在一个摸索阶段。笔者尝试将项目化教学模式引入程序设计基础课程教学过程,师生共同完成一个完整的项目,学生不但能够学到课程的主要知识,也完成了一个真实的项目设计,极大地激发学习兴趣,在学到知识的同时掌握用计算机分析问题、解决问题的实践能力,从而训练思维技巧,为计算思维能力的培养奠定坚实的基础。
2 程序设计基础课程教学现状
在传统的程序设计基础课程教学模式中,教师按照教材把程序设计语言的代码基础、程序基本结构、数组、过程、常用控件、文件读写、数据库等需要掌握的知识点按部就班地灌输给学生,然后带领学生上机巩固所学的知识点。这种模式貌似很符合人的认知规律,但是在实际的教学过程中收到的效果很不理想:学生在学的过程中叫苦不迭,甚至一些学生在付出了大量时间和精力之后依然不得要领。通过与学生及老师的交流,我们认为传统的教学模式主要存在以下缺陷。
(1)知识点联系不够紧密,对知识应用缺乏整体感,不利于学生拓展思路。教材中的例子往往是为了说明某个知识点,而例子与例子之间没有联系,如果教师只是照本宣科,布置给学生的实验也是一个个孤立的程序段,那么可以想象学生很难将所学到的知识点串联起来并解决实际问题。
(2)教学过程没有激发学生学习兴趣,被动学习有碍计算思维能力培养。计算机程序设计课程要求学生具有一定的数学功底和较强的逻辑思维能力,而我们授课的对象是非计算机专业学生,他们中的大多数欠缺的恰恰就是这些;传统的教学过程中却不可避免地出现了很多数学问题求解,使得学生理解起来困难重重,这对于编程信心不足的学生来说无异于雪上加霜。
(3)缺乏实际应用体验,学生无法充分认识和体会计算思维方式的优势。程序设计的学习如果只是停留在知识点掌握以及例题练习的层面上,没有与实际应用相结合,学习者无法感受到所学知识在实际工作中的作用和地位,将会抑制学生的积极性,影响学习效果。
3 培养计算思维能力的教学新模式
3.1 计算思维能力培养
计算思维是一种思维方式,也是一种解决问题的思考过程。从现实角度来说,计算思维就是问题抽象、模型建立、算法设计和实现以及问题引申的过程,也就是将未知问题归纳成若干已知问题从而求解的过程。现如今计算思维已不仅仅运用在计算机学科上,也广泛应用在其他自然学科甚至是人文学科中,它不是一个单独的、与其他思维方法毫无关联的孤立方法。计算思维产生于计算机科学,而与计算机科学联系最紧密的思维方法是数学思维、逻辑思维和工程思维,我们可以将计算思维看做是计算机科学与数学思维、逻辑思维和工程思维的交集,而它们也代表了计算思维的不同层次要求[3]。计算思维有以下几个主要特征[5]。
(1)计算思维采用抽象和分解来执行庞杂的任务或者设计巨大复杂的系统。
(2)计算思维利用启发式推理来寻求解答,在不确定的情况下规划、学习和调度。
(3)计算思维是数学思维和工程思维的互补和融合。
(4)计算思维是概念化,不是程序化,不只是为计算机编程,还要求在抽象的多个层次上思维。
过去我们常说,学生学习数学课程、物理课程并不是要他们成为数学家或者物理学家,而是通过这些课程的训练养成科学思维的素质和能力,现在这种认识也同样适用于计算机课程。对大多数非计算机专业的学生而言,学习程序设计的目的不是成为程序员,而是学习计算机分析和解决问题的过程和思路,也就是培养计算思维能力。计算思维能力在海量信息处理分析、复杂装置与系统设计、大型工程组织、自然现象与人类社会行为模拟等方面具有重要的意义和作用[6]。
3.2 项目化教学模式
项目化教学模式是师生通过共同实施一个完整的项目工作而进行的教学活动,它是“行为导向”教学法的一种。项目是计划好的,有固定的开始时间和结束时间的工作,原则上项目结束后应有一件较完整的作品。为改进传统教学模式中存在的问题,进一步培养学生的计算思维能力,我们试图在程序设计基础课程教学中采用项目化教学模式。项目化教学模式的特点如下。
(1)实践性:项目的主题与真实世界密切联系,学生的学习更加具有针对性和实用性。
(2)自主性:提供学生根据自己的兴趣选择内容和展示形式的机会,学生能够自主、自由地学习,从而有效地促进创造能力的发展。
(3)发展性:长期项目与阶段项目相结合,构成实现教育目标的认知过程。
(4)综合性:具有学科交叉性,能够综合运用。
(5)开放性:学生围绕主题所展开的方式、方法和展示、评价具有多样性和选择性。
项目化教学模式能够很好地将程序设计课程的教、学、做有机结合起来,从而成为培养学生计算思维能力的有效途径。著名物理学家劳厄曾说过:“重要的不是获得知识,而是发展思维能力。”因此,思维需要接受训练。教师在项目化教学模式中以合理的项目为依托进行教学,学生不但能够学到课程的主要知识,同时也完成了一个真实的项目设计,可以极大地激发学生的学习兴趣,在学到知识的同时掌握用计算机分析问题、解决问题的实践能力,从而训练自己的思维技巧,为学生创新性能力的培养奠定坚实的基础。
3.3 基于计算思维能力培养的项目化教学模式的组织与实施
在基于计算思维能力培养的项目化教学模式中,教师与学生围绕项目这根主线进行教学和学习,而与程序设计语言相关的基础知识则可通过在线学习的方式引导学生自主完成。教学者在设计项目、呈现项目、指导项目实施、检查评估的过程中运用计算思维方法展开教学;学习者在明确项目任务、制定项目计划、实施计划、归档或应用的过程中运用计算思维的方法进行学习;学习者利用高效率的计算思维去弄清项目任务、明确目标,通过实施项目探索新知识,掌握计算思维的方法和技巧。我们将这种基于计算思维能力培养的项目化教学模式归纳为图1的过程。
在程序设计基础课程中实施项目化教学模式所应用的计算思维方法可概况为“观察—联想—变换—启发”。“观察”方法是人类认识客观事物的基本途径,通过“观察”树立正确的整体与部分思想,将一个具体的项目抽象为一系列明确的子任务,从而使学生体会抽象、分解、学习等计算思维特征。“联想”是由某种对象引出其他相关对象的思维形式,通过联想,运用构造性思维、逆向思维等方法建立起多个能够简洁表达子任务本质的模型,并规划子任务实施计划;同时训练学生理解规约、并行、规划等计算思维特征。“变换”是算法设计与实现的基本手段,可以运用目标转化思想、分类与分治思想等,有目的地对问题实施“变换”,把原问题转化为一个或几个易于解决的新问题,这是项目实施的关键,也是促使学生领悟转化、仿真、递归、调度、折中、优化等计算思维特征的关键阶段。“启发”是通过对已有的资料和信息进行分析、综合、概括和比较,进而做出判断、推理、论证来指导决策的思维形式。在项目实施的最后阶段,通过教师对项目执行情况的检查评估,学生将整个项目执行过程所产生的程序和文档进行归档整理,可以有效地“启发”学生将问题引申,同时使学生对于容错、纠错、系统恢复等计算思维特征有更为深入的认识。
综上所述,将项目化教学模式引入程序设计基础课程教学中,把传统的程序语法教学转变为从问题抽象到模型建立再到算法设计与实现,最后总结引申的思维训练过程,能够有效培养学生“观察—联想—变换—启发”的计算思维能力[7]。
4 结语
培养复合型创新人才的一项重要内容就是潜移默化地使他们养成新的思维方式,即运用计算机科学的基础概念对问题进行求解、系统设计和行为理解,建立计算思维。采用项目化教学模式,在教学过程中始终贯彻“问题引导、项目驱动、讲练结合”的原则,使学生的学习过程始终围绕完成一个完整的、实际的、具体的、有形的项目,这样就把知识的学习和应用有机结合在一起,极大地激发学生的学习兴趣,使他们既学到了知识,又提高了用计算机分析问题、解决问题的能力,从而达到“建立利用计算机求解问题的基本思路”这一计算思维能力的基本要求。
参考文献:
[1] Wing J M. Computational thinking[J]. Communications of ACM, 2006, 49(3): 33-35.
[2] 陈国良, 董荣胜. 计算思维与大学计算机基础教育[J]. 中国大学教学, 2011(1): 7-32.
[3] 何钦铭, 陆汉权, 冯博琴. 计算机基础教学的核心任务是计算思维能力的培养[J]. 中国大学教学, 2010(9): 5-9.
[4] 冯博琴. 对于计算思维能力培养落地问题的探讨[J].中国大学教学, 2012(9): 4-5.
[5] 臧劲松. 培养学生计算思维的程序设计课程教学[J]. 计算机教育, 2012(2): 78-80.
[6] 李廉. 计算思维: 概念与挑战[J]. 中国大学教学, 2012(1): 7-12.
计算机基础与程序设计范文2
中图分类号:G642
摘要:针对当前计算机程序设计课程建设面,临的两方面挑战,提出由4个等级组成的逐层递进的程序设计能力模型,构建覆盖不同能力等级的课程体系,进行一系列以提高程序设计能力为目标的教学方法改革,包括基于能力的分级教学、能力测评和考核、程序设计能力训练和提升方法、课堂授课方式的改变等,从而实现计算机程序设计课程教学从侧重知识传授到突出能力培养的转变。
关键词:计算机程序设计;程序设计能力模型;教学方法改革
0 引言
随着计算机的不断普及其在各个专业领域日益广泛和深入的应用,计算机软件作为信息系统的一种重要载体正越来越多地用于解决各专业领域的相关问题,如电子技术、材料科学与工程、物理学、化学、系统工程、机械工程等。程序设计是构造计算机软件的一项重要活动和技术形态,其核心是利用程序设计技术并借助特定程序设计语言(如Java、C++等),将专业领域问题或者应用问题抽象为计算机软件的形式,从而实现基于计算的问题求解。由于以计算机软件为核心的计算技术在许多专业领域正发挥着越来越重要的作用,扮演着极为重要的角色,因此计算机程序设计受到越来越多专业的关注和重视,被视为一种重要的基本技能,诸多大学将计算机程序设计课程列为公共基础课程。
1 计算机程序设计课程建设面临的挑战
传统上,计算机程序设计的课程教学侧重知识的传授,主要为学生讲授程序设计的基本概念和思想,介绍特定的程序设计范例(如结构化程序设计、面向对象程序设计)以及相应的程序设计语言(如C、C++等);教学对象以计算机专业的学生为主。随着越来越多专业的学生选修计算机程序设计课程,课程教学更加关注借助程序设计技术对专业领域问题进行分析和抽象。当前计算机程序设计课程建设面临着以下两方面的挑战。
1)如何实现从侧重知识传授到突出能力培养的转变。
各个专业方向关注的是如何借助程序设计技术构建相应的计算机软件,从而解决专业领域的问题。在计算机程序设计课程教学过程中,有关程序设计基本概念、思想和语言的讲授是实现这一目标的基础,如何利用这些知识抽象并求解专业和应用领域中的问题,才是该课程教学的关键;因此计算机程序设计课程的教学需要将关注点从侧重知识传授转变到突出程序设计能力培养,即要培养学生使用计算技术解决专业问题的能力。
2)如何满足不同专业对程序设计能力的不同需求。
尽管计算机程序设计的基本概念、思想和语言独立于具体的专业领域,也与特定的问题无关,但是各个专业方向所关心的程序设计问题是不一样的。例如,数学专业关心的是如何将数学模型转换为计算模型;电子技术专业关心的是如何开发计算机软件,以实现底层电子硬件与高层信息系统之间的交互等。程序设计能力表现为多种形式,包括针对给定问题抽象出相应程序的能力,基于有限的计算资源(如存储和运算资源)提高程序有效性和高效性的能力,提高程序的质量以使程序易于维护、扩展和重用的能力等。有些能力是需要具备的基本能力,有些能力则要求更高。
针对上述问题,我们依托计算机程序设计课程建设,围绕能力模型、课程体系、教学方法3个方面,开展以突出程序设计能力培养为目标的教学改革与实践,强化能力训练和测评,提高计算机程序设计课程教学水平和人才培养质量。
2 程序设计能力模型
为了突出和强化计算机程序设计能力的培养,指导开展以能力为导向的课程教学改革,首先必须回答何为计算机程序设计能力?它表现为哪些方面?不同能力表现形式之间存在什么样的关系?能力的训练和提升应遵循什么样的规律?如何表示不同专业领域对计算机程序设计能力的不同需求?为此,我们提出图1所示的计算机程序设计能力模型。
计算机程序设计能力模型由4个等级组成,即初始级、技能级、工程级和创新级。每个等级反映程序设计能力的某种表现形式,因而有其特定的关注点。例如,初始级需具备程序设计语言的基本运用能力;技能级需具备对问题进行数据和算法抽象的能力,使得所开发的程序具有良好的时效性和高效性。不同程序设计能力等级之间存在依赖关系,形成一种逐层递进的能力进阶方式。例如,技能级建立在初始级基础之上,工程级需要以技能级为基础。将程序设计能力从一个等级(如初始级)提升到另一个等级(如技能级),需要针对目标等级的特定关注点,循序渐进地进行能力提升。
1)初始级。
初始级的程序设计能力具体表现为:掌握计算机程序设计的基本概念和知识;掌握一门或多门计算机程序设计语言;具备程序设计语言的基本运用能力;具有编写百行规模程序的能力;能熟练使用工具或环境对所编写的程序进行调试和分析。
该等级反映了计算机程序设计能力的最基本水平,也是计算机程序设计课程教学需要达到的基本目标。这一等级通常面向非信息类专业的学生,他们应通过计算机程序设计课程的学习,具备初始级的程序设计能力。
2)技能级。
技能级的程序设计能力具体表现为:了解计算资源(包括存储和运算)的有限性;掌握常用的算法和数据结构;具有运用程序设计技术对待解决问题进行分析、设计和计算求解的能力;能够针对有效的计算资源,从时间和空间2个维度,对给定问题在计算空间中进行数据和算法抽象的能力;具有编写千行规模程序的能力。
该等级体现了程序设计的较高水平,计算机程序设计竞赛非常关注这一等级的程序设计水平。这一等级通常面向信息类专业的学生,他们应通过计算机程序设计课程的学习,具备技能级的程序设计能力。
3)工程级。
工程级的程序设计能力具体表现为:掌握大规模程序的复杂性特点、程序质量的要素与内涵;掌握程序设计方法和知识,能够运用抽象、模块化、信息隐藏、软件重用等思想设计和实现大规模、高质量的程序;能够编写出具有良好的可读性、可靠性、可维护性、可重用性、可扩展性等属性的程序代码,使得该程序代码具有良好设计风格;具有编写数千行规模程序的能力。
该等级体现了程序设计的工程化水平,可以为大规模软件的工程化开发奠定基础。这一等级通常面向计算机专业(如软件工程、计算机科学与技术)的学生,他们应通过计算机程序设计课,程的学习,具备工程级的程序设计能力。
4)创新级。
创新级的程序设计能力具体表现为:能够灵活运用所掌握的计算机程序设计技术并与其他专业领域的技术相结合,开展创新实践,解决特定领域和专业的问题。这一等级着重关注程序设计技术的综合运用和创新性解决问题的能力,通常面向各个专业的创新实践。
计算机程序设计模型明确了每个等级的关注点、能力指标及培养目标,指明不同等级间提高程序设计能力的方法和手段;支持逐层递进的程序设计能力培养,加强针对程序设计能力的训练,改进测评和考核方式,为推动能力为导向的计算机程序设计课程教学改革奠定基础,为国家信息化建设需要的多专业、多层次人才的程序设计能力培养提供新模式。
3 计算机程序设计课程体系
为了解决不同专业对程序设计能力的不同需求问题,开展不同等级计算机程序设计能力的培养和训练,指导各个专业方向的学生有针对性地选择所需的计算机程序设计课程,我们以计算机程序设计能力模型为基础,构建覆盖不同能力等级、逐层递进的计算机程序设计课程体系。支持程序设计能力模型的课程体系如图2所示。
1)初始级课程。
根据初始级程序设计能力的要求,我们在该等级开设计算机程序设计和面向对象程序设计课程,培养学生获取程序设计基础知识和运用程序语言的基本能力。
2)技能级课程。
根据技能级程序设计能力的要求,我们在该等级开设数据结构和算法设计与分析课程,培养学生如何针对特定问题,在计算资源有限的情况下,从时空有效性的角度开展数据和算法设计的能力。
3)工程级课程。
根据工程级程序设计能力的要求,我们在该等级开设程序设计课程设计(即程序设计综合实践)、程序设计方法学和并行程序设计课程,着重培养学生编写大规模、高质量程序的能力。
4)创新级课程。
根据创新级程序设计能力的要求,我们在该等级开设Android程序设计、面向机器人程序设计、无人系统程序设计等课程,关注多种技术的融合运用,着重培养学生综合运用程序设计技术和专业领域技术,创新性地解决专业领域问题的能力。该专业领域涉及机电一体化、电子工程、自动控制、航空航天等。
4 深化以能力为导向的教学方法改革
为了加强计算机程序设计能力的培养,推动程序设计能力的训练和测评,我们改革和实践一系列行之有效的教学方法,实现计算机程序设计课程教学从侧重知识传授到突出能力培养的转变。
1)开展基于能力的分级教学。
我们根据不同专业的需求选择人才培养的能力等级及其所需的课程,根据学生的不同基础和能力实施分级教学。该方法为有针对性地对不同专业、不同基础的学生进行计算机程序设计能力培养提供了参考和准绳。目前,分级教学设A、B、C三级,分级标准参考如下。(1)A级:具有较好的程序设计思维和潜力,具有一定的程序设计基础知识和能力。A级班比例为25%-35%,每班50~60人。(2)B级:预计通过正常授课和实验,能够完成大纲学习要求。B级班按大纲实施教学。(3)C级:通过正常授课和实验,完成大纲学习要求存在一定困难。C级班增加10个授课或实验学时,规定学生在课程结束后达到大纲要求。C级班要求教师进行更加细致的讲解,学生进行更多的基础训练。
2)实施面向程序设计能力的培养模式。
我们必须通过多种手段在实践中培养和提升学生的程序设计能力,为此总结出“读、改、写、用”相结合的能力训练方法,即通过读程序代码,改已有程序代码,编写程序代码,重用已有的设计模式、系统或应用程序接口、外设、第三方程序模块等,综合培养学生的程序设计能力。我们尤其强化学生对高质量开源软件的阅读能力,从中学习、领会和掌握设计精巧、具有良好可读性、可维护性、可扩展性的程序,鼓励学生通过对已有程序进行扩展和改进,继承和掌握遗留软件中具有的良好“品质”。
3)改革程序设计课程的授课方式。
程序设计是一门实践性很强的课程,针对这一特点,我们采用学中练、练中学的方式,将课堂搬到实验室,通过“讲授+练习+讲评+训练”的实验室授课方式,淡化知识传授,加强问题引导并对实践体会加以总结,精心设计针对特定知识点的单元练习和串联所有知识点的渐增式项目,变讲授为研讨,变学习为体会,变任务为兴趣。实验室授课弱化教师的讲授,强化学生的主动学习,将间接经验传授转换为直接经验体会,这也更加符合程序设计的学习规律,极大地提高了学生的实践训练强度。
4)提出程序设计能力的测评方法。
我们开展面向能力的测评与考核,针对不同等级测评,采用人工与自动相结合、定量与定性相结合、自评与互评相结合的方式,借助实践教学平台,建立基于功能、性能和质量等多维属性的程序设计能力测评与考核系统。初始级依托考试系统,采用测试用例集测评学生对具体问题的程序实现能力;技能级采用大数据集的方法对实现的数据结构和算法效率进行测评;工程级采用人工和商用工具测评程序的风格、体系结构和质量;创新级采用过程跟踪和专家评分的方法评判创新能力。
5 结语
如何针对不同专业对程序设计能力的不同需求提高学生的程序设计水平,是计算机程序设计课程建设面临的一项重要挑战。我们以构建计算机程序设计能力模型为核心,以建立覆盖各个能力等级的计算机程序设计课程体系为突破口,以改革面向能力培养和训练的课程教学方法为手段,开展以能力为导向的计算机程序设计课程教学改革与实践。实践结果表明:课程教学的改革思路越清晰、目标越明确,所培养学生的独立编程能力越能够得到大幅度提升,程序设计的调试和测试从原先几乎被忽视变成了学生的自觉行为,诸多学生养成了良好的程序设计习惯,为参加各种计算机程序设计竞赛和开发大规模软件奠定了扎实基础。
参考文献:
[1]陈莲君,朱晴婷.培养能力为主线的C语言程序设计教学研究[J].计算机教育,201 1(14):102-105.
计算机基础与程序设计范文3
摘 要:本文分析了计算机程序设计在通识教育与计算机基础教育中的差异,说明了在通识教育中开设程序设计基础课程的重要性,讨论了该课程在通识教育中的特点与定位,说明了我们在该课程中采用的教学策略和手段、并给出了教学效果,最后提出了今后要继续研究的有关教学问题。
关键词:通识教育;程序设计;教学研究
中图分类号:G642 文献标识码:B
1 为什么在通识教育中设置程序设计课程?
通识教育的倡导者认为,大学教育不能局限于专业知识与技能的传授,还应注重“全人”的培养,即对学生素养、品格、价值观的培养,希望个人潜力得到最大限度的发挥,而不局限于个人选择的专业。计算机技术的飞速发展带来了信息技术的革命,使社会发展步入了信息时代,在大学的通识教育中增加有关计算机技术基础知识与能力的课程,有助于非计算机专业大学生,特别是其中文科学生,综合素质的提高。
计算机程序设计的思维方式具有鲜明的独特性:系统论、抽象性和自动化。软件专家温伯格认为,这种思维先于专门的学科知识的存在而存在――有时绕过专门的学科知识,有时又把专门的学科知识综合起来;把这种思维和教育方法称为一般系统论的方法。其次,程序设计的最终结果是让计算机按照程序执行,去解决一类问题,而不是某个具体问题,这与数学的抽象性类似。这种思维是让机器自动地完成任务,却又允许人进行干预,即所谓的人机交互式的问题解决模式。而且,不同的计算机语言会影响人们的思维模式,但是,基于程序设计的思维原理是普遍的。系统化的思维与计算机编程思维与之有着深刻的内在联系。
像其他大学一样,我校已经开设了计算机基础教育,也包含了Visual FoxPro的程序设计课程。在通识教育中开设计算机程序设计课程与计算机基础知识的教育没有冲突,而是一种补充。根据教育部高教司的建议和要求,目前国内大学的计算机基础教学分成三个层次:计算机文化基础、计算机技术基础和计算机应用基础,在第二层次中包含计算机程序语言进行编程建模。因此,我们在全校的通识教育中开设了“Java程序设计基础”的课程。此课程属于选修课,在教学内容、形式、手段、考核等方面与必修课不同,同时给了学生更多的选学余地。事实上,自从我们在全校开设这门通识教育课程三年以来,每学期限制的120个名额远远不够!
2 课程的特点与定位
作为通识教育,“Java程序设计基础”具有如下特点:课程面向全校学生,面大、量广、专业种类繁多、对计算机的兴趣、知识和技能的需求各异,基础知识参次不齐,而且是低年纪的学生,缺乏必要的自学能力;学时有限,比教育部非计算机专业计算机课程教学指导分委员会提出的最低学时还少3个学时。
学生的期望不同,大致包括:
学习计算机编程:了解程序设计是什么。
学习一种程序语言:Java程序设计语言是什么。
学习新的编程技术:面向对象的程序设计是什么:
学习更多的计算机语言:Java语言与C、C++或者Visual Basic的区别。
当然,也包括通过该课挣得学分。
作为通识教育课,“Java程序设计基础”课程的目的不是或者不仅仅是培养计算机程序设计员,该课程的定位是计算机科学与技术的一门普及课、入门课,希望通过学习计算机的核心知识与技术,
让学生理解计算机软件,进而深入地了解计算机系统的工作原理和方式;
学习程序设计的思维方式,全面培养学生的综合素质;
提高对计算机科学与技术的兴趣,促进更多的学生在未来的学习和工作中应用计算机来解决实际问题。
因此,着力培养学生对计算机及其编程的兴趣和理解,成了“Java程序设计基础”的根本目标。
计算机已经成为现代社会的一个基础知识和工具,85%以上非计算机专业的学生未来在从政、经商、在某个专业领域(如电力、汽车、物流、军工、艺术)从事技术或服务工作,都可能使用计算机系统,也许会有人因为工作需要而自己动手修改或创造新的计算机软件工具或系统。这在计算机的发展史中比比皆是。例如,统计软件包SPSS最初是由斯坦福大学的政治学研究生Norman Nie开发的,国内广泛使用的财务软件用友是由在财务领域工作的王文京领导研制的,数学软件Mathematica是由数学家领导研制开发的,雅虎搜索引擎最初出现是杨致远与费洛为了把在网络上寻找的资料类别整理好而编制成的软件。最初这些简单的应用软件经过发展、进而形成了新的商机和技术,同时也极大地推动了计算科学与技术的发展。
3 教学的策略与手段
3.1 教学策略
教什么、如何教就成为通识教育的关键问题。针对该课程以及学生的特点,我们经过实践、总结了本课程教学的策略:了解概念,理解思想,“不拘小节”,“不求甚解”。
“理解概念”是任何学科的基础,每门课程都有自己独特的概念。我们在讲述Java程序设计的概念时,重点在突出差异、采用比较的方式讲授。如把数学中的实数与计算机中的浮点类型数进行比较,并分别从计算机存储与安全检查两个方面简述为什么要区分出单精度浮点和双精度浮点类型的实数。
写出好的计算机程序,除了要掌握程序设计语言本身以外,还要求理解计算机的基本组成、运用数据结构、算法设计以及软件工程的基本知识和技术,最主要是要掌握程序设计的过程,让学生理解程序设计的思维模式和工作过程。这些知识都属于计算机专业的核心课程,不可能在通识教育的程序课程中充分展开,我们只需讲解与程序设计相关的要点。
例如,变量名在数学与计算机中都表示未定的值,但是在计算机中还表示值在内部存储地址的抽象,这样就顺便补充了计算机组成的核心――存储。在软件工程方面,需要学生掌握的的基本思想是:程序是机器执行的,但更多的时候是让人阅读的!因此,写出符合规范的、让人容易看懂的程序更重要。这就要求在教学中培养学生良好的程序设计风格和习惯,如规范的变量名、必要的代码注释、清晰的程序结构等。
经典程序设计的思想是“算法+数据结构”。算法设计是编程的核心,程序是用计算机语言实现的设计思想,数据结构与算法设计环环相扣,是不可分离的程序的两个方面。变量类型、数据结构和控制结构是冯诺伊曼式计算机系统的基本模式和组成。封装、抽象、复用发展成现代向对象程序设计的核心。在讲授这些抽象思想和原理时,我们尽量采用理论结合实际、案例引导、直观教学。
我们把程序的阅读与执行结合起来,让学生直观地学习静态的程序如何动态地执行、产生结果。由于一开始就阅读实际的程序,有很多知识可能还没有学到、甚至在课程中就不出现,使得学生“一知半解”,不能完全理解,对有些问题或知识可以“不拘小节”、“不求甚解”,这样有助于在短时间内让学生了解程序设计过程和程序结构,掌握编程的基本要领。这种方式类似于在外语学习中所采用的猜测法:在阅读中出现的生词不要急于查字典,可以通过上下文来猜测,通过大量的阅读来培养语感、文化直接用外语的思维模式。程序语言类似于外语,编程者需要逐步培养用程序化的思维方式、常用的表达模式和惯用语,而不必计较一些不懂的函数、表达、语句、或者类,特别是不要在编程工具可以解决的以及需要经验积累的细微末节上花费宝贵的时间。
3.2 教学手段
在教学的内容和形式方面,我们重点采取了下面的手段。
1) 基础知识不求全。因为,在一个学期的课程中不可能让学生把一门程序设计语言掌握到实用的程度。与其泛泛的介绍Java标准版的所有内容,还不如通过Java语言深入理解程序设计的精髓。因而,我们选择与语言无关的、所有编程的基础知识,如变量、表达式、逻辑运算、控制语句、类与对象以及GUI。知识的取舍取决于学生未来可能的应用。例如有关数的运算,我们只讲十进制的数,不讲各种数进制之间的转换,不讲二进制及其运算(尽管这是计算机的基础),也不讲位运算;对面向对象部分,不讲内部类和匿名类,等等。
2) 潜移默化思维模式。培养学生程序化、系统化的思维模式,让学生抽象的、类问题的解决模式(而不是个体问题)。通过实践使学生掌握程序设计的过程,包括如何分析问题、如何用计算机语言描述问题的解决过程――即编程,如何分析并解决程序中出现的错误(调试程序),如何在不同的环境下运行程序。
3) 培养自学能力。计算机技术、尤其是软件技术的发展日新月异,没有一本语言的教材能够与语言同步。现在的计算机发展为深入学习编程语言及其技术提供了广泛的手段,学生应该掌握自学能力。我们通过演示,让学生自己动手编程、分析代码、得到结果;直接上网查找资料,使得学生自己可以查找包括wiki、Blog、用户组、厂家在内的资料,了解语言的发展,更新知识,同时培养独立研究的能力。
4) 使用工具、动态学习。计算机是实践的技术、应用的技术,唯有动手才能掌握技术和技能;很多细节不需要花费时间(也没有时间),要充分利用工具来解决非核心的问题。例如括号不配对、变量未赋值就使用,程序美化排版,甚至需要引入的类库等;将有限的时间集中到概念的解释和计算机工具的使用,例如通过例子解释为什么变量使用前要先赋值,面向对象的属性有缺省值,然后如何利用编译器来发现变量未赋值引用的错误。
针对学生的不同基础和需求,我们还采取了如下的措施:对不同的学生采取灵活的教学方式,允许部分学生以难度较大的练习代替少量的缺席;针对学生课后时间有限以及编程是动手实践的活动,我们的课堂教学采用了理论+上机实践,课时分配位1:1,其中实践的内容包括学生自己阅读程序加上动手编写程序。理论上我们分配的课堂与课后的学时位2:1,实际上有一半以上的学生课后花费不足一个小时就能完成作业,没有花更多的时间去深入学习课程内容。考核以课堂练习和课后作业为主,考核也遵循“不拘小节”的策略,主要考查学生对程序的结构、语句的选择等设计思想的掌握,而忽略语言的细节,如变量名是否正确。
4 实践与挑战
在我们已经连续开设5个学期的通识教育课程“Java程序设计基础”中,教学策略和手段经过不断改进,逐步得到了学生的认可。表1列出了最近3个学期该课程的部分统计数字。每期的120个名额都报满,参加学习的学生分布全校理、工、文、艺、管、医的各个学部。学生的合格率也在逐年提高;其中音乐、艺术和服装设计专业的学生不合格的比例较高。选该课的一年级的学生几乎都在80%,而在第二学期的比第一学期的学生要多。
下面是一些需要我们继续研究、并通过实践来检验解决方案是否可行的典型问题和挑战,也希望与同行共同探讨:
教学程度。通识教育中计算机程序设计的教学内容到什么程度合适?是否要再开设一个提高班,以满足部分学生对计算机技术的更高追求?
分班教学。理工科学生在计算机的基础和理解力方面明显比其他专业的学生要强,是否有必要进行分班教学、因材施教?如何平衡学校、学院、学生以及教师的各种关系?
教材问题。难有教材满足我们的教学思想和内容,我们给学生只列举了主要参考书和网址。这种西方通行的教学方式在我校实施起来有难处:学生不愿花钱买参考书、图书馆没有足够的教材、大一学生的自学能力尚需培养。没有教材如何使得学生学好一门课?
语言与编程:程序语言是算法设计的体现,不同的语言适合不同的编程风格与应用领域。是选择流行的、应用广的编程语言还是选择体现计算机思想、适合教学的编程语言?
共性问题。如何处理通识教育与计算机基础教育中程序设计技术的关系(如学分可否互换)?是否应该对通识教育课的设定课程通过率(四分之一的不及格率是否过高)?
参考文献
计算机基础与程序设计范文4
关键词 计算机专业;程序设计能力;培养模式;教学改革
中图分类号 G714 文献标识码 A 文章编号 1008-3219(2014)05-0018-04
计算机程序设计能力是计算机本科专业学生应该具备的最基本的能力,是其他专业能力培养的基础。计算机程序设计教学的最终目的是培养学生逻辑思维、抽象思维能力,培养学生创新意识,让学生掌握软件设计及软件开发的过程,培养学生的实际动手能力和探究能力。本文以上海电机学院计算机专业为例,探讨学生程序设计能力培养。
一、现状与问题分析
近几年来,一些用人单位反映计算机专业毕业生存在缺乏实际应用知识、动手能力与应用能力不够、程序设计开发经验不足等问题,与企业实际用人需求差距较大,而学生在后续专业课程学习中程序设计能力不强也阻碍了其专业能力进一步提升与发展。造成这种情况的原因主要有以下几方面:一是教师在程序设计课程教学过程中比较重视程序语言的语句语法讲授,算法讲解少;解决实际问题的实现方法,特别是综合型的训练更少。二是程序设计课程教学时数不够,学生上机实践时间严重不足。三是缺乏实际软件项目开发的实战训练。尽管程序设计类课程有课程设计,但多数流于形式,缺少实际软件项目的支撑,未能达到预期的学习目标。四是未重视第一门程序设计课程的教学。虽然计算机专业的多门课程含有编程内容,但第一门程序设计语言课程的重要性不亚于任何一门专业课程。由于重视不够和教学时数不足,有相当一部分学生在学完第一门程序设计语言课程后,仍然无法独立完成一个简单程序的编写、输入、编译、纠错、测试、调试和运行的完整过程。
二、程序设计能力的内涵
程序设计能力是计算机专业学生应具备的基本技能之一,也是检验计算机专业毕业生是否合格的基本标准。因此,在为计算机本科专业制定培养方案时,应该把学生的程序设计能力和创新能力培养放在重要位置。
所谓程序设计能力和创新能力是指能够开发出满足社会日益需要的以计算机为支持基础的计算机应用产品。无论是以硬件为基础的产品,还是软件产品,程序总是其核心部件。学生毕业后可能不会一直做程序设计人员,他们的目标是设计师、项目经理、总体设计师、系统分析员等,但要能够胜任这些工作,必须具有深厚的程序设计功底。软件产品开发的基本目标是满足客户的需求,由于用户需求的差异性,软件产品也应随用户需求的变化而变化,因此软件开发的核心是创新。这种创新表现在要不断开发新的软件产品,不断完善和增强软件产品功能以满足用户需求。在软件开发中,没有通用、标准的程序代码可以套用,对于新开发的软件也很难有标准的部件来组装,基本上都是从头开始。一个软件开发团队,如果没有几个程序设计能力强的设计人员作坚强后盾,无论需求分析和设计方案做得多好,最终可能只是空中楼阁。程序设计能力往往被认为是最低级的能力,但同时又是最基本、最需要的能力。
计算机本科专业有许多课程含有程序设计实验内容,如高级语言程序设计、数据结构、面向对象程序设计、软件工程、数据库系统与应用、网络工程等,都要求学生完成一定量的编程上机作业。因此,必须注意4个关键环节的程序设计能力培养,即基本程序设计能力、菜单驱动程序设计能力、可视化程序设计能力和网络环境程序设计能力。
三、构建以实践能力培养为核心的程序设计课程体系
课程体系是单个专业课程之间既相对独立又相互连接的有机整体,是专业培养方案的重要内容与组成部分,课程是实施专业人才培养的主要载体[1]。所以,必须按照学生的认知规律、能力培养规律和素质形成规律,将课程科学地组合在一起,形成富有技术本科教育特色的课程教学体系。为真正提高计算机专业学生程序设计能力,针对以前教学过程中存在的学生实践时间不足等问题,建立以高级语言程序设计(C或C++)课程为基础,面向对象程序设计(C++或VC++)课程为平台,最新程序设计开发语言课程为导向,注重学生实践能力培养的计算机本科专业程序设计课程体系,如表1所示。此课程体系突出了实践、实战主线,目前已在学校计算机本科专业实施。实践结果表明,这种课程教学设计,极大地提高了教与学双方的积极性及创造性。
四、程序设计能力培养的方法与措施
(一)重视第一门计算机程序设计课程的教学
首先,第一门程序设计课程是程序设计知识的基础入门教育。通过高级语言程序设计课程的学习,掌握计算机程序设计语言的基本构成要素、程序设计的基本过程和基本方法,使学生具备基本的程序设计能力。其次,为后继课程的学习打下良好基础。为此,要求教师既能实现程序设计语言教学的一般目标,又尽可能根据后继课程的需要,组织其理论教学内容和实验教学内容。
在第一门程序设计语言课程教学中,进行如下探索:一是在教师安排上,充分考虑教师的知识结构、业务能力、教学经验和工作责任感。任课教师必须有后继课程的教学经历或软件开发的经历,且工作责任心得到公认。二是进行难度分解。目前学校以C语言作为第一门程序设计类课程的教学内容。C语言既具有功能丰富、表达能力强、使用灵活等高级语言的优点,又有低级语言的特点。但作为开始接触计算机程序设计语言的学生,相对于其他计算机程序设计语言,其理解和接受的难度偏大。为了降低学生学习难度,把C语言的学习分成两个阶段进行。在第一学期,用2.5个学分讲述程序设计的基本知识,包括所有高级程序设计语言都必须讲述的数据类型、常量、变量、表达式、赋值运算、基本的输入输出、分支结构和循环结构语句,以及用它们编写程序的基本方法等内容,使学生具备对程序设计语言、程序设计的感性认识和上机编程的常识。第二学期,全面讲述C语言的相关知识。实践证明,通过这种改革,能有效提高学生对C语言知识和编程能力的掌握。
(二)注重四个关键环节程序设计能力的培养
基本程序设计能力培养。培养第一门程序设计课程(高级语言程序设计)来完成,这是培养学生具有较强程序设计能力最关键的一环。学生的基本程序设计能力表现为:能比较熟练地运用一门高级程序设计语言提供的数据类型、运算符、语句和函数(和过程)独立地编写解决简单问题的程序,在一定的程序设计集成环境下独立地上机调试程序,掌握最基本的程序测试和调试的方法。
菜单驱动程序设计能力培养。菜单驱动程序设计能力培养的目标是使学生运用模块程序设计技术来组织一个相对复杂的程序的功能。这个能力可通过数据结构课程教学来培养。使学生从只会编写短程序尽快过渡到编写有一定实用性的长程序,采用的方法是:先给出一个与学生编程环境一致的程序范本,让学生运行程序和阅读程序代码,分析程序中各函数的功能和算法,分析各函数间的调用关系,使学生对程序的一般组成和结构有一个直观的认识;然后给出学生上机练习题的程序代码形式的框架和一些细节函数代码,如主函数(主要包含菜单控制执行结构的代码)和一些处理细节的函数,学生只编写与上机作业有关的原理的函数。随着上机实验的深入,给出的程序代码逐渐减少,直至完全由学生独立编写全部程序代码,使学生逐步适应和学会运用抽象思维方式和模块化程序设计技术编写有一定规模、具有一定实用性的程序。
可视化程序设计能力培养。可视化程序设计的核心是以面向对象思想为基础,以窗口为基本单元,以控件为基本元素,以事件为驱动方式进行程序代码设计,是一种全新的程序设计方法。面向对象程序设计课程给学生提出了一种新的程序设计方法。可视化编程是全新的设计思想和全新的开发工具,不编程就可以设计出优美的图形界面,而且设计的程序与学生使用的现行各种软件在表现形式和操作方式上有接近感,容易激发学生的兴趣。
网络环境程序设计能力培养。以网络环境,特别是以Internet/Intranet环境为基础进行软件开发,是企业信息化、电子商务、电子政务软件开发的基础。在网络环境下,一个软件系统部署和运行在多台计算机上,需要相互协调地工作。网络环境的程序设计,必须考虑网络环境的因素,如网络通信协议是什么,不同程序之间如何建立连接,如何实现数据的交流,不同程序间运行如何同步等。基本掌握网络环境的编程技术是计算机应用和技术发展的要求。在完成软件工程、数据库和网络工程等课程的教学后,开展以网络数据库应用为基础的网络环境编程训练,以培养学生网络环境的编程能力。
(三)改革教学方法、手段和考核模式
一是调动与保持学生学习的积极性。进行专业剖析,激发学生学习程序设计的兴趣,鼓励与欣赏学生。指导学生掌握良好的学习方法,引导学生保持良好的学习心态,多写程序、实践为先,注重实践经验积累,阅读、借鉴别人设计的好程序。
二是改进教学内容,促进学生研究型学习。把握学生认知规律,对教学内容作必要的调整,教学按课程教学(以项目为载体)和课程设计分阶段开展。强调算法设计的思维方法指导,在教学中充分利用算法来引导学生进行探索,举一反三,触类旁通,指导学生自主简洁地描述解题的数学模型和算法,培养学生开拓精神和发散思维能力。
三是加强课程设计环节。采用先进的程序设计理论指导学生课题设计,使学生在实际项目开发过程中学会运用所学理论知识来分析系统,掌握程序设计方法和算法设计方法[2];注重程序代码书写风格的训练、上机调试与测试程序能力的培养,养成严谨的工作作风,使学生的抽象思维能力、逻辑思维能力和实践能力得到进一步提高,增强学生的程序设计开发能力。
四是构建有效的创新能力培养模式。在程序设计能力培养过程中,应根据教学内容灵活使用实验教学法[3]、案例教学法[4]、任务驱动教学法、运用问题教学法和兴趣一反三教学法,特别是要注重多种教学方法的有机组合。如,注重理论与实际项目相结合,结合案例组织教学;讲解与操作演示相结合,启发学生思维;教师讲授与学生讨论相结合,调动学生主动参与;教室课堂与网上课堂相结合,给学生自主学习提供空间;面对面答疑和网上答疑相结合,激发学生的潜能。
五是积极采用先进的教学手段,构建立体的教学环境。利用多媒体教学手段,用生动的图形、动画等演示抽象、难以理解的知识,为学生建立一个形象、生动、逼真的教学情境。在程序设计教学中,构建一个集教室、机房、网络三位一体立体化的教学环境,使教师能更好地实现“精讲多练”,逐步提高学生的自学能力。
六是改革课程考核方式。采用笔试、上机考核、答辩和课题评价等考核方式全面考核学生的程序设计能力、分析与解决问题能力和动手调试程序能力[5]。实践证明,这几种考核方式的结合,能较真实反映出学生的程序设计能力,同样反过来也促进了学生动手能力的培养。
(上海电机学院重点建设学科《计算机应用技术学科》,编号:07XKJ01,主持人:计春雷;上海电机学院教学团队项目《计算机程序设计课程群教学团队》,编号:2012TDJS-07,主持人:计春雷)
参考文献:
[1]郭风,朱韶红.计算机科学与技术专业课程体系建设研究[J].中国现代教育装备,2010(1):92-93.
[2]李晓辉,王淑艳.高等学校程序设计类课程教学方法改革与实践[J].吉林农业科技学院学报,2011(3):99-100.
[3]张玉春.《C语言程序设计》课程的教学改革与实践[J].吉林省教育学院学报,2008(10):55-56.
计算机基础与程序设计范文5
关键词:计算机教育;程序设计;计算思维;创新能力
c++程序设计是计算机、软件工程等专业的一门重要的专业基础课,在整个课程体系中起到承上启下的连接作用,是对c语言程序设计的延伸与拓展,同时又为后期程序设计类课程的学习奠定了坚实的理论基础和技能储备。目前的c++程序设计课程教学模式,由原来注重基础语法及理论的教学转向了理论与编程能力并重的教学模式,对学生编程能力的提高具有很大的促进作用。此教学模式在语法上强调短期的强化记忆,在程序设计上强调语法的运用和理解,基础语法知识是出发点和最终的归宿。教学的初衷是好的,但最后的结果常常是学生思维的固化,仅能熟练使用c++语言的语法规则去进行简单的编码而已。作为一门承上启下的程序设计专业基础课,其教学目的不能仅仅局限于语言本身的语法语义和使用规则的传授,而应该首先教授一种面向对象的思想和基于该思想分析问题、解决问题的思维方法,其次才是语言的语法和语义,应为以后的程序设计及其相关课程提供学习的思想和方法,提高学生从计算机的视角分析问题、解决问题的能力。
计算思维(computational thinking)是目前计算机教育界最为广泛关注和认可的一种教学理念,它不是一种具体的解决问题的方法或模式,也不是机械的计算机式思考,而是强调计算思维的一种延伸应用,是一种具有广泛普适性的思维方式。它是一种发散式的教学模式,其所提倡的抽象与分解、关注与分离、启发推理、并行处理等理念对传统的关注具体技能和概念的点式教学模式具有好的改善作用。c++程序设计的语法规则多、抽象程度高、应用灵活,同时对后续的程序设计类课程的学习具有很好的启发和引导作用,其教学内容和目的与计算思维具有很好的一致性。将计算思维引入c++程序设计课程教学,对原有的点式教学进行发散扩充,可以激发学生的学习积极性,提高教学效果,并能进一步提升学生的计算思维能力。
1 计算思维
周以真教授于2006年在Communications oftheACM期刊上首次提出了计算思维,并给出了基本概念:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。为便于理解,周教授又将计算思维具体为关注分离、启发推理、约简、嵌入、转化、仿真、保护、冗余、容错、纠错和恢复、启发式、折衷等基本概念和思维方法。它是在吸取了一般的数学思维方法、巨系统的设计与评估的一般工程思想、计算机思维方法、复杂性、智能、心理、人类行为理解等思维方式的基础上而形成的一种具有广泛普适性的思维方法。计算机科学的基础概念是计算思维的基石,直接影响构建于其上的问题的理解、分析和解决方法,同时它也是理解基于计算思维的人类行为基础。作为一种思维活动,它不是僵化的一种具体问题的解决方法,而是具有很好普适性的思考方式,提供的是一种方法论。所以,诸多学者强调计算思维应该与3R一样,作为所有人(而不仅是计算机科学家)的一种思维方式。
计算思维的本质是抽象(abstraction)和自动化(automation)。计算思维中的抽象体现在从现实世界到计算机世界的一种映射,现实世界中对象、度量、求解问题的方法映射到计算机世界中的对象表达,如标示符、变量、数组、算法、类等。与数学思维相比,计算思维是基于计算机概念的一种抽象,在抽象的同时还要考虑其在计算机世界表达的可行性。计算思维中的自动化体现在计算机世界中动作执行的自主性,虽然这种自主是一种机械性的重复,是在计算机程序控制下的自主,但也是计算思维在计算机世界中的具体表现形式。计算思维的三大特征如下:
(1)计算思维是一种抽象的思维理念,不是具体的技能或程序。计算思维是一种思维模式,是能进行多抽象层次的思维方法,不是具体的、人造的计算机软件或硬件,也不能将其等同于具体的编程或机械的重复。
(2)计算思维的主体是人,不是计算机。计算思维是人类求解问题的一种途径,其实现是由计算机来完成,而不是把人的思维固化到计算机思维的机械模式中。
(3)计算思维与工程思维具有互补性。计算思维的形式化表达构筑于数学思维基础之上,同时在解决现实问题时,又必须借鉴工程思维。在运用计算机去解决问题时,必须融合计算思维与工程思维进行综合思考。
2 基于计算思绯的教学内容梳理
c++是介于c语言与面向对象程序设计语言之间的一种兼有面向过程和面向对象特性的程序设计语言,其主要内容可以分成面向过程的程序设计和面向对象的程序设计两个部分。不同高校和专业的要求存在一定的差异,因此在实施计算思维教学过程中,教师应根据学生的专业和基础知识的掌握情况对教学内容进行适当的裁剪。
面向过程的程序设计部分主要介绍c++程序语言的基本语法规则,涉及变量类型、基本运算符、程序结构控制、作用域等,教学强调基于计算机基础概念对现实世界的抽象与表达,以强化记忆为主;面向对象程序设计部分主要介绍面向对象程序设计的内容,主要包括类、继承、多态等,强调面向对象程序语法,更强调从现实世界业务逻辑到计算机世界的抽象表达。此过程不仅仅是程序语言语法规则的教学,更重要的是抽象思维能力的培养。从课程教学内容的分析可见,c++程序设计课程的教学表面上是语法规则的学习与应用,深层次则是计算思维的训练和基于该思维的分析问题、解决问题等创新能力的培养。
3 计算思维的教学应用
计算思维的外在表现是多维的,c++程序设计的教学内容所涉及的计算思维表达也是多元的,因此在对教学内容梳理的基础上对具有代表意义的计算思维教学模式构建和教学实施过程进行详细介绍,可以对其他内容的计算思维教学起到示范和借鉴的作用。
3.1 面向过程程序设计的计算思维教学
面向过程程序设计的教学内容很大一部分是c++程序设计语言的语法和程序结构,这部分内容涉及面广、难度较大。因此记忆是基础,在记忆的基础上对学生开展计算思维的引导与启发,使其在理解语法规则的基础上,知其所以然,从而培养学生的思维能力和自、学能力。
3.1.1 数据表达、存储与处理的计算思维教学
数据的类型表达、存储与处理是任何一种程序设计语苦最为重要的基础组成部分,理解起来较为困难。我们可以通过构建现实世界与计算机世界双过程的思维模式来加深学生对数据及相关概念的理解,增强记忆效果。图1表明了数据表达、存储与处理的计算思维教学。
现实世界中的数据处理、表达与计算机世界的信息处理、表达是平行的。在教学过程中,首先,以计算机世界的信息表达与处理为基础,在记忆的基础上强调理解;其次,在理解计算世界的数据表达与处理的基础上,从计算机世界出发,来对现实世界对象进行分析,运用计算思维中的抽象、关注点分离、自动化的思维方法来分析现实世界信息的计算机表达与处理。
以现实世界中一个学生的描述为例,首先,对其进行抽象,将一个具体的对象抽象成一个虚拟对象,在此过程中运用关注点分离,分离出与所研究对象相关的特征,其他无关特征可以丢弃;从计算机概念的角度对特征进行表达,学号为字符类型,年龄为短整数型,入学时间为日期型,性别为字符型等,从而将信息保存到计算机中,并通过程序对信息进行自动化处理。
3.1.2 程序控制结构的计算思维教学
cH程序设计语言中的程序控制结构主要有顺序结构、选择结构、循环结构、转向语句4种类型,属于易学但灵活运用较难的课程内容。在设计教学模式时,要在掌握基本语法规则和原理的基础上,加强启发式教学,引导学生在不同层次上进行抽象,从不同的视角来思考问题,在保证目标的前提下,启发学生通过不同的实现方式来解决问题。
例如,对于循环控制可以启发学生通过for(){},while(){},do{}while()等结构来实现,并在实现预设目标的前提下,引导学生寻找各种结构的差异性和优缺点。
3.2 面向对象的计算思维教学
对于尚未接触过面向对象思想的学生来说,面向对象程序设计理解起来较为困难。此部分教学目的不仅是教会学生类、多态、重载是如何定义的,更重要的是教会学生面向对象的思维方式,面对一个实际问题时如何进行抽象、分离,进而将复杂的问题转化成计算机可以处理的问题。此部分计算思维训练,要与传统的教学方法相结合,在开始的时候以传统教学方法为主,在有一定基础后以计算思维方法为主。
3.2.1 类与对象的计算思维教学
类和对象是面向对象程序设计中最为重要的两个概念,也是后续学习重要的基础,对其理解的透彻程度将直接影响后期的学习效果。同时它们也是进行计算思维训练较好的案例。图2展示了一个类与对象的计算思维教学案例。
类与对象定义的理解是进行类与对象的计算思维教学的基础和起点,可以采用传统的教学方法进行教学。在学生掌握了类与对象的基本概念和构造方法后,就可以启用计算思维教学。对现实世界中的事物对象系统进行边界划分,分析每个事物的特征和相应的动作,构建其描述属性指标和操作方法,如学生由学号、姓名、性别、班级等属性指标描述,有查看成绩、班级等动作:教师由工号、姓名、代课班级等属性指标描述,有批准假条、设置课程等动作。依据类的概念对学生1、学生2、学生3、教师1、教师2分别进行抽象,生成学生类和教师类,并基于前面的分析确定类的数据成员和操作方法,用c++程序语言进行描述,将其转化成计算机解决问题的描述元素,通过类的实例化,生成计算机世界的对象:学生对象1、学生对象2、学生对象3、教师对象1、教师对象2,从而通过面向对象的方法对问题进行描述和解答。为了加深计算思维思考方式的理解,还可以结合逆向思维进行教学,提升学生运用计算思维解决问题的能力。
3.2.2 继承与派生的计算思维教学
继承与派生是面向对象程序设计的核心思想之一。在类与对象教学完成后,此项内容的教学要相对容易一些。运用计算思维的问题分解、分层抽象、恰当建模的方法对派生与继承的思想、分析问题的方法等进行讲授。代码重用是面向对象程序设计的一个重要目的之一,通过继承与派生,各个类之间既独立又相互联系,独立体现在每个抽象层次上的类可以单独创建对象;联系体现在父类和子类之间存在派生与继承关系,父类的数据和方法成员可以被多个子类共享,实现了代码的重用。在实际的教学过程中,可以通过实例分析来实施教学。图3展示了一个派生与继承的计算思维过程案例。
图3所示是一个小型诊所类构建的计算思维过程。诊所中有不同专业的医生和不同的患者,每个医生和患者都是一个独一无二的个体,在具体对象层面上他们是不同的,将他们向E泛化一层,不同专业的医生均属于医生的一个具体实例,不同的患者也仅仅是患者的一个具体实例,这样就能抽象出Doctor类和Patient类;而医生和患者都是人,具有某些相同的特性,如姓名、年龄、性别、身份证号等。因此可以在概念上对二者进一步向上泛化,从而抽象出Person类,作为Doctor和Patient类的父类,进而构建小型诊所的类之间的继承派生关系。这个计算思维教学过程是基于c++程序设计中类的概念。通过这种思维的训练,可以提高学生在面对复杂系统时,基于面向对象思想的分析、抽象、构建类及其关系的能力。
4 实施计算思维教学应注意的问题
4.1 更新教学理念、转变教学思维
教师要充分认识到计算思维在计算机教育中的重要地位以及它对提高学生基于计算机视角思考问题、分析问题、解决问题能力的重要性。在日常的教学过程中,尽可能地将学生的计算思维培养穿插于各种教学方法中,尽可能地提高学生的计算思维能力和水平。
4.2 分清计算思维培养的主从关系
计算思维是一种思维方式,不是某一具体的技能或事物,因此在教学过程中应分清计算思维培养的主从关系。学生是计算思维培养的思维主体,具有主观能动性;教师是计算思维的引导者,具有设计具体思维情境、引导启发的作用。在教学过程中,应该把握好引导的度,既要做到不代替学生思维进行灌输式教学,又要防止学生简单机械地重复已有思维内容,要在引导的同时没置好思维情境和问题,启发学生积极主动地运用计算思维去分析问题和解决问题。
4.3 尊重思维方式的多样性
思维方式具有多样性,在计算思维培养的教学过程中,教师对学生思维方式的多样化要持有一定的宽容态度,并适时地加以引导,启发学生对问题进行多视角的分析,提升思维的灵活性和创造性。
4.4 遵循可接受教学原则
计算思维培养是一项长期的过程,目的是在传授知识的同时,训练学生基于计算机概念分析问题和解决问题的能力。因此,在具体的教学过程中,要做到因人、因材、因情境施教,不应为了计算思维而计算思维,要与其他的教学方法相结合,依据学生的思维认知规律,遵循可接受原则,使学生的计算思维能力在学习知识的同时自然地形成。
5 结语
计算机基础与程序设计范文6
当前社会职业的多样化,学生就业的需求,高等教育中非计算机专业的计算机基础课程体系也应该有相应的改革,使得新的课程体系,可以提供给理科、工科、文科、艺术类等其他不同的专业进行计算机基础教育时更丰富的选择。使各个专业的毕业生将来在择业时在计算机教育上能够更贴近用人单位的要求。《非计算机专业计算机公共基础课的教学改革与实践》的主要的目标针对我校非计算机专业计算机公共基础课教学进行课程体系改革的研究与实践,与此相应的教学方法、教学内容、教学模式、实验教学、教材、计算机基础课程考核方法应同步改革。
二、我校的计算机基础教育新旧课程结构的比较
根据高等教育的发展,对我校非计算机专业的计算机基础教学提出了新的要求,相应的课程体系改革为:计算机基础分为大学计算机基础、计算机技术基础和计算机应用基础三个层次,为必修课或选修课。其中:理工类建议选择C语言程序设计、java语言程序设计等,文科类选择VB程序设计、web程序设计等;第四、五学期各专业可根据专业培养需要选择。同时为了使同学们能更好的掌握知识,将《C语言程序设计》《java语言程序设计》《VB程序设计》《web程序设计》《动漫设计》课程分为两个学期完成,称为《C语言程序设计(1)》《C语言程序设计(2)》,其他课程以此类推。
三、教改具体措施以及效果
(一)全程机房教学,增强动手能力
教学方法是为实现教学目标、完成教学任务所采取的措施。传统的三中心(教师、教材、课堂)教学方法既不适应社会发展的需求,也不符合计算机教育的特色,必须改革。我校的《大学计算机基础》由原来的课堂教学,改为全程机房教学,使同学们在边听教师讲解的同时,可以直接上机进行操作,在学习理论知识的同时,可以立刻得到对计算机操作的感性认识。通过三个学期的教改实践,完善了全程机房教学模式,对同学们使用计算机的动手能力有很大的提高。
(二)配套教学软件,提高学习能力
本课程组为《大学计算机基础》课程开发了一个《大学计算机基础辅导练习系统》,该系统分为抽题模块、答题模块、判卷模块,本系统为C/S结构,当管理员在服务器端设置好本次模拟练习的题型比例后,系统自动生成一套模拟试卷;所有的同学们可以在客户端进行答题,当答卷完毕时,由服务器端自动进行判卷并将本次练习的结果反馈给同学们;该系统可以提供给学习本课程的同学们经过教师的指导后,在课堂内外自行进行练习。以便同学们完成练习后,自己可以评判自身的学习程度,并在下一阶段的课内外学习中调整自己的学习状态。本系统已经提供给2005级大一学生进行了初步使用,体现了较好的作用。
(三)开发网络平台,整合教学资源
本课程组在调研了周边各高校的计算机基础教育的情况,开发了一个本校的《计算机基础教育中心教学平台》,在本教学平台上,提供了基础部课程的相关介绍,教学信息的,教学资料的下载等等功能,可以提供给任课教师所任课程重点难点详细介绍。对课堂教学起到了很好的补充作用,方便了同学们在课余时间继续学习计算机基础课程。在本课题的后续时间里,拟设计开发计算机基础教学课程的基于校园网教辅系统,使得同学们可以开展课余时间自由学习。该平台具有以下优点:①发挥以计算机为基础的现代多种媒体的作用,使教学信息组织超文本化。多媒体的超文本特性可实现教学信息最有效的组织与管理。②在培养高级认知能力的场合中,因特网和校园网是协作学习的主要形式,实现了协作式教学。③教学过程的生动性是多媒体计算机的强大魅力之所在。在教学中可以同样重视教与学这两个部分。强调学生的参与意识,教与学成为两个相辅相成的部分。调动学生学习的主动性,培养学生的“发现式”学习能力,使学生不仅学会,而且会学。④在短时间里要获得大量的信息与知识,这在传统的教学模式中是可望不可及的,而以多媒体网络作为传播信息的渠道,使教师与学生、学生与学生之间,可以同时传播大量的信息,大大提高教学效率。
(四)编制多媒体课件,增加课堂吸引力
根据我校计算机基础教学的实际情况,我们重新编制了《大学计算机基础》《计算机程序设计A》《计算机程序设计B》的电子课件,使之更符合我校的实际教学情况,更符合浙江省计算机等级考试的要求。其中《计算机程序设计A》课件获得中国计量学院首届多媒体课件竞赛二等奖。改编后的课件具有以下优点:界面清晰、美观,结构清晰,例题丰富、并附有书本外的课后习题。
(五)出版教辅材料,同步教学改革
根据高等教育中对计算机基础教学提出的新要求,和结合浙江省计算机等级考试的要求,本课题组编制了《C语言程序设计实验与习题指导》面向21世纪高等院校计算机系列规划教材,该教材由“科学出版社”出版,并于2005~2006学年第二学期开始投入我校、浙江工业大学等高校使用;根据我校学生应考浙江省计算机等级考试的需要,本课题组编制了《C语言辅导与讲义》、《VB程序设计辅导与讲义》,并与2005~2006学年第一学期开始投入使用,学生们反映良好。
(六)开发考试系统,改革测试手段
计算机基础课程是一门应用技术学科,主要凭试卷来检测大学生的学习效果,并不能完全反映出学生的实际能力。而且试题类型目前多是测试学生对所学知识是否了解,不是考核学生解决问题的能力,并没有挣脱应试教育的樊笼,严重影响了创新型人才的培养。现在这种考试方法,使得学生为了考试而学习,不能提高学生学习的积极性,不能发挥学生的创造力,这种考试方法与素质教育大相径庭。本课题组开发了《大学计算机基础上机考试系统》,本系统具有抽题功能、答题功能、判卷功能、存储功能、输出功能,对其中的实践部分从以前的“纸上谈兵”改为“上机实战”。其中的判卷功能、存储功能、输出功能也使得该课程实现无纸化考试,该考试系统于2004~2005学年第二学期开始投入使用。新的考核方法给了学生一个发挥才能的空间,变被动的死记硬背为灵活的实践操作,使学生成为知识的主人。
四、实际作用与效果
通过对非计算机专业计算机公共基础课的教学改革与实践,对提高教学质量,效果明显。我校非计算机专业学生在学习C语言和准备迎接浙江省计算机二级考试中,选择了我校自行编制的《C语言程序设计辅导与讲义》《VB程序设计辅导与讲义》,取得了较好的成绩。 在该完成该课题的过程中,陆慧娟老师等于2005年11月在“首届大学计算机基础课程报告论坛”发表了《多科性大学计算机基础教学课程体系的改革与实践》教改论文,该文以本校的计算机基础教学为背景,探讨了非计算机专业计算机基础教学课程体系的设置、教学方法的改进和师资队伍建设等问题。黄俊老师等于2005年11月在“首届大学计算机基础课程报告论坛”发表了《配对编程教学模式在程序设计课程教学中的探索与实践》教改论文,配对编程方法是两学生并排在一台计算机上工作,协同完成一个设计、代码编写和调试的新的程序设计学习方法,该文对配对编程教学模式在计算机基础课程教学的应用进行了探索与实践,提出了配对编程在程序设计基础教学过程中存在的问题和解决的办法。