黄 云, 洪佳明, 覃遵跃, 王新峰
(1. 吉首大学 软件服务外包学院, 湖南 张家界 427000;2. 广州中医药大学 医学信息工程学院, 广东 广州 510006)
基于云平台的“程序设计基础”课程实验教学改革
黄 云1, 洪佳明2, 覃遵跃1, 王新峰1
(1. 吉首大学 软件服务外包学院, 湖南 张家界 427000;2. 广州中医药大学 医学信息工程学院, 广东 广州 510006)
“程序设计基础”实践教学环节对于软件工程专业的学习具有重要地位。通过对教学中存在的普遍问题进行分析,结合相关文献研究成果和我校软件工程专业实际情况,基于学校云实验中心平台的建设,对课程的实践教学体系进行改革,通过搭建课程的实践教学平台,组织建立实践教学资源库,并引入“翻转课堂”教学模式,聘用高年级学生助教帮助学生完成实践任务,有效激发了学生实践学习的兴趣,提升了学习效果。
程序设计基础; 实践教学环节; 翻转课堂; 实践教学体系; 学生助教; 实验云平台; 实践教学资源
吉首大学软件工程专业为湖南省教学改革试点专业,为了培养“面向产业、服务全球”的高层次软件人才,实行校企深度合作的“2(校)1(园)1(企)”人才培养模式,尤其强调培养学生的软件开发设计能力,培养学生的创新意识和团队合作精神。“程序设计基础”课程开设在第一学期,为专业核心基础课,主要讲授程序设计语言(目前选用C语言)的基础知识、基本语法和结构化程序设计方法。学生通过理论、实验及课程设计等环节的学习与训练,掌握C语言的基本语法结构和结构化程序设计的思想,养成良好的程序设计风格和习惯,能应用程序设计的思维方法解决和处理部分实际问题,为软件开发与设计能力的培养奠定坚实的基础。
“程序设计基础”课程的实践教学环节在教学活动中占有重要地位,一方面,实践环节的开展有利于学生对理论知识的消化与吸收;另一方面,实践环节有利于将理论知识与实际应用结合起来,有利于培养学生解决实际问题的能力。此外,实践环节的开展还有利于培养学生养成良好的自学习惯,具有一定的创新意识和团队协作精神。
在多年的教学过程中,根据对不同年级学生“程序设计基础”实践环节的跟踪调查,结合与多个兄弟院校教师的交流以及网络文献资源的整理,发现“程序设计基础”课程的实践教学存在以下问题:
(1) 实验资源不足,实践环节未被充分重视。由于受扩招等现状的影响,学校部分教学资源出现紧缺。实验机房和实验机位都出现不足,多个专业、班级的不同课程的实验被压缩到同一个实验室进行,实验课时分配不足。此外,受校企合作办学等新型办学模式的影响,部分企业教师授课需要集中部分时段占用实验机房,“程序设计基础”等课程的实验课时被压缩。另一方面,由于实验室建设一直重视硬件投入,对软件部分投入不足,极少关注程序设计实验平台的搭建,学生实验的平台化、网络化、自动化管理不到位,用于实验的资源库建设进展缓慢。
(2) 实验形式单一,难以调动学生学习兴趣。“程序设计基础”等课程的实验教学往往与理论授课同时进行,主要是对所授理论知识的验证与应用拓展。往往是教师布置实验习题,学生每人一组在实验课时进行编程调试,教师进行现场指导和检查。实验习题大部分来自书本习题,利用相应章节所涵理论知识可编程实现。这样的实验形式一方面缺乏对学生实验前期准备工作的指导,无法帮助学生快速入门;另一方面,由于缺乏综合性的、与实际应用结合紧密的实践项目,学生的学习兴趣不足,缺乏主动性探究式学习。此外,单人完成实验项目难以培养学生的团队合作精神,不利于研讨式学习的开展。
(3) 师生互动性差,实验指导无法满足学生需要。“程序设计基础”既是软件工程专业的核心专业课程之一,也是一门很重要的专业入门课程。当学生经历高考进入大学,生活环境和学习环境发生变化,学习的诸多要素也与高中时代具有差异。学生在逐渐适应大学的学习方式时,需要教师的悉心指导,需要与教师有较多的互动。学生在上“程序设计基础”实验课时往往会遇到以下主要问题:① 不能理解计算机执行程序的基本原理,不了解C程序编译运行的过程;② 对C程序的集成开发环境不熟悉,不能运用工具进行调试,对其提示的错误信息和警告信息无法识别和处理;③ 尚未形成程序设计的基本思维,对C程序的基本语法不熟悉;④ 部分同学对计算机操作不熟悉,打字速度影响编程效率。带着这些问题,学生在实验过程中需要教师详细指导。由于师资力量不足,一名教师需要同时指导几十名同学进行实验,导致大部分同学的问题无法得到解决。在课外,师生缺乏足够的沟通渠道,学生往往通过qq、E-mail、手机等与教师进行课后交流,但总体上只是少数同学的个别行为。而且对于同学实验中的问题,往往需要针对当时的实验环境和编辑运行的状态进行指导和讲解,已有的实验条件与交流渠道无法实现。
(4) 实验效果难以及时、客观进行监测。在“程序设计基础”的实验课中,由于指导学生已经占据了全部课时,教师需要在课后通过实验报告、集中时间上机考核等方式监测学生的实验效果。然而,这些方式的时效性和准确性不足。一份漂亮的实验报告不等于学生顺利完成实验,不代表学生已经掌握相关知识;上机考核一般都在学期结束之时,这时发现学生实验中的不足已经太晚了。此外,这些评价更不具有全面性,无法评价学生是否达到课程要求的能力与素质。
不同高校已经开展了“程序设计基础”课程实践环节的大量改革研究,并已取得许多相关成果。刘光蓉等[1-2]在“C程序设计”课程教学中实施理实一体化教学模式,融“教、学、做”为一体,将理论知识融于实践教学中,推动教师与学生在教学过程中产生互动,让学生在学练中理解理论知识,充分发挥学生在学习中的主体作用,调动学生学习的主动性;确定以计算思维能力培养为导向的C程序设计实验教学目标。设置验证型实验,使学生熟悉C程序设计计算环境;选择设计型实验,培养学生计算思维能力;设置综合型实验,培养学生应用和创新意识。此外,C程序设计实验教学还应注意“管理流程规范、加强上机引导、强调思维拓展、改进考核机制”等。
文献[3]认为教师应该精心选择实验内容,让理论、实践及应用紧密结合,在C程序设计的实践教学体系中应注意提高实践教学所占的比重,并结合上机作业、综合性课程设计以及专业化学科竞赛选拔等环节突出学生的程序开发应用能力的培养。赵诚等[4]结合现代学习理论制定程序设计基础的实验教学大纲,建立基础实验、综合实验、课程设计及课外拓展相结合的实验内容体系,通过教学资源库和实验教材等建设,鼓励自主学习、探究式学习、团队式合作,强化动手能力的培养,逐步培养学生的计算机认知与编程能力,应用计算机解决实际问题的能力。面向创新实践能力培养的C 语言程序设计实践教学改革[5]提出“粗、精、仿、练、操”的教学理念,对学生进行分层次因材施教,实验以小组形式完成,注意培养团队协作能力。文献[6-7]在研究分层实验教学中分别侧重研究了模糊评价考核方式和阶段式程序设计目标设定等问题。文献[8]主要针对部分学生动手能力差、学习兴趣不高、学习成绩低等问题,采用结对编程方式帮助其提高学习兴趣。文献[9-10]分别对程序设计基础实验教学中的手段与方法改革进行研究,提出协作学习、案例教学、阶梯式教学、项目驱动等方法与手段的应用。文献[11-12]则分别对程序设计基础实验中的循环结构与函数等实验内容进行了研究。
高校的教学实践活动必须适用于学校及学生的实际情况,满足培养目标的要求。吉首大学是一所处于少数民族区域的综合性二本院校,软件工程专业的学生来自20个不同的省区,既有信息技术基础教育发达的沿海城市,也有信息基础落后的西部民族区域;专业每年招收新生280人左右,有200人为高考普招生,有50人为民族预科生转入,还有30人为职高对口招生,在200名普招生中,文史类考生为60人,理工类学生140人。吉首大学致力于打造地方综合性大学高层次软件人才培养卓越品牌,按照“卓越工程师教育培养计划”和软件工程专业国际认证的目标要求,实行校企深度合作的培养模式,强调学生的工程应用能力培养,主要包括表达能力、团队协作与沟通能力、创新能力、独立思考与解决问题的能力等。
基于软件工程专业生源结构复杂、信息技术基础差异较大的实际情况,为了达到专业国际认证中百分之百合格的要求和吉首大学打造高层次软件人才培养卓越品牌的目标,通过“程序设计基础”课程的学习,既要培养每个学生的计算思维和基础编程能力,也要发现、选拔并培养部分对程序设计有强烈爱好,能独立解决有一定难度的实际应用问题的学生。为此,对“程序设计基础”课程的实验教学做了如下改革。
3.1 云实验中心建设
云平台的建立不仅能整合有限的实验室资源,还可提高师生教学实验和研发工作的效率[13]。为了让学生实验打破时空限制,实现师生零距离交流,记录每个学生的学习轨迹,吉首大学建立了云实验中心,专用于软件工程专业学生软件开发相关课程实践活动。
学校利用千兆校园网和无线教学网络,新建由24台高性能服务器组成的云实验中心,能够支持1 500个学生专属实验机同时上线运行,并利用当下最先进的5G技术建立5GWiFi网络教室解决了学生密集区高带宽高传输速率的难题,为“学习—实训—再学习—再实训”的理论与实践一体化提供了技术支持。
图1 云实验中心拓扑图
每位学生都将分配到实验平台环境与实践教学资源完善齐备的个人专属虚拟实验机,无论是在实验室、教室还是宿舍,校园网覆盖的地方都能用自己的智能终端接入云实验平台。平台能提供必要的实验环境和学习资源,能保存个人的实验状态并记录其实验和学习过程。通过平台还能随时随地共享学习资源、收发信息,进行师生之间、生生之间的在线互动。
3.2 “程序设计基础”实践教学体系改革
“程序设计基础”实践教学既要培养全部学生的基础编程能力,又要选拔培养少数有特殊兴趣爱好的学生。由此,我们对课程的实践教学体系进行了一定调整,分阶段分层次设定多个环节的实践教学活动。
首先,按照人们的认知过程将“程序设计基础”实践过程分为初识期、入门期、提高期、攻坚期和突破期五个阶段。初识期的实验以验证性实验为主,需要学生熟悉编程环境,了解程序编写运行的基本过程。入门期阶段是课程的分水岭,许多学生在这一阶段编程能力提升较慢,在以后的阶段逐渐掉队,往往会失去继续学习的动力;入门期阶段需要教师多做案例示范,学生首先应多模仿案例编程,然后做一些简单设计实验;该阶段还应引导学生在实验中多做经验总结,不断了解程序调试和测试。提高和攻坚阶段需要学生通过综合类和设计类实验,形成良好的编程习惯,并逐渐培养学生的计算思维,设计类程序开发还将培养学生的创新能力。突破阶段需要学生分工协作完成小型系统软件,培养学生团队协作精神,培养学生系统软件开发设计基础能力。
然后,根据每个阶段知识与能力掌握程度的不同要求,分为考核层、考查层和选拔层三个不同的层次。表1展示了阶段式分层次实践教学体系结构(单元格中不同深度的底纹颜色代表学生需要达标的时间顺序,黄色底纹和粉色底纹不要求每个学生都达标),每个阶段的考核层是实践活动中每个学生必须掌握的能力;考查层的内容在课程结束时学生需要基本达到要求,学生只有满足某个阶段考核层的要求后,方可进入下一阶段进行实践活动。通过对选拔层的能力训练,选拔少量优秀学生进行竞赛培训。
最后,我们将“程序设计基础”课程的实践环节分成了实验教学、课程设计及第二课堂三个部分。实验教学环节在前四个阶段的实验课时开展;课程设计环节在学期的最后两周集中进行,对应突破期阶段;第二课堂主要采用开放实验室的形式进行,每位学生每周三次共六小时进入开放实验室,时间安排在周末以及周一到周五的晚上,第二课堂的内容根据学生的不同层次进行划分。若在实验教学中学生未达到对应阶段的考核层要求,则在第二课堂加强本阶段的练习,优秀的学生可以在第二课堂进行相应的考查层和选拔层实验项目的学习实践。
表1 “程序设计基础”阶段式分层次实践教学体系结构
3.3 实践教学平台与资源建设
为了让学生在实践学习过程中得到更好的指导,利用购买和联合研发,搭建了多个实训平台,“程序设计基础”实践教学中使用了上海睿亚训公司的云博实践数字资源库平台和实践能力提升平台、ACM Online Judge在线答题平台、校企合作研发并部署的智能移动学习系统(湖南省教育信息化专项项目)。用于教师发布实验内容和实践项目、上传实践学习资源、监测学生实验效果、解惑学生难题;有利于学生下载实践资源、完成实践任务、获得教师指导。
首先,我们在ACM OJ平台发布5 800多道实验题目,并对题目分别按难度和对应的知识点进行分类;其次,每次实验教学均录制了一个讲解视频和一个演示视频,讲解视频主要介绍了实验内容、实验目的、关键知识点、基本步骤和常见问题等,演示视频中选择与学生本次实验任务相似的项目,录制对其进行编码、编译、调试、纠错和运行的全过程;此外,通过校企联合开发,建立了30个C程序小型管理系统、应用软件或小游戏,这些系统既有完整的代码,也有设计详细文档。对于“程序设计基础”实验教学和课程设计中的指导,我们撰写了详细的实验指导书和项目开发案例讲义,通过几年的不断积累和改进,目前以分别完成“程序设计基础实验指导书》和“程序设计基础课程设计案例分析》两本书稿,其中“程序设计基础课程设计案例分析》已被中南大学出版社收稿,将于近期正式出版。学生可以通过云实验中心平台访问以上课程资源,平台还为学生留有上传接口,学生可以上传其完成的项目资源。
3.4 引入“翻转课堂”教学模式
“翻转课堂”(Flipped Classroom)作为一种自下而上的教育模式,是让学生在家里听课、在课堂上“做作业”的教学方式[14-15]。为了让学生能够高效利用有限的实验教学时间,同时逐渐培养其自学能力和主动学习的习惯,我们在“程序设计基础”实践教学中引入“翻转课堂”教学模式。
每次实验教学前一周,教师确定下次实验每位学生需要完成的实验任务,组织好必要的实验资源,并通过智能移动学习系统发布任务。学生通过移动终端自动接收到实验任务和实验资源的相关信息,登录云博实践数字资源库平台,在指定位置获取相关实验资料,包括本次实验的指导书、相关案例、以及本次实验的讲解视频和演示视频,学生在本次实验前通过阅读实验指导书和观看视频了解实验的基本方法与策略,并仔细完成实验项目设计和代码编写,记录自学和编码中存在的各种问题。
实验中,学生在开放实验室就预习时存在的问题请求教师指导,完成代码调试并提交实验结果;教师需认真指导学生完成实验调试,解决学生在实验中遇到的各种问题,并记录学生实验中存在的主要问题。
实验后,学生就实验情况进行实验总结,完成实验报告。教师及时总结学生的学习效果,就学生遇到的典型问题进行统一讲解,还需要分析不同学生的学习进展,确定每个学生下一时间所进行的实验学习阶段(不同进展的学生所出的阶段具有一定差异)。
3.5 聘请学生助教实现优质指导和监测
“程序设计基础”实践教学过程中,根本的问题是教师资源缺乏,许多学生的问题无法得到及时详细的解答,学生的学习效果无法完整有效监测,学生的学习路径无法根据个人情况进行规划。每个学生都期望能编写正确的程序,实践过程中所遇问题的累积会逐渐降低学生学习的兴趣,甚至会有学生对授课教师产生不满情绪,这将严重影响学习的质量。为了解决师资力量不足所导致的问题,我们从高年级择优选择有服务意愿的学生作为学生助教,在“程序设计基础”实践教学的各个环节参与指导学生,帮助学生解决实践中的疑问和错误,引导学生形成良好的编程习惯,顺利完成实践任务。
学生助教的具体任务包括:① 帮助教师管理维护ACM OJ平台的运行,整理平台上的题库;② 在实验教学环节帮助老师对学生实验中的问题进行指导,并负责整理学生常见的问题;③ 对学生的效果进行详细的监测和评价,并将相关意见交给教师进行学生学习层次评定;④ 在第二课堂对不同层次的学生下达不同的实验任务,指导学生完成第二课堂学习任务,并为选拔优秀学生提供建议和详细依据;⑤ 为课程设计环节中每个小组的前期准备提供必要的技术指导;⑥ 辅助教师接收并处理学生通过各种实践平台提出的问题,定期对学生实践中的问题进行答疑。
学生助教有效的提高了教师指导的效率,一定程度上满足了学生实践中答疑的需求,还能对学生助教自身的知识掌握程度、沟通能力及解决问题能力的提高具有一定的帮助。在聘请学生助教的过程中,制定了学生助教聘任制度、管理制度、评价与考核制度及奖励制度等多项管理制度,教师在学期初还对学生助教进行培训和指导,保证学生助教能充分发挥作用,帮助“程序设计基础”课程实践活动顺利完成。
此外,我们提高实践测试在课程考核中的比重,并实行按阶段测试的方法进行。为此我们建立了“程序设计基础”实践能力监测体系,确定每个阶段学生应该具备的各种能力,并制定每个阶段的测试方案。另一方面,我们按学生实践学习的进展确定不同学生的测试时间,既鼓励优秀学生提取完成下一阶段的实践学习,也允许基础较差的学生推迟完成前一阶段的测试。学校还在学期末组织新生进行C程序设计大赛,组织优秀学生与怀化学院等兄弟院校的新手进行程序设计友谊竞赛,激发学生刻苦学习程序设计的热情。
通过近几年对“程序设计基础”课程实践教学的不断改革,已经取得一定的教学成果。软件工程专业10级到13级的学生已全部通过国家计算机等级Ⅱ级考试,10级到12级的学生超过50%拿到软件设计师资格证书。2013年和2014年组队获得湖南省蓝狐杯大学生程序设计大赛二等奖两项、三等奖三项;参加2013年、2014年蓝桥杯决赛获全国二等奖1项,三等奖3项;软件工程专业学生参加全国2012年大学生数学建模竞赛,获全国二等奖一项;2013年组队参加第四届中国大学生服务外包创新创业大赛,获全国一等奖和二等奖各一项;2014年组队参加第三届“中国软件杯”大学生软件设计大赛,荣获二等奖及最佳创新奖。近三年,软件工程专业学生参加全国大学生研究性学习和创新性实验计划项目1项,湖南省大学生研究性学习和创新性实验计划项目3项;近2年,软件工程专业有20名学生获得软件著作权。
“程序设计基础”课程在软件工程专业中占有重要地方,实践教学环节对于培养学生的计算思维,建立良好的编程习惯,培育工程化软件设计的启蒙思想具有重要地位。通过课程实践环节的改革,有效提高学生学习的兴趣,激发学生学习的热情,已经取得一定成效。随着慕课等新的学习方式的推广、软件工程专业办学国际化程度的提升以及专业工程硕士办学推进等新形式的出现,改革的要求将不断发生变化,我们将继续对实验教学体系、教学资源、教学方法与手段等做更加深入的改革。
[1] 刘光蓉. 以计算思维能力培养为导向的C程序设计实验教学[J]. 实验技术与管理, 2013,30(1) : 154-156,191.
[2] 刘光蓉. C程序设计实验教学的理实一体化教学模式[J]. 实验室研究与探索, 2013,32(10): 350-352.
[3] 丁海燕,邹 疆.C语言实验教学体系及改革措施[J].实验技术与管理,2010,27(11):179-181.
[4] 赵 诚,夏 芸.基于现代学习理论的程序设计基础实验教学体系[J].计算机教育,2014(15):84-88.
[5] 吴永芬,陈卫卫,李志刚,等. 面向创新实践能力培养的C语言程序设计实践教学改革[J]. 计算机教育,2014(3):88-91,96.
[6] 卢 瑾,张 健.C语言程序设计阶段式分层实验教学研究[J].计算机教育,2014(14):74-76.
[7] 曹婧华,赵 飞.基于层次分析和模糊评价的C语言上机实验教学研究[J].实验技术与管理,2011,28(8):145-147.
[8] 魏妮妮,宋 翌.结对编程在程序设计基础课程实验教学中的研究与实践[J].实验技术与管理,2013,30(12):163-165.
[9] 陈 婷. C语言程序设计实验教学改革探究[J]. 实验技术与管理,2010,27(10):182-184.
[10] 马 华,邹 竞. 基于协作学习的C语言程序设计实验教学改革研究[J]. 大学教育,2013(24):83-84.
[11] 黄宏博.C语言程序设计函数实验教学设计[J].计算机教育,2012(2):103-106.
[12] 宋灵香. C语言中for循环语句教学研究[J]. 软件导刊,2013(3):184-186.
[13] 孙 隽,韦萍萍,李激扬,等. OpenStack构架下计算机实验中心云平台的设计[J]. 中国远程教育,2014(9):78-82.
[14] 黄 阳,刘见阳,印培培,等. “翻转课堂”教学模式设计的几点思考[J]. 现代教育技术,2014(12):100-106.
[15] 曾明星,周清平,蔡国民,等. 基于MOOC的翻转课堂教学模式研究[J]. 中国电化教育,2015(4):102-108.
Experimental Teaching Reform of Foundation of Programming Design Based on Cloud Platform
HUANGYun1,HONGJia-ming2,QINZun-yue1,WANGXin-feng1
(1. School of Software and Service Outsourcing, Jishou University, Zhangjiajie 427000, China;2. School of Medical Information Engineering, Guangzhou University of Chinese Medicine,Guangzhou 510006, China)
Experiment teaching of foundation of programming design is an important course for students of software engineering. Based on the analyzing the common problems in the teaching process, combining the existing research results, and depending on real situation in our university, we propose the experimental teaching reform for the course based on cloud platform. Considering the reality of professional construction on software engineering undergraduate, and using the experimental cloud platform in our university, our reform in the practice teaching system consists of the following steps: constructing experimental teaching platform for the class, constructing practice teaching resources, using inverted classroom teaching mode, and introducing student assistants in the practice teaching process. Our research results show that, the proposed reform effectively stimulates students' interest in the learning process, and effectively enhances the learning effect.
programming design basis; practice teaching; inverted classroom; practice teaching system; student assistants; experimental cloud platform; practice teaching resource
2015-02-27
湖南省教育厅教学改革研究项目(湘教通[2013]223号);湖南省普通高等学校“十二五”专业综合改革试点项目(湘教通[2012]266号)
黄 云(1976-),男,土家族,湖南张家界人,博士,副教授,主要从事程序设计基础、算法设计与分析及数据挖掘等课程的教学。
Tel.:13907447310;E-mail:huangyun@ustc.edu.cn
洪佳明(1984-),男,广东揭阳人,博士,讲师,主要从事程序设计基础、面向对象程序设计及数据挖掘等课程的教学。
Tel.:13430200356;E-mail:327393962@qq.com
TP 311; G 642.0
A
1006-7167(2016)02-0191-05