基于拿来主义的《C++面向对象程序设计》课程改革
2019-12-27李梅莲
李梅莲
(许昌学院 信息工程学院,河南 许昌 461000)
0 引言
许昌学院是河南省首批“地方本科高校转型发展试点单位”和“示范性应用技术类型本科院校”,入选国家“十三五”产教融合发展工程应用型本科院校建设项目。学院坚持“地方性、应用型、服务性、国际化”办学定位,坚持以内涵提升和创新引领为核心转型发展思路。为此,催生一批课程要转型发展,达到让学生学得会、有得用,培养出适合企业实际需求的具有丰富理论知识与动手实践能力的综合素质人才。
《C++面向对象程序设计》是学院数字媒体与技术专业重要基础课程,C++具有兼容C、面向对象、封装性好、应用广泛、移植性高的优点,在PC、移动设备、网络、通讯、图像、游戏、硬件驱动、嵌入式等行业,都获得了足够的市场份额,可开发大型游戏、项目,同时为人工智能、分布式数据存储、大数据等提供开发支持。目前,C++人才缺口较大,为缓和高校教育与软件产业发展需要的矛盾,满足新时期软件产业对高质量学生的要求,为数字媒体与技术专业本科学生打好C++基础势在必行。考虑到该课程基础阶段网络资源比较成熟,合理使用优质资源辅助教学,将有助于学生夯实基础,多维度、多材料的教学有助于丰富课堂内容,提高学生学习兴趣,从而提高学习效果。而是在“互联网+”教育背景下,利用网络资源不是照搬照抄,要有甄别的“拿来”,对课程要有整体计划和思路,要重视教学质量监控,重视学生学习效果。
1 教学问题
对应用型本科院校而言,人才培养强调应用型人才培养。然而,C++编程语言实际教学过程中存在理论教学重于实践教学,容易局限于某个教材、照搬某个高校课程教学等问题。
1.1 教学内容滞后
C++课程教材种类繁多,部分教材仅在旧版本基础上更新换代,实质内容并未得到提升。计算机技术发展速度大于C++课程教材更新速度。如果教材选用不当,加上部分教师依据C++课程教材制定教学计划,导致教学内容陈旧,实际运用效果大打折扣,难以满足企业需求。
1.2 教学方式单一
课时缩减情况下,部分C++教师为赶教学进度,课堂上,重视理论知识讲授,甚至对着课件,照本宣科,在“知识点讲完,学不学是学生的事”的思想指导下,课讲得没有声色,重点不突出,学生听得乏味,大大降低了课堂授课效果。
1.3 忽视教学监控
(部分)学生学习主动性和自觉性差,如果教师给学生硬性作业和可操作的实践项目,或给学生定量作业和实践项目,却不进行批改和反馈,对学生不作为不管不问,好学生得不到鼓励,差学生得不到帮助,加上课程本身难度及枯燥理论,学生的惰性就会占主导,互相比着不学习,学习氛围和学习风气不浓,混日子到期末,很难取得好成绩。
1.4 照搬其它高校教学模式
高校招收学生层次不同,培养目标和定位也有差别。教师不能因材施教,照搬照抄重点高校的教学模式往往得不到应有的效果。
2 “拿来”思维转型发展C++课程
C++编程语言是一门兼具理论性与实践性的面向对象的编程课程。课程目标是让学生充分掌握C++相关技术知识,将技术知识转化为社会与企业所需要的职业技能,提高学生C++编程语言的实践运用能力。
2.1 理论教学“拿来”教材与视频
理论教学要扩大技术知识深度与广度。学院C++课程在二年级下开设,学生有了一定的编程基础能力,制定的课程教学大纲涵盖C++面向对象基础、Windows编程基础、MFC编程基础三大块内容,为学生进一步学习计算机图形学打基础。教材选取有一定难度,考虑到知识的科学性、正确性要求,选取权威性高的教材。从面向对象基础理论方面,推荐国家级精品课教材,清华大学郑莉教授的《C++语言程序设计》(第3版)[1,9]。对于Windows编程,推荐使用国家级精品课教材,清华大学黄维通教授《Visual C++面向对象与可视化程序设计》(第4版)[10],两位教师在学堂在线都提供教学MOOC资源,且可以用智能手机登录学习。课程提供的C++知识与时代接轨,采用编程工具软件都是公司流行的VS2012及以上,知识点视频及在线作业可以辅助学生学习。学生课下通过这些网络资源丰富理论知识,扩大专业视野,教师课堂上就重点难点内容采用设问的方式与学生探讨,为学生奠定坚实理论基础。
2.2 实践教学“拿来”刷题系统
实践要建立在扎实的理论基础,实践教学——提升理论知识转化为实践运用的能力[2-3]。学生编程能力是课程实践教学的重要目标,培养学生在软件开发过程中综合运用编程方法的能力。C++编程语言是门技术应用强的课程,对学生实践能力要求极高。实操效果在很大程度上是通过学生将C++编程语言运用至程序设计、编写程序来体现的。因而,在教授理论知识的同时,加强学生对C++编程语言课程的理论实践,培养工程推理技能、问题解决技能、以及系统思维及利用程序设计语言解决实际工程问题的能力。C++实践需要强化做题,强化动手编程,以量变达到质的升华,国内外有一些较好的OJ刷题系统比较适合强化学生编程能力。比如在基础编程阶段,可以使用PTA|程序设计类实验辅助教学平台,该平台有400多所院校参与,教师共建共享题库,供学生练习,且能自动评阅,学生可随时随地通过互联网登录做题,对错立马见分晓,及时的反馈培养学生严谨的编程思维。引入课程学习后,学生与400多所高校70多万学生同台竞技,增强了学习热情,学习效果得到较大的提升。进阶阶段可以使用LintCode网站,此网站是国内较大的在线编程与测评网站,提供各大IT公司的算法面试题类型,分门别类,由简单到中等,再到难,便于不同水平的学生刷题练习。网站支持多种语言(Java、Python、C++),方便不同语言特长学生利用进行刷题练习,对于不同编程能力水平、不同职位需求的人来说都是非常有用的刷题网站。更进一步的刷题系统如中文RQNOJ、VIJOS偏重于基础算法,对于学有余力的学生POJ、SGU、Codeforces等英文刷题系统也是不错的,这些刷题系统具有挑战性,更能激发学生学习激情。更重要的是,让学生充分准备好相关程序,更好地发挥实践教学的作用。
2.3 重视教学多样性
教学过程中既不能局限于课本,也不能照搬别人的作法,要根据学生实际情况因材施教,课堂上灵活多样[4-7],既有理论讲解,也穿插优质视频分析,还可能是典型题目讨论和解析,也有对网络上的相关资源的查阅和讨论。教学手段和方法不搞形式,百花齐放,紧紧围绕教学目的与培养方案。教学语言要有激情,能调动学生学习积极性。
2.4 加强教学质量监控
除了作业和实验,中途可进行中期随堂检测,目的是加强学习过程监控,避免学生学习前松后紧,临到期末考试才紧张起来。笔者曾提出制作在线单元晋级型测试系统[8],旨在创建有一定难度的单元测试任务进行单元过关晋级,此单元不过关,就不能进入下一关,一方面遵循学习规律循序渐进,一步一个脚印,另一方面激励性鞭策学生夯实基础知识。
3 应用实践
教师合理选用教材及优质MOOC资源,不断加强学习监控,采用OJ系统多给学生布置富有挑战性的程序设计作业。作业设置相应的分数,学生课下练习时,因为可自动批阅,马上就能看到程序是否正确及在班内的排名,学习积极性大大提高,主要体现在:①创建课程交流群,学生就刷题系统作业遇到的问题进行讨论激烈;②学生平均成绩较往年得以提高;③通过问卷调查,学生对课程的满意度大大增加;④学生主动学习能力大大提升,会主动涉猎高一级的编程;⑤学生参与程序设计竞赛获奖名次及数量增加。
4 启示
为培养适应社会与企业需要的人才,提升学生实践创新能力,教师本身要时刻关注课程改革和发展,关注企业需求,借助互联网,要主动有甄别教学资源,用“拿来”思维提供给学生学习,并提供策略和方法,引导学生自主涉猎专业知识,与实际需求接轨,强化学生C++专业基础。