吴正江+高岩
【摘要】面向计算机专业的研究生开设“面向对象程序设计”课程存在学生基础不一致、需求不一致等实际情况。文章分析了这门课程在教材、内容设计、考核方面所面临的一些问题,借鉴轻量化软件设计思想,提出以项目为主线、翻转课堂为基础、主动教学为实现手段的课程内容设置的一些想法和建议。
【关键词】“面向对象程序设计”;研究生培养;轻量化教学;项目教学;翻转课堂
一、背景介绍
2015年教育部出台了《关于改进和加强研究生课程建设的意见》,在研究生的培养工作上,要求一方面要重视研究生课程在研究生培养过程中的积极引导作用,另一方面要求尊重研究生的主体地位,鼓励研究生参与教学设计、教学改革和教学评价。对于计算机专业硕士及学术硕士来说,“面向对象程序设计”是一门专业类型的基础课,其目的在于培养学生面向对象编程的思维,并进一步提升学生的创新、合作及实践能力。
面向对象程序设计语言是目前软件行业的主流,面向对象程序设计语言具有开发和使用简单、容易模块化、开放、健壮、平台无关性等优点。2017年上半年最流行的5种编程语言中,面向对象程序设计语言占了4种,它们分别是JAVA(第一位)、C++(第三位)、Python(第四位)、C#(第五位)。唯一的面向过程的程序设计语言C语言占据第二位,足见市场对于面向对象类程序设计语言的偏爱。
现阶段,随着IT行业成为社会上月薪最高的行业,越来越多的学生开始学习计算机专业相关课程,在考研过程中选择计算机专业。而在研究生层面,计算机大专业分化出大量的分支学科,学生对于计算机语言的兴趣及研究日益多样化,使得计算机专业的专业硕士及学术硕士的专业基础课程在设置方面特别是在课程内容方面面临着其他专业所没有的困境和挑战。
二、面临的困境与挑战
研究生阶段的教育有别于本科阶段教育。本科阶段的教学以系统性、循序渐进、完整性为基本特点,其目的是辅助学生学习相应的课程内容;而研究生階段的课程设定应以引导学生学习为主,因为研究生基础及其期望比较分散,这与本科生统一大纲要求,统一学习目标有着较大的差异。因此,我们面向研究生设置课程时,既要考虑程序设计类课程体系、知识性的要求,也要考虑课程对于学生创新精神和合作精神的培养。实践过程中会面临如下困境与挑战。
(一)学生基础多元化
时至今日,计算机大类研究生入门考试多数是以C语言为基础进行考核,这导致很多非计算机专业学生可以在不掌握面向对象程序设计的条件下通过研究生入学考试。但是,因为这些学生在原有专业上具有比较优势,加之近年计算机在各行业的大量应用,社会也比较认同这类跨专业的研究生,有些导师也乐于指导这类研究生。这类学生在研究生阶段系统地学习面向对象程序设计语言,体会面向对象设计思想及理念是十分有必要的。
另一方面,本专业考取研究生的学生经过计算机专业系统的学习,已经掌握一至两种面向对象程序设计语言。面向此类学生开设的课程需要有一个更高层次的要求,而不能仅仅停留在简单的代码讲解及实现这一层面。
在现实中将这两种学生合班上课就会面临学生基础多元化的挑战。
(二)学生需要多元化
研究生的学习方向与本科分专业学习方式有很大的不同。研究生由于学习方向、研究内容决定了其使用程序设计语言的多样性。例如学习方向为图形图像和控制系统的学生,其主要使用Matlab进行仿真;研究物联网与密码学的学生则主要使用C++;研究数据挖掘方向的学生主要学习Java、Python。
(三)教材内容不够具体
现阶段“面向对象程序设计”课程所使用的教材,包括网上资源或其他线下资源多为具体编程方法,所假想受众为掌握某种语言的学习者,对于存在差异性基础的学生而言适应性较差,尤其是对于研究生而言,这个阶段学习需要着重加强的创新性、合作性培养体现不够充分。
基于上述三个原因,将一种面向对象的程序设计语言系统地、详细地在研究生阶段讲解,虽然可以给没有相关基础的学生补课,但会使本科阶段学过该课程的学生重复学习,从而失去学习兴趣,浪费了宝贵的学习时间。因此,通过该课程让学生体会面向对象程序设计的思想,理解程序编写在科研实践中的实现手段及意义,并建立一种引导性质的课程框架是非常有必要的。
三、项目引导的翻转主动学习
当软件设计者设计框架时,为了兼容底层多样化实现,设计者多会使用越来越轻量化的框架,虽然会降低一定的实现效率,但是更好的适应性、兼容性及不依赖于原生系统的特点给开发者带来了很大的便利。
研究生教学所面临的困难与软件在轻量化过程中解决的问题性质是一致的。轻量化框架的优势也可以类似地解决研究生阶段面向对象程序设计课程中的问题: (1)非侵略性API,映射到课程教育中,代表着在学生原有知识体系上构建新的知识体系,能为研究生的自由发展提供基础性保证;(2)对容器依赖性低,在课程体系中表现为可以让新的课程适应于更复杂的学生,让课程可以既适应跨专业学生,又适合于本专业的学生;(3)易于通用,可以匹配学生在研究生阶段中分散的学习目标;(4)启动时间短,可以让学生快速地融入课程,加入学习过程中。
轻量化教学在“面向对象程序设计”课程上应用可以从以下几个方面进行。
第一,引入案例教学。从生活及研究案例出发,从设计角度对案例进行讨论,可以从思想上对于面向对象的程序设计产生直观、感性方面的认识。案例化教学可以让学生快速融入课程。案例设计可以将基础知识融入其中,通过引导学生从多个角度探讨案例,可以使学生从多方面、多角度学习、复习已有知识。
第二,引入翻转课堂。翻转课堂的引入,让学生将基础学习阶段下放到课下,而将验收及应用阶段放到课堂上,可以方便教师有效地监督、了解学生的学习进度,方便教师监督不同基础的学生的学习进度。教师通过在课堂上对学生回答的问题进行点评及使用问题不断引导学生思考完成项目。
第三,分组讨论、竞争发言为主的学习手段,教师点评及辅导为主的教学手段。小组讨论是多名学生共同完成的结果,讨论过程中可以让学生对知识体系独立思考,并通过头脑风暴的方法对一个问题提出尽可能多的解决方案。同时可以在原有知识基础上,通过小组讨论的方式选优,快速吸收外界的知识,有助于培养学生的创新思维。这种方式的课程体系更容易在教学实践中展开,也可以按学生具体的知识层次进行动态、灵活的微调,以期达到更优的教学目的。
上述几个方面是相辅相成的,一切以翻转课堂为基础,以案例教学为主线,以分组讨论发言,教师点评为主要教学方式。将基础语法的学习放到课下,有利于不同基础、不同需求的学生开展自主学习。在课堂上学生分组讨论案例,可以充分调动学生的学习积极性、主动性,让不同专业的学生可以站在各自角度对同一问题发表自己的意见,通过分组发言的方式让学生之间相互借鉴思想,让组内学生相互合作,形成研究生的竞争合作模式。通过教师点评、讲解问题的方式,讲授面向对象程序设计的设计理念、程序设计过程中所考量的问题及其解决方案。
四、教学实施和效果总结
综合翻转课堂、分组讨论、案例教学的三大特征的面向对象的程序設计课程,在组织形式上满足了研究生的学习需求。在教育过程中,一方面让研究生学习了相应的课程知识,另一方面培养了研究生的合作与创新意识。
在实践过程中,将学生按自主与随机组合的原则划分为5~6个小组,每小组控制在4~5人,在课堂上所有提问及发言都以小组为单位,在讨论后统一意见公开展示。在职能上,教师在每次课堂中担任主持者,主要任务是出题,点评各小组答案,并将问题最终导向解决方案的职能。对学生考评以小组为单位,其方法是每次讨论结束后对每个小组进行排名,每组最终排名决定该组中优秀、良好、中等学生的数量。
经过实践,该方法收到了较好的效果。学生反映自己在课堂上积极思考,通过参与问答互动,更注意教师所传授的知识,课程参与程度提高的同时,课堂学习、课后完成练习及思考的积极性也极大提高,对于教师讲授的内容也有较深的印象。
这样的课程设置从目标上契合了教育部对于硕士研究生培养工作的思路。学生通过本课程的学习,不仅学到了相关知识,也培养了创新思维及合作意识,对于硕士研究生之后的课程学习与研究工作的开展是积极有益的。
【参考文献】
[1]中华人民共和国教育部.教育部关于改进和加强研究生课程建设的意见[EB/OL].http://www.gov.cn/gongbao/content/2015/content_2838177.htm,2014-12-05.
[2]余虓.略析硕士研究生与本科生课堂教学讲授方式的主要区别[J].学校党建与思想教育,2016(11):62-65.
[3]马洪霞.“C++程序设计”课程教学与创新型人才培养[J].电气电子教学学报,2011,33(04):14-15.
[4]张丽丽.研究生课堂教学创新思维的培养[J].学理论,2013(23):299-300.
[5]鲍威,张倩.扩招后我国研究生入学选择的实证研究[J].复旦教育论坛,2009,7(05):5-11.
[6]陈盛雄,罗艳霞,陈超,等.反向控制原理和面向切面编程在Spring中的应用[J].计算机与信息技术,2006(12):66-68,71.
[7]谢晓霞,罗鹏飞,张文明.翻转课堂在研究生核心课程中的实证研究[J].高等教育研究学报,2016,39(02):38-42.