程序设计

2022-03-23 版权声明 我要投稿

第1篇:程序设计

浅探《Java程序设计》的课程设计和教学设计

摘要:Java语言是时下首选的软件开发语言之一。具有计算机专业的高职高专都开设有这门课程。黄冈职业技术学院计算机网络专业是中央财政重点扶持的专业,《Java程序设计》是这一专业的核心课程。

关键词:Java;语言;课程设计;教学设计

Java语言是时下首选的软件开发语言之一,《Java程序设计》是高职高专计算机网络专业、计算机应用专业的专业课和软件外包服务专业的专业核心课程。

1 《Java程序设计》的课程设计

通过广泛调研,在充分了解Java程序员的工作任务的基础上,并参考程序员国家职业标准制订了本课程标准。课程设计编制了三种类型的教学载体:JAVA简单应用开发、基于数据库的桌面信息系统设计、JAVA网络应用程序设计。目的在于以工作任务为导向,将教学内容融入到载体中实施教学。即由任务驱动学习,打破传统学科体系的知识结构,从根本上改变过去存在的学生学习了各种技术后,仍然不会使用这些技术进行真实软件项目设计的局面。

表1 《Java程序设计》教学内容

本课程标准在设计上突出体现职业教育的技能型和应用型特点,着重培养学生的实践应用技能,力求达到理论方法够用,技术技能过硬的目的。

课程内容的选取是根据本门课的培养目标确定的。为了使知识目标、能力目标和素质目标得到落实,我们构建了基于工资管理的桌面信息系统和推进式的不确定性的动态页面设计为主线的课程内容。把整个课程教学内容分成五个模块13个单元,保证理论教学与实践教学融为一体。

五个模块13个单元的教学内容根据培养目标和载体进行了整合序化。表1是《Java程序设计》的教学内容与学时安排。

2 《Java程序设计》的教学设计

本课程采用“教、学、做”合一的教学模式 。以教导学、以做促学,学以致用。把软件开发模式引入课堂,把从企业聘请来的软件设计师引入课堂,以真实软件项目为载体,实行开放式教学。

本课程的教学方法主要采用项目教学法、案例教学法和任务驱动法,分组讨论与启发引导相结合。结合各个单元的内容特点,具体方法如下表2。

表2 各个单元的教学方法

《Java程序设计》教学过程的展开是按照单元进行的,各个单元的课时数不一定相同。各模块的课时安排如下:

模块一:Java程序设计基础(12学时)

模块二:面向对象的程序设计(24学时)

模块三:图形程序设计(40学时)

模块四:高级应用(40学时)

模块五:课程设计(整周40学时)

合计:116学时+整周课程设计40学时

教学过程按照下列六个步骤进行:

第一步:展示效果。展示动态网页或基于工资管理的桌面信息系统,在让学生建立感性认识的同时,明确本单元的学习目标,学习任务和需要掌握的内容。

第二步:讲解内容。剖析学习任务,分解学习内容,以载体为目标讲解各个知识点,激发学生学习的热情和兴趣,增强学生学习的主体意识和地位。以软件作坊为教学情境展开教学。

第三步:实践训练。训练学习编制程序模块的能力。让学生自己动手,自己实践,完成本单元的学习任务。学生在实践过程中,采用分组讨论,制订步骤的方式逐步实施,老师起指导、协调、监督、验收的作用。

第四步:归纳总结。在学生实践的过程中,既要注意过程的归纳,也要重视结果的小结,最后由教师进行总结。强调关键知识点和程序编制的注意事项,勇于面对失败,在失败中汲取教训,养成良好的编程习惯。

第五步:巩固拓展。在学生完成本单元的设计任务后,由教师和学生分别提出完善或扩展界面功能的问题,然后由学生自行解决,教师辅导。达到熟练掌握技能和拓展知识面的效果。

第六步:作业布置。布置作业的目的在于检查学生的学习情况和知识掌握情况。作业的来源有两个渠道:教师设计作业和学生自举作业。在作业中反应出来的个别问题通过答疑辅导解决、共性问题拿到课堂讲解。保证每一个单元的学习步步为垒。

其中模块一、模块二和模块四的第十二单元简化上列步骤。其它各个单元按照上列六个步骤进行教学。

《Java程序设计》的考核方式综合了平时、单元实训、模块实训、笔试和课程设计五个环节。囊括了过程性评价和终结性评价,涵盖学生的态度、知识和能力,突出实践动手能力考核。各个环节所占的比重和依据如表3。

参考文献:

[1] 中国高等职业院校计算机教育改革课题研究组.中国高职院校计算机教育课程体系·2007[M].北京:中国铁道出版社,2007.

[2] 王先国.Java程序设计实用教程[M].北京:清华大学出版社,2009.

作者:刘烨

第2篇:《C++程序设计》项目式教学设计

摘要:该文首先分析了《C++程序设计》传统教学方法的局限以及引入基于项目的学习理论的必要性,接着介绍了基于项目的学习理论的研究成果,然后从学习项目设计、学习过程设计、学习评价三个方面阐述了《C++程序设计》项目式教学设计,最后给出了作者的实践反思。

关键词:基于项目的学习;《C++程序设计》教学;项目式教学 学习过程;学习评价

1 概述

《C++程序设计》是面向对象的编程语言,计算机及相关专业的专业基础课,内容丰富,包含基本数据类型、控制语句、数组、指针、类、继承、多态、输入输出。按照传统的教学方法,老师先讲原理,然后学生上机实践,存在不少问题,学生学习起来很累,教师也教得很辛苦。

1.1 学生的学习主动性不高

教师讲学生练,学生处于被动接受的状态,不利于发挥学生学习的主动性,学生满足于完成老师的作业完成任务,学习的钻研不够,越学越困难。

1.2 学生的动手能力不强

以知识点为中心,辅以一定的案例,学生对教师的例子,习惯于只字不落的简单模仿,只求运行结果,C++编程能力、调试程序等方面的动手能力难以得到很好的发展。

1.3 学生缺乏实际的项目经验

学生完成的都是原理性的例题,没有参加过C++实际项目的开发经验,而企业非常看重实际项目的分析问题、解决问题的能力、合作能力,不利于学生求职以及适应工作。

基于项目的学习,作为是一种新建构主义下的研究性教学模式,强调协作学习、自主探究和创新发展,以培养学生良好的学习方式为目的,着眼于培养学生解决实际问题的能力,真正体现“以学生发展为本,以学生人人成功为目标 ,以学生学会学习为中心,以培养学生创新能力为核心”的教育思想内涵[1]。针对传统《C++程序设计》教学中存在的上述问题,拟引入基于项目的学习理论对课程进行改革,以项目为依托开展教学,激发学生的学习主动性,培养学生的动手能力,增长学生的项目经验。

2 基于项目的学习理论介绍

基于项目的学习的理论及其应用都开始于美国, 是开展研究性学习的主要学习模式之一。国外关于基于项目的学习的研究成果丰富,理论己经基本成熟,实践的例子也很多。

2002年宁波大学的刘景福副教授、江西师范大学教学论研究中心钟志贤教授在《外国教育研究》上发表的《基于项目的学习(PBL)模式研究》中给出了基于项目的学习的定义,以学科的概念和原理为中心,以制作作品并将作品推销给客户为目的,在真实世界中借助多种资源开展探究活动,并在一定时间内解决一系列相互关联着的问题的一种新型的探究性学习模式[2]。它的理论基础是建构主义学习理论、杜威的实用主义教育理论和布鲁纳的发现学习理论。

2009年中央电教馆章雪梅老师在《基于项目的学习及其教学设计》一文中指出,基于项目的学习是一种强调主动探究和创新实践的教学模式,它的教学设计的关键环节包含问题设计、过程设计和评价设计[3]。项目是基于项目的学习的核心,所有的学习都是围绕项目展开的,项目提供了学习的方向、学习的动机和学习的应用。学习评价的出发点应当是促进学习者个人和小组的进步,学习评价包括自主学习的能力、问题解决的能力以及小组合作技能。

2011年重庆大学金凡路老师在《职业教育立体多元化项目主题式教学评价构想》一文中提出通过多元化评价主体、多层化评价内容、多样化评价方式、适切化评价时机、系统化评价标准等来建构立体化项目主题式教学评价体系[4]。

3 《C++程序设计》项目式教学设计

《C++程序设计》项目式教学设计可以分为学习项目设计,学习过程设计,学习评价三个方面。

3.1 学习项目设计

选择合适的项目,既能涵盖基本的语言机制,又具有一定的实用意义,难度适中,有利于激发学习的学习兴趣,使他们积极的投入到项目的学习。经过两学期的教学实践与改进,设计出如下学习项目。

3.2 学习过程设计

遵循基于项目的学习理论,针对《C++程序设计》的教学特点,该文把学习过程分为创设情境、教师示范、项目设计与分工、项目实施、项目演示五个步骤。以第六章类与对象中学生成绩管理系统为例,说明学习过程设计。

创设情境:回顾第4章数组学习中的学生成绩管理系统(简易)版本,要求使用面向对象分析方法,识别出其中的类,并编写相关代码。

教师示范:教师讲解完成该项目所需的基本知识,面向对象的分析方法,类的定义,对象的定义与使用,共同分析人事管理系统中的类以及对象。

项目设计与分工:以2-3人小组为单位,分析学生信息管理系统中的类与对象,讨论类定义包含的属性和方法,main函数的设计,并分工到小组成员,教师巡视,查看小组进度。

项目实施:小组成员完成自己的模块,调试错误,集成程序,遇到问题可以小组成员讨论,可以上网搜索资料,也可以请教教师。

项目演示:以小组为单位,演示程序,展示学习成果。

3.3 学习评价设计

学习评价采用多元化评价主体,自评、组评、教师评价三者相结合;评价内容不仅包括知识技能,还包括团队精神、沟通能力以及创新能力,进行综合评价,学习评价表设计如表2所示。

4 反思

在《C++程序设计》课程教学中引入基于项目的学习理解,是一次全新的尝试。学生是知识的主动建构者,有利于调动学生学习的积极性,养成良好的自主学习习惯。教学内容是具有实际意义的编程项目,有利于学生职业能力的培养与形成,贴近IT企业需求和市场定位。学习方式采用小组学习,有利于学生团队精神、沟通能力的发展,提高学生的社会适应能力。教师是学习的组织者、引导者、咨询者、评价者,对于教师提出了更高的要求,不断学习,积极学习前沿C++编程技术,深入企业实践,甚至联合领域的专家,才能更好的胜任教学工作。

参考文献:

[1] 邬彤.基于项目的学习在信息技术教学中的应用[J].中国电化教育,2009(6).

[2] 刘景福,钟志贤.基于项目的学习(PBL)模式研究[J].外国教育研究,2002(1).

[3] 章雪梅.基于项目的学习及其教学设计[J].教育信息技术,2009(2).

[4] 金凡路.职业教育立体多元化项目主题式教学评价构想[J].职教论坛,2011(3).

[5] 周玉芬.高职教育基于项目的学习活动设计[J].职教论坛,2007(14).

[6] 孙庚.项目教学法在C++程序设计课程教学中的实践[J].计算机教育,2008(2).

作者:苏美娟

第3篇:Java程序设计课程实训设计

[摘 要]Java技术是计算机科学与技术相关专业培养的核心技能,本课程设计是在《Java程序设计》课程上设置的,在高职高专人才的培养中占有核心地位。它是巩固学生所学理论知识、培养学生动手能力并使理论与实际相结合的重要实践环节。 Java程序设计课程实训部分在对于学生提高综合运用能力起到了至头重要的作用。

[关键词]Java程序设计 实训 设计

一、实训教学的性质和任务

Java技术是计算机科学与技术相关专业培养的核心技能,本课程设计是在《Java程序设计》课程上设置的,在高职高专人才的培养中占有核心地位。它是巩固学生所学理论知识、培养学生动手能力并使理论与实际相结合的重要实践环节。

本课程设计的目的和任务,是通过学生用Java语言设计一个完整的应用程序,使学生综合应用所学知识完成软件的分析、设计、调试和总结,提高学生对Java语言的综合应用能力和解决问题的能力。

二、实训教学方法手段和考核方法的设计

(1)实训教学方法和手段

任课教师根据课程《网络程序设计Java》教学大纲中的重点内容,给出相应的题目或项目,指导学生完成任务。实训前必须制定好上机步骤,弄清实训目的;要求学生掌握实训项目所需的知识、操作方法或步骤,并写出详细的实训报告。

(2)实训考核方法

通过设计答辩方式,并结合学生的动手能力,独立分析解决问题的能力和创新精神,实训报告和答辩水平以及学习态度综合考评。

考核标准包括:

1.设计与实训报告 (20%);

2.程序的可用性,实用性,通用性,可扩充性(30%) ;

3.学生的动手能力、综合解决问题能力、创新精神(20%) ;

4.答辩水平(20%)。

5.态度和纪律 10% (分为优、良、中、及格和不及格五档)

三、实训内容与要求

(1)java系统程序开发

资产管理系统、学生信息管理系统、电子商务系统、网络购物系统、网络聊天室、人事管理系统、选课系统、论文管理系统、新闻发布系统、考试管理系统、学生宿舍管理系统等。学生可以小组为单位任选其一完成。

(2)Applet程序开发

做一个广告屏,显示一段文字,如图1所示,能够对文字的颜色、风格、字体、字号等修改。

要求:做成APPLET程序或APPLICATION程序;用APPLETVIEWER运行;能够在网页中运行。

(3)游戏开发

1.五子棋双人对弈

开发游戏性程序,例如五子棋双人对弈程序、扫雷程序,根据学生情况,此部分为选做内容。

五子棋双人对弈程序要求:

①按“重新开具”可以开始新的一局。

②需提示当前该哪方下棋,并提示已下棋子的信息。

③一方赢时游戏结束。

2.俄罗斯方块游戏。

说明:以上内容为模板内容,其它题目也可自己设计,但难度要相当。具体内容可根据实际由指导老师审定。

(4)总体要求

1.对系统进行功能模块分析、控制模块分析正确;

2.系统设计要实用;

3.编程简练,可用,功能全面,具有较好的健壮性;

4.说明书、流程图要清楚。

四、授课计划与学时安排

(1)教师介绍本课程设计的目的、内容、要求、方法和安排。(4学时)

(2)学生消化信息、完成设计报告。(6学时)

(3)教师审查设计报告。通过审查的学生的设计报告,然后调整确定实施方案。 (4学时)

(4)学生完成课程设计的程序设计环节指导老师作必要的现场指导。(20学时)

(5)验收并简单考核。(4学时)

(6)撰写总结和实训报告。(2学时)

五、课程设计指导教师

由主讲教师和实验指导教师共同承担。

六、课程设计地点

计算机中心机房或者学院專业机房

参考文献:

[1]王唯,Java程序设计[M],北京理工大学出版社,北京,2007年

作者:王亮

第4篇:《多核程序设计》概述

半导体技术的进步使单芯片多处理器成为现实并推动着多核计算技术的不断进步。浙江大学从2006年开设单独的多核课程,并联合国内五所重点高校设计编写了《多核程序设计》作为该课程的教材,对多核计算技术进行了全面深入的讲解,以期由此完善学生的知识结构。

1多核计算技术的概述

随着新材料的应用和新技术的发展,VLSI技术取得长足进步,在单个芯片上集成多个处理器核心构成多核处理器已经成为处理器技术的主流。按计算内核的对等与否,CMP可分为同构多核和异构多核。计算内核相同,地位对等的称为同构多核。然而,一般认为处理器通用核的数目在超过16个后,再增加通用处理核的数目就难以带来更大的性能提升。于是出现了一些为特别任务专门定制的专用处理核,包括面向科学计算等的“领域专用核”、图形图像处理和数字信号处理(DSP)等“行业专用核”。这些专用核的体系结构利用特定应用的特征进行定制,从而达到定制应用的高性能和高效率。

从2005年出现的英特尔与AMD的双核处理器、2006年推出的4核处理器到2007年2月英特尔公司展示的80核处理器,处理器中集成核的数目呈现迅速增多的趋势。除此之外,具有更多核和不同功能核的处理器也在研发,例如整合了1025个简单处理器的芯片Kilocore,包括1024个8位处理器和1个Power PC核。

伴随着多核处理器的发展尤其是处理器核数目的增加与处理器核功能的变化,在体系结构、软件、功耗和安全性设计等方面,巨大的挑战也随之而来。处理器的发展使得原有面向单核或者多处理器的软件架构不适于在单芯片多处理器的硬件结构上充分利用多计算核心的能力,需要相应的软件层面的共同发展。为此,软件结构的变化尤其是针对多核硬件体系结构的程序设计成为有效发挥多核计算能力的重要方面。

为了适应技术的发展,为社会培养合格的计算机人才,在大学计算机教学中开设相应的多核计算课程势在必行。计算机方向课程的开设尤其是教材的设计,不仅要注意到满足完善学生知识结构,适应计算机技术迅速发展的情况,同时也需注意到社会对于多核计算技术方面人才的需求,通过合理的设计,满足知识更新与就业两方面的要求。

2多核课程设计

多核计算技术的发展使得计算机教学发生了变化,这种变化主要来自于多核计算技术所带来的新的知识点。这些新的知识点主要包括:多核SOC芯片技术;多核芯片与传统单核微处理器、SMP的区别;多核下的各种硬件设计技术(Cache与存储一致性、网络互连、IO管理);并行体系与多核体系结构;典型多核芯片介绍;嵌入式多核芯片技术;多核平台结构与芯片组支持技术(包括固件技术);多核操作系统;多核系统软件对并行编程的支持;多线程编程对多核的支持;多核多线程编程技术(主要是关于Windows与Linux操作系统);OpenMP对多核的支持;多核平台上的编译工具与编译优化技术;多核API优化函数库;多核多线程程序的性能评测工具与方法。

这些新知识点的出现,使得越来越多的高校开设多核课程以适应技术的发展与多核时代对高校计算机人才培养的新需求。例如,美国计算机专业最好的CMU、MIT、Backley、Harvard和Stanford五所高校,均通过增加新的课程或者在原有课程内容中增加多核内容的方式,以适应多核计算机的出现与发展。

因此,综合考虑上述因素,并参考国外高校的课程开设方式,浙江大学开设了自己的多核课程。浙江大学以学校计算机教学的实际情况为基本出发点,让学生了解当前计算机芯片设计领域中新兴多核体系设计的基本原理、技术难点、目前发展状况,以及对计算机领域带来的相关影响等,以通过建立体系经典理论研究和实际的发展方向之间的桥梁,为将来从事体系结构领域、系统软件领域以及相关领域的高水平研究打好扎实的基础。这是浙江大学多核计算课程设计的目标,也是我们教材设计的主要目的。

通过分析多核的知识点,浙江大学将多核计算课程分成了两个层次:以编程训练为主的本科多核计算课程和以编程为基础以多核理论与发展为主要内容的研究生课程。本科课程的名称为并行计算与多核编程,作为专业选修课程。多核的本科课程完全以编程训练为主,结合多核编程工具,通过编程作业锻炼学生对多核编程能力的培养。对于研究生课程,名称为多核计算,主要着眼于当前多核技术的研究热点和多核技术的高级课题,在研究生的体系结构课程和超大规模集成电路基础上作进一步提高,结合操作系统、编译原理、编程方法等交叉学科,介绍在体系结构上的多核理论与相关学科对此的相应发展。

3多核课程教材设计

3.1概况

由于多核计算技术相对较新且仍在不断发展,目前国内外多核计算方向的著作以科学论文为主,偏向于研究与探索,浙江大学结合科研的实际情况,由任课教师采用科学论文作为研究生课程的主要教学材料。

而对于基础教材而言,由于多核计算方面的书籍还是刚刚起步,因此可供选择的余地较少。此外,由于多核计算是一门动手能力和理论要求都很强的课程,需要更加重视实践环节,为学生设计实践训练,同时,目前多核底层调优软件是由英特尔公司推出,能实现多核的编译、运行库、性能测试、多线程检测与优化,对多核教学帮助极大。因此,浙江大学采用了基于英特尔的软硬件,作为实践的基础培训。有鉴于此,目前浙江大学的多核课程2006年使用的教材是由英特尔公司的(孟加拉)Shameem Akhter与(美)Jason Roberts撰写、Intel出版的《Multi-core Programming: Increasing Performance through Software Multi- threading》,2007年3月电子工业出版社推出了由李宝峰、富弘毅、李韬三位博士翻译的中文版,我们参与了该书的审稿工作。该书是国内第一本全面讲解多核程序设计的书,同时,由于它介绍了基于Intel多核平台的性能评测和调优工具,相对适合于目前的教学。

由于该书的作者是英特尔的平台结构师与软件工程师,尽管参与了多核处理器的架构与软件设计,对多核计算技术了解非常深入,但是其写作目的与风格均是工程师写给工程师的书,并不适用于大学教材。与此同时,由于多核计算技术毕竟是正在发展当中,目前国内外的确缺乏多核编程的教材。

3.2《多核程序设计》

为了适应多核计算技术的发展,促进国内多核课程的建设,浙江大学、清华大学、北京大学、复旦大学、上海交通大学合作编写了《多核程序设计》教材,将于2007年7月由清华大学出版社出版。清华大学、北京大学、上海交通大学、复旦大学分别在2006年秋冬学期,开始开展多核方向的教学。

本书的主要目的是作为多核计算课程的教材使用,而从对多核技术知识点的分析可以发现,适合作为教材编写的主要是多核体系结构程序设计的相关内容,因此本书在编写时以多核计算技术的基础知识概论为基础,以多核程序设计方法为骨干,主要包括基础并行程序设计方法、多线程基础、利用线程API进行程序设计、OpenMP与MPI,以及多线程应用程序的调试和测试工具的使用等,以帮助大学生学习编写多核体系结构下高性能程序代码。

本书共分为八章,以多核技术导论为始,以多核软件工具介绍为终,分别覆盖了基本的多核体系基础、并行计算基础、多核体系下线程理论、Windows与Linux多线程编程与调优、OpenMP多线程编程与调优、MPI多线程编程与调优和多核软件工具的使用。从结构上看,本书的内容主要包括三个方面:

(1) 多核理论。这部分内容包括了本书前三章的内容。第一章为多核技术导论,简要介绍微处理器发展史、并行计算机、超大规模集成电路与系统芯片发展、片上多核处理器架构与典型多核芯片架构、芯片组对多核的支持,以及操作系统对多核处理器的支持方法。第二章是并行计算基础,介绍并行计算机体系结构、并行计算模型、进程与线程、并行编程环境、并行编程语言与编译器、并行计算性能评测,并介绍常用并行数值算法,例如并行矩阵乘法、线性代数方程组并行求解方法、快速傅立叶变换。最后介绍并行编译器。第三章详细介绍线程的基本概念,包括多线程的概念,用户级线程和内核级线程,多线程的映射模型,线程的生命周期,多线程环境下的进程控制语义,以及线程的同步,包括互斥量(mutex)、信号量、条件变量、锁的粒度与死锁。

(2) 多核编程与调优。包括了本书第四至七章的内容,分别讲述了不同操作系统与不同多线程编程技术下,怎样进行多线程编程和调优来充分利用多核处理器的效率。其中第四章是教学生如何在Windows下通过多线程方法进行多核编程及调优,首先介绍了Windows线程库,然后通过例子介绍了使用win32线程API进行线程创建、管理、终结,并介绍线程执行和资源存取方法,以及多线程调试与优化技术,包括调试、跟踪、线程命名等。第五章介绍了在Linux下使用多线程进行多核编程及调优的方法,与前一章类似,首先介绍POSIX线程库Pthreads,然后是结合例子介绍基本线程的操作与线程的属性,最后是使用GDB 调试线程以及线程的调优。第六章介绍OpenMP编程及性能优化方法,结合使用Microsoft Visual Studio.Net 2005教育学生如何编写OpenMP程序,并教育学生使用OpenMP编写多线程应用程序的技巧,包括循环并行化、并行区域编程、线程同步,最后分析OpenMP多线程应用程序的性能。第七章是MPI编程及性能优化,介绍了最常用和稳定的MPICH安装和配置过程,并详细介绍了MPI编程基础知识与MPI群集通信、MPI程序排错方法与性能分析优化方法。最后简要介绍了MPI-2。

(3) 多核软件工具。包括了本书第八章。由于目前的多核软件工具基本上是由英特尔公司开发并提供教学使用,因此本章的工具介绍基本上以英特尔的各种调优与性能分析工具为主,这既符合目前的实际教学状况,也符合社会需求。第八章所介绍的多核软件工具包括编译器对多核的支持、VTune性能分析器、MKL数学核心函数库、Thread Checker线程检查器、Thread Profiler线程档案器的使用与实验。

由于多核课程是对动手实践能力要求高的一门课程,在进行教材设计时,除了上述的书面教材之外,还需要设计配套的实验教案等实践教学内容。因此,本书在编写时也设计并实现了完整的教案、实验代码与实验环境,以便多核教学的正常进行。

《多核程序设计》一书体现了在本文第二节多核课程设计提出的多核课程教学的目标,结合了五所大学进行多核课程教学的教师们的经验。我们将对《多核程序设计》一书的设计思想与结构展现在此,希望能够起到抛砖引玉的作用,为国内高校的多核课程建设提供一个完整的教学过程示范,推动大学开展多核程序设计课程。

4总结与展望

本文提出了浙江大学多核课程教材的设计方法作为一种探索,希望为计算机教学课程体系在多核技术上的变化提供经验。多核计算技术方兴未艾,大学计算机课程教学需要适应多核计算机的发展与变化,不断地更新多核课程的设计与内容。可以预见,未来对多核课程的设计必将推陈出新,同时,多核教材的设计也必然会受到影响,出现新的设计理念。

作者:陈天洲 曹 捷 王靖淇

第5篇:基于工作过程的《C#程序设计》课程设计

摘 要:论文以《C#程序设计》课程的课程设计为例,阐述了基于工作过程课程设计的一般思路和方法,这对高职院校的课程改革有很好的借鉴意义。

关键词:基于工作过程 课程设计 典型工作任务 教学情境

高职教育承担着为社会培养高素质、高技能型人才的重任,《C#程序设计》是软件技术专业的核心专业课程,在以往的教学中,一直采用的是先理论、后实践的教学模式;在这种模式下,把对知识的理解与掌握摆在了首要的位置上,实践教学大多是为验证或巩固理论知识而设计的,忽视了对学生技能的培养,这与高职教育以能力培养为本位的初衷是背道而驰的,因此必须进行课程改革;在教高[2006]16号文件中明确提出,课程建设与改革是提高教学质量的核心,也是教学改革的重点和难点。高等职业院校要积极与行业企业合作开发课程,根据技术领域和职业岗位(群)的任职要求,参照相关的职业资格标准,改革课程体系和教学内容[1]。

由于我国高职院校的现行课程体系大多源于传统的本、专科院校的课程体系,其典型的特征是追求学科体系的完整性,每门课程的微观内容的设计与编排也远未跳出学科体系的藩篱[2],在这一传统观念束缚下的课程设计始终不能适应职业工作的需要,因此,进行课程内容重构,是实现高职人才培养目标将是亟待解决的重要课题。本文结合本校《C#程序设计》精品课程的课程设计,探讨基于工作过程的课程设计的一般方法。

1 基于工作过程的课程设计简介

基于工作过程的课程设计方法是由德国不来梅大学技术与职业教育研究所(I T B)于20世纪80年代首先提出的[3],它是以现代职业工作整体化分析和描述,为基础进行的工作过程系统化课程设计方法。该方法认为现代课程研究的关键在于解读契合在实践中的知识。它打破了传统学科系统化的束缚,将学习过程、工作过程与学生的能力和个性发展联系起来,在培养目标中强调设计与建构能力的培养,缩短了教育和工作之间距离。

2 基于工作过程的课程设计一般方法

通常基于工作过程的课程体系设计实际是基于一个专业的课程体系设计,而具体到某个专业中的一门课程的课程设计,是如何体现基于工作过程的课程设计的思想与理念的呢?其一般的设计方法可以描述为以下几个阶段[4]。

第1阶段:进行职业分析、确定典型工作任务。也就是从实际的工作岗位或岗位群出发,对其进行工作任务分析,并在此基础上确定其典型工作任务。

第2阶段:典型工作任务规整,形成行动领域。在对典型工作任务做进一步分析的基础上,通过能力整合,包括同类项合并等措施,将典型工作加以归纳形成行动领域;它是工作过程系统化课程开发的平台,是与本专业紧密相关的职业情境中构成职业能力的工作任务的总和。

第3阶段:分析行动领域工作任务,重构学习领域内容。作为职业分析结果的行动领域,必须根据职业教育的基本规律将其转换为学习领域。

第4阶段:设计学习主题单元,进行学习情境设计。学习领域的课程要通过多个学习情境来实现。所谓学习情境,是在工作任务及其工作过程的背景下,将学习领域中的能力目标及其学习内容进行基于教学论和方法论转换后,在学习领域框架内构成的多个“小型”的主题学习单元。

一般基于工作过程的课程设计开发过程可以表述为图1。

3 基于工作过程的《C#程序设计》的课程设计

3.1 进行职业分析、确定典型工作任务

在对对安庆科技创业园和合肥软件园的多家软件服务外包公司的软件服务与开发人员进行深入调研结果的基础上,结合软件技术专业毕业生的就业进行分析,确定《C#程序设计》课程主要面向的是职业岗位为.NET程序员,主要的典型工作任务描述如表1。

3.2 典型工作任务规整,形成行动领域

在对程序员职业岗位分析的基础上,确定了3个典型工作任务,在这3个典型工作任务中,客户沟通和团队成员协作是作为一个程序员必备的要求,在软件工程等其他程序设计课程中得以体现,而Web应用项目开发是《C#程序设计》课程的后续课程《ASP.NET动态网站开发》的核心工作任务内容,因此选定Windows应用项目开发为《C#程序设计》课程的核心典型工作任务,将Windows应用项目典型工作任务进行整合归并后形成如表2的行动领域综合能力需求。

3.3 分析行动领域工作任务,重构学习领域内容

学习领域内容的重构,关键有两个方面,一是学习内容的选取,二是学习内容的序化;高职教育史以就业为导向型的高等教育,其课程内容的选取应以过程性知识为主、陈述性知识为辅,即以实际应用的经验和策略的习得为主、以适度够用的概念和原理的理解为辅[姜大源--基于工作过程的课程观];传统的基于学科体系的课程内容排列是以知识结构逻辑为中心的,而基于工程过程课程设计是基于实践情境构成的,以过程逻辑为中心的行动体系设计,它强调的是工作过程实施的逻辑,结合.NET程序员的典型工作任务,将《C#程序设计》的教学内容重新序化设计如表3。

3.4 设计学习主题单元,进行学习情境设计

高职院校的编程类课程的教学情境设计,其难点是如何平衡好语言语法的学习与职业能力培养之间的关系,讲解语言语法知识点过多,会影响编程能力的训练,如果单纯从案例项目出发去教学,由于学生语言语法知识基础薄弱,会造成对项目案例代码理解的困难,不利于培养学生扎实的编程功底;采用基于工作过程的课程设计,其教学情境设计最好的方式还是采取项目驱动的方式,为了兼顾语言语法知识的学习,因此对教学项目案例的选取与设计是十分重要的,可以采用实际的项目进行教学情境设计,也可以采用精心设计的模拟案例进行教学情境设计;在《C#程序设计》课程设计中,采用单元项目案例+课程综合案例项目的形式展开教学情境设计,全部的教学内容分为5个教学单元,依次为:C#语言基础、基于C#的控制台项目开发、面向对象的程序设计、WinForm程序设计、课程综合实训(个人电子相册软件),在每个教学单元都有具体的教学项目案例,表4是第5个教学单元“课程综合实训项目”的教学情境设计,在教学情境设计中充分体现了实现学习领域的学习目标要求。

4 结语

基于工作过程的课程设计不同于基于学科体系课程的课程设计,其出发点从职业分析入手,获得其主要职业岗位的典型工作任务,再从典型工作任务推导出行动领域内容,根据行动领域内容确定学习领域的教学内容和教学目标,然后根据教学内容和教学目标,选取合适的项目案例,进行合理的教学情境设计,论文正是以《C#程序设计》的课程设计为例,阐述了这种基于工作过程的课程设计理念与方法,这对高职基于工作过程的课程设计与开发有很好的借鉴意义。

参考文献

[1] 教高[2006]16号.关于全面提高高等职业教育教学质量的若干意见[S].2006-11.

[2] 姜大源.工作过程导向的高职课程开发探索与实践 家示范性高等职业院校课程开发案例汇编[M].北京:高等教育出版社,2008.

[3] 王莉方.职业教育基于工作过程的课程设计方法浅探[J].继续教育,2010,185(4):20-21.

[4] 姜大源.论高等职业教育课程的系统化设计—— 关于工作过程系统化课程开发的解读[J].中国高教研究,2009,4:66-70.

作者:王奇志 方莉

第6篇:《Java程序设计》课程网站的设计与实现

摘要:为方便Java课程教学,加强师生之间课后交流,该文使用ASP.NET技术和SQL2000数据库设计并开发了《Java程序设计》教学网站。该网站分四大主要模块:网络考试中心,在线留言,资源中心,后台管理,同时还实现发布新闻和添加相关链接的功能。

关键词:ASP.NET;SQL2000;JAVA课程

Key words: ASP.NET;SQL2000; JAVA course

近年,Java面向對象程序设计语言因其具有的跨平台性、分布式及安全性等特点[1],在当今网络时代得到广泛应用和发展。作为一种有生产力的编程工具,学习《Java程序设计》课程有助于学生在掌握面向过程程序设计和可视化程序设计基础上,能够更深入地掌握面向对象编程技术,且更有利于开发网络环境下的应用程序。

目前师生之间Java课程的教与学多局限于课堂上面对面的方式,而课后教师与学生之间更深入的交流和探讨,因缺少一定场地而受到限制,最终导致师生互动的机会减少。针对此现状,本文使用ASP.NET[2]技术和SQL2000数据库[3]设计一个Java课程网上学习平台,以满足在线学习及便于师生随时随地交流的目的。

1 需求分析

Java课程网站建设的目标是使教学更加方便,方便学生自己学习,提高学生自学能力,也节省学生、老师的时间。要求所设计系统操作方便、更新及时、易于维护管理。拥有动态更改信息;网上答疑;课程教学等基本功能。学生进入网站后可根据系统功能对该课程进行信息浏览,查看课件,提出问题及学习等;教师进入网站后也可对课程的一些信息进行浏览,对学生提出的问题进行回复,而后台教师需要进入系统对网站进行维护,更新信息、修改信息或者删除某些信息。

因此该系统需要满足的需求为:具有良好的人机界面,以方便操作;学生查看教学信息,下载课件,网上发帖等;教师查看学生提出的问题并进行回答;教师发布,整理留言和教学资源等。

2 网站功能设计

按照需求分析的结果,网站总体结构设计如图1所示,角色上主要包括学生、教师和系统管理员;功能上主要包括网络考试中心,在线留言,资源中心及后台管理,同时还实现发布新闻和添加相关链接的功能。

3 网站主要功能分析

3.1用户注册及管理员登录

用户包括普通用户和管理员,所有用户先注册然后登录系统,权限不同则登录成功后相应的界面不同。

3.2网站功能显示

将网站的每个功能模块显示出来,如图2所示,包括:资源中心,考试中心,后台管理,在线留言及使用帮助等。

3.3资源中心

资源中心主要功能包括查看与课程相关的文档及任课教师等信息。

3.3.1电子文档

图3所示的主要功能是上传和下载电子文档。为便于学生课后复习,教师可将课堂上教学用的Java课件等文档进行上传供学生浏览。

3.3.2网站课程实践

为加强学生动手能力,从而将理论与实践相结合,每个知识点都对应有实践环节,每一实验都明确具体内容及相关要求(图4)。

3.4考试中心

图5所示Java课程的网上考试阅卷,在时间和空间上都不必受传统考试的限制,可提高考试和阅卷效率。

3.5后台管理

管理员可以对科目、试题库及发布的资源等信息进行增加或修改等管理。

3.5.1 科目大类管理

如图6所示,可以增加或删除科目大类,同时给大类编号。

3.5.2 具体科目管理

学好Java,还应该熟悉其课程体系,了解其所属大类的与其相关的其他科目(图7),从而明确该课程的重要性。

3.5.3试题库管理

图8所示为课程体系中各门课程的试题库。

3.6在线留言

师生均可在线留言,但需要事先进行注册(图9),然后通过登录界面进入留言板块。

4 结束语

为便于学生在线学习及师生之间随时随地进行Java课程教学的交流,本网站实现了Java教学资源管理与查看、试题库管理与查看、在线留言及发布相关新闻等功能,有助于学生更方便更深入地掌握Java语言。

参考文献:

[1] 张白一, 崔尚森.面向对象程序设计———Java[M] .西安: 西安电子科技大学出版社, 2013.

[2] 明日科技. ASP.NET从入门到精通[M]. 北京: 清华大学出版社, 2013.

[3] 赵增敏. SQL Server 2000 实用教程[M]. 北京: 电子工业出版社, 2008.

作者:王丽爱

第7篇:C语言程序设计教案 第六章 循环程序设计

第六章 循环程序设计

课题:

教学目的: 教学重点: 教学难点: 第五章 选择结构程序设计

1、掌握三种循环语句的语法结构

2、灵活运用循环语句

三种循环语句while、do-while、for 三种循环语句的区别

步骤一 引入新课

 问题1:假如全班41人,欲从键盘上输入每人的数学成绩,然后计算出平均成绩;  问题2: 编程计算n!。

 重复执行一组语句是程序设计要求的基本功能之一。在C语言中可以用以下语句来实现循环:(1)if 和 goto

(2)while

(3)do-while

(4)for

步骤二 讲授新课

一、goto语句及用goto构成循环  语法:goto label;  其中:label是语句标号,它命名的规则同变量名;  语义:使程序无条件地转向标号为label的语句去执行;  如:用if语句构成循环,求sum=1+2+…+100

main( )

{ int i=1,sum=0;

loop:

if (i<=100)

{sum+=i; i++; goto loop;}

printf(“%d”, sum);

} 说明:

1) 标号不必进行类型说明;

2) 程序中的任何一个语句均可带上标号,但标号必须以冒号结束; 3) 不提倡使用goto语句。

二、while语句

 语法:while (exp)

循环体语句;

 语义:当exp为真时,执行循环体;为假时,执行循环语句的后续语句;  如:用while语句构成循环,求sum=1+2+…+100

程序如下:main() { int i=1, sum=0;

while (i<=100)

{ sum+=i;

i++; }

printf(“%d”,sum); } 说明:

1) 循环体可以用复合语句;

2) 在while语句前应有为测试表达式(exp)中的循环控制变量赋初值的语句,以确保循环的正常开始;

3) 循环体内应有改变循环控制变量的语句,以确保循环进行有限次后正常结束;

如:i=1;

while (i<=100)

sum=sum+1; (死循环)

4) while 循环的特点是先判断后执行,故循环有可能一次都不被执行;

如:

i=3;

while (i<3)

printf(“i=%d ”, i);

三、do-while语句 语法:do

循环体语句;

while (exp); 语义:当exp为真时,执行循环体;为假时,执行循环语句的后续语句; 如:用do-while语句构成循环,求 sum=1+2+…+100 程序如下:main() { int i=1,sum=0;

do

{ sum+=i;

i++; }

while (i<=100);

printf(“%d”,sum); }

说明:

1) 循环体可以用复合语句;

2) 循环控制变量在执行do前必须赋初值;循环体内应有改变循环控制变量的语句; 3) do-while 循环的特点是先执行后判断,故循环至少被执行一次;

如:i=3;

do

{ sum+= i;

i++;

} while (i>10); 例1:用公式求π的近似值,直到最后一项的绝对值小于10-6为止。π/4≈1-1/3+1/5-1/7+……

# include main( ) { int s=1; float n=1.0, t=1, pi=0;

while((fabs(t))>1e-6)

{ pi=pi+t; n+=2;

s=-s; t=s/n;

}

pi=pi*4;

printf(“pi=%10.6f ”,pi); }

例2:求整数a和b的最小公倍数。 #include main( ) { int a,b, i; scanf(“%d%d”,&a,&b);

i=0; while(1)

{ i++;

if (i%a= =0)

if (i%b= =0){printf(“%d ”, i); break;}

} }

思考:有一张足够大的纸,厚0.09毫米,问将它对折多少次后可以达到珠穆朗玛峰的高度(8848米)?

四、for 语句

语法:for(表达式1;表达式2;表达式3)

循环体语句; 语义:

1、先求表达式1;

2、求解表达式2,若其值为真,则执行第三步;若为假,则结束循环;

3、执行循环体中的语句;

4、求解表达式3;

5、转回第二步继续执行  如: for( i=1; i<=100; i++) sum=sum+i;可看成:

for(循环变量赋初值;循环条件;循环变量增值)语句;

说明:

(1)显然for循环更简洁,更灵活; (2)循环体可以是复合语句; (3)for语句中的三个表达式均可以是逗号表达式,故可同时对多个变量赋初值及修改。如:for(i=0, j=1; j

(4)for语句中三个表达式可省:

 省exp1;如:i=1; for ( ; i<5; i++)

printf(“%d ”,i);

等价于for (i=1; i<5; i++) printf(“%d ”,i);  省exp2;如: for ( i=1; ; i++)

{ printf(“%d ”, i);

if ( i>5) break;

}  省exp3;如:for ( i=1; i<5; )

{ printf (“%d ”,i);

i++; } 等价于 for ( i=1; i<5; i++)

printf (“%d ”,i);

 表达式

1、表达式3可省略

i=1;sum=0; for(;i<=100;) { sum+=i; i++;}

 三个表达式全省时,如:

for (; ; ) 语句;

等价于while(1)语句;

三个表达式可包含与循环变量无关的语句

for(;(c=getchar())!=„ ‟;printf(“%c”,c));

(5)for语句中的循环体可以是空语句;如:

int n=0; for(;n++ <=2;); printf(“%d”,n);

 该程序段的输出结果为:4

步骤三 课堂小结

1、 while、do-while、for语句的语法结构,特别是for语句中三个表达式的作用

2、 whie与do-while区别

3、 注意循环控制的范围

步骤四 布置作业 上机练习:(第六章课后练习)6.2 书面练习:(第六章课后练习)6.3、6.5

第8篇:C语言程序设计教案 第五章 选择结构程序设计

第五章 选择结构程序设计

课题:

教学目的: 教学重点: 教学难点: 第五章 选择结构程序设计

1、掌握实现选择结构的两种语句、一个运算符

2、学会编写选择结构的程序

if-else语句、switch语句、条件运算符

嵌套if-else语句中的if与else匹配问题

步骤一 复习引导

上一次课已经介绍了程序基本结构之一,但在大多数情况下都要用到选择结构。

步骤二 讲授新课

 在C语言中实现选择结构的控制语句主要有if语句、switch语句

一、条件语句

1、if语句的三种形式

语法1:if (表达式)语句; 如:#include main( ) { char ch; ch=getchar();

if(ch>‟a‟&&ch<=„z‟) ch+=„A‟-‟a‟;

putchar(ch); }

语法2:if (表达式) 语句1;

else

语句2; 如:#include

main()

{ int a,b;

scanf (“%d%d”,&a,&b);

if(a>b) printf(“max=%d ”,a);

else printf (“max=%d ”,b);

}

语法3:if (表达式1) 语句1;

else if (表达式2) 语句2;

else

if (表达式3) 语句3;

„„

else 语句n+1;

例如:从键盘上输入字符,判别其分类:控制符、数字、大写字母、小写字母、其他字符。 #include “stdio.h” main( ) { char c; c=getchar( ); if (c< 32) printf(“This is a control character. ”);

else if (c>=„0‟&&c<=„9‟) printf (“This if a digit. ”);

else if (c>=„A‟&&c<=„Z‟) printf (“This is a capital letter. ”);

else if (c>=„a‟&&c<=„z‟) printf (“This is a small letter. ”);

else

printf (“This is an other charater. ”); 说明:

1、三种形式的 if 语句中,if 关键字后均为表达式(逻辑表达式、关系表达式、赋值表达式、变量等);

如:if (a=5) 语句;

if (b) 语句;

2、if 语句中,条件表达式必须用括号括起来,在语句后必须加分号;

满足条件需执行一组语句时,该组语句必须用{ }括起来; 如:if (a+b>c&&b+c>a&&a+c>b)

{ s=0.5*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%6.2f ”,area);

}

else

printf(“It is not a trilateral.”);

3、if 语句嵌套时,else 总是与它最靠近的if 匹配;

如:有一数学函数:x<0时,y=-1;x=0时,y=0;x>0时,y=1 编写程序,输入x的值,输出相应y的值 main( ) { int x,y;

scanf(“%d”,&x);

if (x<0) y=-1;

else if (x= =0) y=0;

else y=1;

printf(“x=%d,y=%d ”,x,y);}

说明:因为if 语句执行时总是简单地测试其中作为条件的“表达式”的值是0还是非0,便可利用这种特性来简化程序设计。如对于:

if (expression!=0)

完全可用

if (expression) 来代替;

同理:

if(!exp)语句;等价于:if(exp= =0) 语句;

二、三目条件运算符及其表达式

1、条件运算符:?:

2、格式:e1?e2:e3

3、语义:判e1的值,为1时计算e2,否则计算e3;

如:max=(a>b)?a:b 等价于 if (a>b) max=a;

else max=b;

4、说明:

1) 条件运算符的结合方向自右至左

如:a>b?a:c>d?c:d 等价于 a>b?a:(c>d?c:d) 若int a=1,b=2,c=3,d=4;则表达式的值为________ 例:输入一个正整数i,输出第i个英文字母,若i大于26则输出一个„*‟。 #include main() { int i;

scanf(“%d”,&i);

i=(i<=26)?(i-1+‟a‟):‟*‟;

putchar(i); } 2) 条件运算符的优先级仅高于逗号运算符与赋值运算符;

3) 只有当if语句的真假均只执行一个赋值语句且给同一变量赋值时,才能用条件表达式取代;

如:if (a>b) max=a;

else max=b; 思考:int x=1,y=0; x-->(y+x)?5:25>y++?‟1‟:‟2‟的值是______

三、switch 语句

语法1:switch(表达式)

{ case C1:语句序列1;

case C2:语句序列2;

……

case Cn:语句序列n;

default:语句序列n+1;

} 语法2:switch(表达式)

{ case C1:语句序列1;break;

case C2:语句序列2;break;

……

case Cn:语句序列n;break;

default: 语句序列n+1;break;

} 其中:

switch后括号中的表达式可以为任何类型;

C1至Cn 是常量表达式,一般是整数或字符,与switch中表达式的取值对应; default可缺省,当表达式e的值不是C1到Cn的情况。

注意两种语法的执行顺序!

例:switch(grade)

{ case „A‟: printf(“85~100 ”); break;

case „B‟: printf(“70~84 ”); break;

case „C‟: printf(“60~69 ”); break;

case „D‟: printf(“<60 ”); break;

default: printf (“error ”); break;

}

允许多个case共用一个执行语句 例:switch(ch) { case „0‟: case „1‟: case „2‟: case „3‟: case „4‟: case „5‟: case „6‟: case „7‟: case „8‟:

case „9‟:digit++; break;

case „ „: case „ ‟: case „ ‟: white++; break;

default: character++; }

break语句只能跳出一层,内外层情况常可相同; 如:

int x=1, y=0; switch(x) { case 1: switch(y)

{case 0: printf (“**1** ”); break;

case 1: printf (“**2** ”); break;

}

case 2: printf (“**3** ”); } 运行结果为:**1**

**3**

五、程序举例

例:求ax2+bx+c=0方程的根。 分析:

(1)a=0,不是二次方程。

(2)b2-4ac=0,有两个相等的实根。 (3)b2-4ac>0,有两个不等的实根。 (4)b2-4ac<0,有两个共轭的复根。 N-S图:P102

步骤三 课堂小结

1、 两种选择语句:if-else、switch语句,注意选择条件的描述;

2、 在编写程序过程中,注意分支的作用范围,及复合语句的运用。

步骤四 布置作业

1、上机作业(第五章课后练习):5.5、5.6

2、书面作业(第五章课后练习)5.3、5.9

上一篇:餐饮成本控制下一篇:边际成本