论计算机程序设计实践的渐进式教学方法
2017-09-14洪宇
洪宇
摘要:目前,全國范围内的教育改革已将高校本科生实践能力的提升列为重要的发展目标。本文将结合计算机软件领域的人才需求,针对程序设计与实践教学中存在的问题展开讨论。重点阐述一种渐进式的实践教学方法,尝试将程序语言、数据结构和算法三门系列课程的内容,统一地融入工程实践环节,促进学生的系统化和工程化思维模式。
关键词:程序设计实践;数据结构;算法;编程语言;渐进式教学
中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2017)38-0267-02
互联网与大数据时代背景下,国内和国际的信息化处理行业,对具有计算机软件专业知识背景和工程实践能力的高校毕业生有着广泛而持续的需求。但是,应届毕业生在工程实践方面的短板却广受诟病,具有坚实理论基础而不具备实际开发经验的毕业生往往欠缺竞争优势。目前,高校已着力开展产学研合作,并增设工程实践为重心的新课程,旨在“趁热打铁”,通过激励在读学生将所学知识应用于实际工程开发,增进知识的直观理解和应用技巧[1]。
本文针对计算机程序设计与实践的教学方法展开讨论,重点研究综合关联课程(数据结构、算法和编程语言)的前提下,如何有效实现一种工程实践的渐进式教学方法,将多门相关课程的内容在系统化的工程实践过程中,相互结合,协同运用,并由浅入深地授予学生。
一、传统程序设计教学中的知识孤岛与无序流程
本节首先简单介绍计算机主修课程的教学与实验内容,然后分析相互之间的关系,最后指出不足。
1.程序设计相关课程简介。目前,在计算机本科生教学大纲中,与程序设计紧密相关的课程包括数据结构、算法和编程语言。数据结构是一门分析数据表示、关系与组织的课程。比如,命名实体(人、机构和地理)与属性的文字串或数值一经前端程序提取,需要建立一种方便表示与存储的泛化而通用的结构体,承载由样本至结构的赋值,支持后续使用时的提取与高效运算。算法是一种控制计算流程的方法学,其核心目标是提高计算机完成特定任务的计算效率。比如:给定一个存储随机整数的数值集合,如何快速查找其中最大数值并输出,即为一个算法问题。编程语言是人类语言与机器语言的中间层,扮演人类与机器对话的重要角色,其核心是将人类命令转化为机器可理解的信号,从而形成控制流,驱动造作系统调用计算机硬件完成存储与计算。
2.程序设计相关课程关联关系。数据结构与计算机硬件有着密切的联系,学生在设计特定数据的架构化表示时,需要考虑内存的承载能力和CPU的运算特点,以此保证内存的节约使用,以及计算过程调取数据的高效准确[2]。算法与数据结构有着重要的联系,存储数据的结构模式和存储方式,往往决定算法最优解的选择。编程语言往往是数据建模和算法流程的一种可见可控且机器可读可解的简化表述。总体上,数据结构用于操作对象的表示与存储,算法用于操作与计算流程的优化,编程语言对数据结构和算法进行描述,并控制运算单元执行指令。三者有着紧密的关系。
3.程序设计教学中有待解决的问题。目前由严蔚敏编辑的《数据结构C语言版》尝试将编码、结构和算法统一到一套教材和授课过程当中,展现了系统化教学的主流趋势。但是,将教学过程映射至实践过程,仍存在如下有待解决的问题:①知识点孤立:实践强调系统模块的协作,现有教学局限于特定功能所需的结构、算法和编程的局部特性,知识点内容内聚,缺少开放性。②局部视角:学生往往实现相互孤立甚至无关的功能,或者隶属不同应用背景和项目需求的独立模块,无法嵌入大型系统进行协作,从而,学生的开发过程也欠缺全局视角,流畅性不佳;③流程无序:开发过程欠缺流程性思考,对难易程度各不相同的系统模块,欠缺优先级判断,开发设计布局往往混乱。
二、渐进式程序设计实践教学方法
针对上述问题,本文提出一种渐进式教学方法,并应用于相关课程学习完成后立刻开展的实践环节,旨在以一种清晰、流畅且易于理解的方式,快速提升知识系统化教学的效果和学生的实践能力。该方法包括五个组成部分:(1)应用项目与系统的框架学习;(2)评测模块实现;(3)简易功能流水线实现;(4)对比实验与性能分析;(5)功能模块优化与强化学习。
1.系统框架设计交互式教学。作为第一个实践步骤,系统框架学习过程要求指导教师清晰地给出系统需求分析,并针对需求给出整体系统的设计思路,这一过程首先由学生自主设计系统框架,并最终由教师经过讨论、修正与完善,在师生交互过程中透彻授予学生全局的系统架构意识和功能划分理解。
2.点对点系统评测与实现。在进入实际系统功能模块设计与实现之前,指导教师驱动学生独立思考输入与输出模式,以及满足系统需求的正确解。在这一过程中,学生将人工收集、调查和标记数据,直接接触机器将要处理的数据对象,并对系统输出的正解给出人工的判定和标记,增强学生对项目本源问题的直观了解,尤其是该阶段将推动学生编写程序,形成评测数据的功能模块,比如:实现检验系统输出精度与效率的计算单元。
3.功能流水线开发。针对系统框架内包含的各个功能模块,驱动学生快速完成数据结构和算法流程设计,并逐一编程实现。要求从输入流到输出流,系统可运行。这一过程指导教师不干预学生设计,不对系统功能设计的合理性进行判定,只对编码异常和逻辑错误进行检查与修正。
4.实验与分析。利用第二部中设计实现的评测单元,对学生开发完成的简易系统进行性能评估。针对系统性能和优缺点展开分析,尤其通过系统整体评测和局部模块评测,透彻解析缺陷与不足,除了结合实际问题和功能需求分析方法学中存在的问题,也需紧密依托数据结构和算法知识,对各个模块数据表示、处理和计算进行深度解析。
5.功能模块优化。通过实验分析阶段,指导教师和学生共同获知系统全局与局部的问题和缺陷,在此基础上,实践教学进入逐步优化系统模块的阶段。教师将推动学生,根据发现的问题,提出新的模块设计方案,在实现新的功能模块后,立刻进入新的实验与评测阶段,对系统性能进行评价,并总结发现的新问题。这一方式针对所有存在问题的模块进行,并迭代循环,不断提升系统整体性能。
三、调查与评估
本文作者针对这一教学方法进行了实际考核与评估,并根据对比实验,获得了第一手教学质量的小规模检验报告。本节即汇报这一成果。
评估对30名本科毕业生展开,通过问卷调查,对未经系统化知识授予(A类)、具备系统知识但未进行500行以上代码编写训练(B类)、知识和编程经验过关但未经渐进式教学实践(C类)、经过严格渐进式实践(D类)和上述三项基础课程(数据结构、算法和编程语言)存在挂科现象(E类)的同学进行考察,以企业开发经验面试通过率(1表示全部面试通过,0.66表示三次中有一次未通过,0.33表示三次中有两次未通过,0表示全部没通过)为标准,评价上述A-E类人员的学习成果。
表1显示了各类参评人员的人数和通过率分布情况,其证明了渐进式教学存在的显著优势。
四、结论
经过对比试验,经过系统化渐进式程序设计实践的学生能够较好地迎合企业的人才需求,证明了系统实践过程本身和由浅入深实践方法的重要价值。
参考文献:
[1]郑春龙,邵红艳.以创新实践能力培养为目标的高校实践教学体系的构建与实施[J].中国高教研究,2007,(4).
[2]黄丽达,赵欢,杨科华,刘彦.计算机组成与结构课程教学的探讨与实践[J].计算机教育,2016,(10).endprint