王春枝 严灵毓 徐慧
摘 要:程序设计能力培养是计算机专业教育的重要组成部分。为提高学生程序设计能力,增强计算机专业学生就业竞争力,提出改进的程序设计能力培养模式。分析了当前培养模式存在的问题,结合教学实际,提出课程整合和强化实践等一系列方法与措施,用以改进程序设计能力培养模式,为培养学生的程序设计能力提供思路,促进计算机专业人才培养目标实现。实践表明,新的教学模式对培养学生的程序设计能力有积极作用。
关键词:程序设计;课程整合;强化实践;校企合作
DOI:10. 11907/rjdk. 182357
中图分类号:G433 文献标识码:A 文章编号:1672-7800(2019)005-0197-03
Abstract:Cultivation of programming ability is an important part of computer professional education. To improve the programming ability of students, enhance the employment competitiveness of computer majors, we propose an improved training mode of programming ability. In this paper, we first analyze the existing problems in the existing cultivation model for programming ability, then propose two methods to improve the cultivation model for programming ability, including integration of course group in teaching system and project driven teaching model, aiming to improve the training mode of programming ability. The two methods provide new idea for programming ability cultivation, promoting the achievement of the goal of training computer professionals. Practice shows that the new teaching mode plays a positive role in developing students' programming ability.
Key Words:programming; integration of course group in teaching system; practice intensification;corporation between university and enterprise
0 引言
随着计算机科学与技术学科快速发展,学科知识组织结构和核心专业基础知识变得越来越庞大[1],学校和学生面临难于作出准确选择的局面,学科教学内容与课程体系的外延发展模式已经不能适应学科发展需要。要将学科教学内容与课程体系的外延发展模式转变为内涵发展模式,必须运用科学的方法对学科知识体系实施改革才能达到期望的培养目标。因此,计算机科学与技术专业人才培养模式必须突破原有教学计划和课程体系,实行微而精的培养模式,才能有利于学科发展,有利于计算机科学与技术专业人才培养[2]。
纵观短暂的计算机发展史,算法和数据结构这两个主要方面一直保持不变,它们的相互作用推动了程序设计的发展。计算机科学以程序为基础,而且始于程序,终于程序。因此,程序设计能力在计算机学科知识体系中具有核心地位,对计算机专业的学生来说不仅是专业能力的培养,还体现着创造性思维的信息素质培养过程[3-6]。程序设计正是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,对计算机专业人才素质的培养至关重要[7-9]。
1 主要问题
程序设计能力培养的研究主要围绕数据结构和算法进行。美国科学院院士萨尼在其经典教材《数据结构、算法与应用(C++语言描述)》(2015年第2版)中指出,程序设计类第一门课程介绍数据结构和算法的基础知识,第二门课程介绍数据结构和算法的系统知识,然后还需要一门或两門课程,对数据结构和算法进行深入研究。然而,目前国内许多高校因为本科专业课程过多已经进行了程序设计类课程的整合。萨尼的教材实际上是C++与数据结构及算法的整合,也有用Java与数据结构及算法整合的,如在弗罗里达大学,先开设一学期的Java程序,再开设一学期的数据结构和算法。这是一种压缩的“语言+数据结构及算法”的课程模式。
目前,国内程序设计类课程存在的主要问题有:
(1)内容松散,学生难以自主学习。语言的学习模式是“语法+练习”,枯燥无味、实践课时严重不足、学生积极性不高,仅用一个学期掌握C++或Java很困难。数据结构和算法的学习模式是“概念+设计”,因为语言能力不足,常常迷失在抽象的概念中,很难有效落实到程序。
(2)课程拥挤,顾此失彼。目前,大部分高校在开设程序设计类课程的同时,还开设了高等数学和大学英语等重要的公共必修课程,导致学生精力不足以应对程序设计类课程学习。
(3)学习程序设计语言时没有导向,学生不知道为何而学。由于程序设计类课程大多侧重于基础知识,学生在学习时往往无法建立起宏观的工程项目整体感知。
2 改进措施
针对目前程序设计能力培养现状,当前的程序设计能力培养模式亟需改进。
2.1 更新教学理念,重视新技术应用
首先,紧跟当今科技发展对计算机软件的需要和国内外教学改革发展动向,重视教学思想的学习研究,不断更新教学理念。不是从概念出发而是从算法的实际需要出发,如将程序设计过程转化为解决问题的过程,每个问题都是程序设计中的问题,每个问题的解决都产生新的程序,并概括为新的概念。因此,从C到C++再到C++标准模板库,其概念都是沿着必然的发展过程,以一个扩展一个的方式呈现给学生。
同时,合理利用模拟演示、电子教案、多媒体网络课件、视频录像等多种现代化教学手段,在程序设计能力教学中采用模拟演示、案例分析等方式,通过建设丰富的数字化、网络化学习资源,搭建开放的网络学习平台,为学生提供视音频、图片、动画、文本等多媒体资源,供学生自主学习使用。在网络化学习环境中,通过学生自主学习或师生互动,有效拓展程序设计能力培养的空间和深度,提升计算机专业学生的程序设计能力。
此外,还要重视慕课[10]、微课[11]、SPOC(small private online course)[12]、翻转课堂[13-15]等新型教学技术在课程教学中的应用,构建将课堂讨论的互动优势与线上学习的灵活性相结合的混合式教学方式[16]。在学生基础知识掌握较好的时机实现课堂翻转,培养学生自学能力、组织能力和表达能力。
2.2 分层次模块化课程设计
把具有相关性或一定目的的不同课程编排到一起,进行系统学习和讲授,从而保证学科知识体系的完整性与连续性。按3个层次依次递进设计计算机软件系列课程模块化方案,如图1所示。
(1)程序设计基础系列模块。通过《编程导论》让学生掌握编程的总体基础,目标是培养学生的编程能力。
(2)程序设计系列模块。通过《C和C++的语言编程基础》和《数据结构的算法设计》课程,让学生掌握程序设计知识,目标是培养学生的系统设计能力。
(3)软件开发系列模块。通过项目应用实例让学生掌握软件开发知识,目标是培养学生的应用系统开发能力。
三大模块循序渐进,无缝连接。通过三大模块构建,建立从C到C++的平滑过渡模型,解决C++标准模板库和数据结构互为先修课的矛盾。从C到C++,再从C++标准模板库到数据结构及算法,从项目应用案例开发到IT职业角色转换,一路直达。
2.3 强化实践环节
目前高校课程繁多,要科学合理地安排课程衔接,强化实践环节。笔者学校湖北工业大学利用寒暑假设置短学期,强化实践教育,力图培养学生创新精神与实践能力,提高学生发现问题、分析问题、解决问题、交流沟通等能力。为让学生有足够的精力应对多门课程,还能够连贯地学习和强化程序设计能力,可在学期前半段安排《编程导论》课程教学,在学期后半段和短学期期间安排《C语言程序设计》集中教学和实践,避免碎片化的程序设计学习,解决程序设计学习连续性以及与高数和英语等基础课程学习时间分配的问题。
构建课程群一体化的实践教学模式。首先,优化课程实验中的基本型、综合设计型、研究创新型实验项目配比结构,探究将课程实验联合在一起完成同一项目的教学经验与方法。其次,尝试将合作企业的商业项目、教师承担的科研与工程项目、各级各类竞赛项目等合理转化为实验实践项目,实现程序设计类实验课程与行业实践相结合、实验教学与科学研究相结合,激发学生的编程兴趣,培养学生创新意识和实践能力。在可能的情况下,为学生参与科研打好基础,为优选本科学生中的科研人才提供依据。图2为一个项目驱动教学模式的过程示例。
以项目为主线、教师为引导、学生为主体的项目驱动式教学模式[17-20],改变了以往“教师讲,学生听”的被动教学模式,创造学生主动参与、自主协作、探索创新的新型教学模式。項目驱动式教学模式在国外已广泛使用,取得了很大成效,积累了许多经验。在一些国家的课程教学中,教师都要求学生结合课堂教学,分小组或独立承担一两个小型研究项目。学生通过调研、查阅文献、收集资料、分析研究、撰写论文等,将学到的理论知识和现实生活中的实际问题结合,得到训练和提高。学生还在课程上介绍自己的研究情况,相互交流。采用项目引入的教学方式,以教育部产学合作项目为契机,一方面锻炼学生的程序设计能力,在项目代码撰写过程中学习概念,突出代码编写能力;另一方面引导学生参与科研工作,为后续深造提供基础。
此外,采用高年级学生中选拔优秀学生作为低年级学生程序学习辅导,既能增强上机辅导力度,又能形成沟通的桥梁。考试采用项目演示方式,学生自己评分,教师共同评判,增强学生的参与意识。
2.4 校企合作
校企合作是教育人才培养质量提升的重要方式[21-22],笔者学院充分利用湖北省软件服务外包人才培养基地的优势,结合学科特点和计算机大类需求,探索一条实践教学体系。通过软件外包平台和企业合作,采用实际项目开发实训方式,巩固和提高学生的程序能力。
项目开发实训主要有两种形式:①邀请企业资深工程师到校内实训基地,将当前计算机行业的新兴知识和市场需求介绍给学生,让学生有针对性地学习知识,锻炼编程能力。这种实训方式通常安排在大一到大三学期末的寒暑假;②将学生输出到校外对口企业的实训基地,根据专业方向和兴趣的不同,到校外参加对应的实训,实训时间为20-30天,由校内和校外教师共同负责。如2018年暑期,笔者学院学生分赴北京和成都两地,参加了“基于HTML5的Web前端开发实训”、“纽约出租车BI大数据分析实训”、“JAVAWeb物流管理系统实训”等。
3 结语
随着信息时代的发展,IT企业对高校毕业生的程序设计能力要求也逐渐提高,通过改进程序设计能力培养模式,一方面让学生和教师成为共同学习的关系,充分调动学生的学习积极性,另一方面优化课程设置,强化实践环节,增强学生的就业竞争力。在程序设计能力培养模式的改进过程中,学生的程序设计能力显著提升,在ACM等程序设计竞赛上取得了优异成绩,学生就业情况也有很大改观,不少学生进入腾讯等大型软件公司就业。
今后将把科学研究能力的培养纳入程序设计能力培养模式范畴,着重培养一批具有一定科研能力的本科生,挖掘本科生的科研潜力,增加科研有生力量,组织科研后备军,为培养高层次科研人才奠定基础。
参考文献:
[1] 王育坚,马楠,牛选龙. 计算机科学与技术专业应用型人才培养模式改革[J]. 计算机教育,2015(23):61-65.
[2] 吕俊,陆淑娟. 以计算思维培养为导向的《C语言程序设计》课程教学改革[J]. 软件导刊,2016(8):213-215.
[3] 林健. 卓越工程师培养质量保障:基于工程教育认证的视角[M]. 北京:清华大学出版社,2016:183-190.
[4] 史晓楠,贾澍涛,罗晓霞. 计算机专业学生创新能力培养研究——以西安科技大学为例[J]. 软件导刊:教育技术,2015(11):30-32.
[5] 杨杰,刘小兵. 基于计算思维的《C语言程序设计》课程实践教学研究[J]. 时代教育,2016(15):14-17.
[6] 史晓楠,秦昳. 融入计算思维能力培养的Java程序设计课程教学实践[J]. 软件导刊:教育技术,2017(16):72-74.
[7] 刘远军,黄同成,谢兵,等. 程序设计课程教学中计算思维能力的培养[J]. 计算机教育,2014(3):18-19.
[8] 申天恩. 基于成果导向教育理念的人才培养方案设计[J]. 高等理科教育,2016(6):38-43.
[9] 周钢, 郭福奇. 基于计算思维的大学计算机基础课程混合教学改革实践[J]. 计算机教育,2017(1): 23-26.
[10] 郝丹. 国内MOOC研究现状的文献分析[J]. 中国远程教育, 2013(11):42-50.
[11] 卢行伟,田茂毅,李庆. 基于微课和雨课堂的大学计算机混合实验教学模式[J]. 实验技术与管理,2018,35(6):203-206.
[12] 陈然,杨成. SPOC混合学习模式设计研究[J]. 中国远程教育,2015(5):42-47.
[13] 张金磊,王颖,张宝辉. 翻转课堂教学模式研究[J]. 远程教育杂志,2012(4): 46-51.
[14] 赖绍聰. 如何做好课程教学设计[J]. 中国大学教学,2016(10): 14-18.
[15] 刘坚强. 翻转课堂在计算机基础课程中的应用[J]. 信息与电脑:理论版,2018(7):215-216.
[16] 李媛媛,艾贤明. 与传统课堂结合的混合式学习模式探究[J]. 软件导刊,2014(11):80-81.
[17] 刘波. 高校计算机项目驱动式教学模式探索[J]. 计算机教育,2011(4):82-85.
[18] 李新成. 基于项目驱动模式的电子技术课程教学探索[J]. 信息化服务,2018(4);73-76.
[19] 李龙森. 高校计算机项目驱动式教学模式探索[J]. 信息化建设,2016(5):173-174.
[20] 李军伟,姜学东. 项目驱动式教学模式在高校计算机教学改革中的问题分析[J]. 无线互联科技,2017(11):86-87.
[21] 刘君. “互联网+”背景下职业教育校企合作人才培养模式变革的可行性调查研究[J]. 中国职业技术教育,2018(8):40-46.
[22] 王文娟,袁红春,葛艳. 校企合作提升学生实践应用能力的探索[J]. 实验技术与管理,2018(35):189-192.
(责任编辑:杜能钢)