从课堂教学到项目教学的跨越
——双轨并行的程序设计教学改革探索与实践

2018-10-25 03:14李骏扬魏海坤
计算机教育 2018年10期
关键词:研讨计算机工程

李骏扬,魏海坤

(东南大学 自动化学院,江苏 南京 210096)

0 引 言

在大数据和人工智能时代,程序设计能力越来越成为工科学生参与科研或工程不可或缺的技能。在计算机语言的教学中,越来越多的院校将项目教学作为课程设计的重要组成部分[1-2],但在日常教学中,依然存在着一些问题。传统的授课形式过分偏重以教师为中心,知识体系性强却缺乏实际应用,学生学习内在动力不足[3];在教学内容上,过分重视对语法知识的讲授,轻视编程和调试能力的培养;单纯的项目教学也往往导致学生知识体系上的不足[3]。另外,程序设计课程通常在大学一年级开设,此时学生的计算机基础水平参差不齐,而程序设计本身逻辑上的严谨和语法上的琐碎也客观上导致“学生难学,教师难教”的现象[4]。

针对上述问题,在计算机语言课程的教学改革中,结合课堂与项目教学,优势互补、双轨并行,能够取得较好的成效。

1 教学改革总体设计

1.1 教学模式双轨并行

传统以课堂语法讲授为主的授课模式,优势在于授课内容具有体系性,但学生往往不知道所讲授的知识技能与实际应用的联系,因此难以在实际项目中灵活应用[5-6];而项目制教学的优势在于可直接借助具有真实应用背景的项目,实现对知识和技能的掌握。学以致用,使项目制教学可以极大地激发学生的学习动力和兴趣,同时培养其自主学习能力、工程素养以及创新创造能力[7]。项目制教学也有缺点,主要在于学习的系统性不够,特别是对项目中未涉及的知识和技能易出现掌握不到位的情况[8]。

通过2种教学模式的优势互补,可实现“课堂授课+项目研讨”双轨并行。双轨并行的教学模式(如图1所示),一方面对传统课堂教学内容进行深化,在讲授传统语法知识的同时,突出与所布置项目相关知识和技术的讲授;另一方面,为学生提供一批精心设计、具有一定深度和专业背景的团队和个人项目,作为学生必须完成的任务。同时,在项目完成过程中,充分组织学生进行各种方式的课内和课外、组内和组间研讨,促进学生互相学习和提高。

1.2 教学内容逐层递进

针对部分学生计算机语言入门困难的情况,将课堂教学进行5层递进的设计:①以计算机基础选修课程构建学生认识与使用计算机的基础(选修,16课时授课、8课时研讨、16课时实验);②以Python语言课程培养学生的计算思维(必修,16课时授课、8课时研讨、16课时实验);③以C语言课程提升学生编代码的能力(必修,16课时授课、8课时研讨、16课时实验);④以C++语言课程强化程序算法设计(必修,32课时授课、16课时研讨、32课时实验);⑤借助多种进阶语言与编程平台的选修课程进一步提升学生的编程能力。课程教学内容体系如图2所示。

图1 双轨并行的教学模式

图2 课程教学内容体系

2 双轨制教学模式构建

2.1 明确课程地位,确立教学目标

首先,计算机语言是工科学生在未来的科研与工程中重要的工具。在针对硕士生、博士生、指导教师以及毕业学生就业企业的调研中发现,科研或工程中对计算机语言的需求不仅仅是语法与算法的掌握,更重要的是如何将思想转变为程序,如何解决工程中的实际问题,以及研究者或从业者面对问题的钻研精神、快速的自主学习能力,以及对问题分析、剖析、审视、解决的能力。另外,自主学习、方案辨析、团队协作、交流沟通同样十分重要。

其次,作为学生进入大学本科的第一门实践性课程,程序设计课程具有让学生逐步适应大学学习方式、转被动应试学习为主动探究学习的天然使命。程序设计课程改革以学生为本,针对学生学习的每一门课程,不仅是知识的学习与技能的训练,还应该在相关的学习方法、思维方式、价值理念方面给予学生正确的引导。

因此,确立了计算机语言课程的教学目标:学会编程、学会学习、理解工程、解决问题,即培养学生通过计算机语言解决实际科研或工程问题的能力,并通过该课程的学习,提高学生的自主学习能力和综合工程素养。

为了达到课程教学目标,针对学生在学习过程中出现的各种问题,可以建立 “课堂授课+项目研讨”双轨并行的教学模式,并采取“自主探究、专业融合、项目研讨、团队协作”的实施路径。

2.2 课堂教学逐层深入,以服务工程为导向

针对一年级新生学习C++语言困难重重的情况,引入Python先修语言以解决入门级编程和最基础的计算思维学习,而将完整的语法、内存管理等高阶知识留到C语言和C++语言中讲授。通过这种方式,将计算思维、代码风格、工程理念、程序调试内容融入各个课程模块的教学环节中,为项目的实施做好准备。多层次多语言教学模块如图3所示。

2.3 项目设置以专业为背景,以解决问题为导向

首先,向各专业教师征集科研与工程中的真实项目案例。与专业相结合的真实项目能让学生快速理解各知识点在解决具体问题时的作用,同时也有助于学生更快地融入本专业的学习。

图3 多层次多语言教学模块

其次,项目应具有深度和一定的挑战性。计划引入个人项目和团队项目两种项目方式,其中个人项目是具有工程背景的小型项目,目的是锻炼学生的个人编程能力和调试能力,要求每个学生独立完成;团队项目是需要3~4人合作完成的项目,目的是通过团队合作锻炼学生完成较大项目的能力,并具有系统性、完整性的特点。项目完成情况应不仅考虑正确性,还必须考虑系统性、可靠性、可维护性等因素。项目中所涉及的知识点大部分会在授课中讲解,但也有相当一部分需要学生查阅资料、自主学习。在项目的实施中,教师不是讲授者,而是项目的引导者。在教师的指导下,学生以小组为单位,自主探索项目所要解决的架构、算法等问题。部分项目案例如图4所示。

为了切实锻炼学生的基础算法能力,项目中的核心算法部分必须深入分析,自主实现。

2.4 构筑从授课到项目的桥梁

由于项目具有较高的难度,因此需要引导学生逐步从课堂教学递进到高难度、具有挑战性的项目。

图4 部分项目案例

首先,在课程架构中,除了课堂教学与项目教学(团队项目)外,还在其间设置 “实验”和“个人项目”两个台阶。平时实验每周一次,强调对知识的初步运用,理解基本算法。个人项目每学期设置5次,每个学生单独完成小型项目,这些项目注重算法的深入,在其中必须对较为复杂的算法进行辨析、分解、改进、调试,并将整个过程撰写成简单的文档。通过这两个台阶的设置,学生可以更好地融入具有挑战性的团队项目。从课堂授课到团队项目的递进如图5所示。

其次,在实施层面,项目激励与进度把控并行至关重要。教师应引导学生确立项目的实现目标,对存在问题进行剖析,对软件系统进行构架,对团队进行激励,对重要技术进行研讨,对编程经验进行分享。团队项目的实施过程与激励如图6所示。

图5 从课堂授课到团队项目的递进设计

图6 团队项目的实施过程与激励

最后,在团队项目实施过程中嵌入研讨型教学模式。研讨形式包括组内研讨、组间研讨、集体研讨,其中组内研讨和组间研讨由学生自主安排;集体研讨主要安排在项目开题、中期检查和项目结题阶段,目的是促进学生之间的互相交流,并使指导教师了解各组的项目进展以推进项目。对项目开题,研讨内容包括项目的研究现状、存在问题、项目难点、拟采取方案等;对项目结题,研讨的内容包括项目的实际解决方案、软件功能演示等。研讨时学生是主角,教师的作用主要是控制研讨进程,并记录学生表现以便于后面的过程化评价。研讨的目的在于促使学生互相借鉴和提高,更重要的是将课程的教学模式真正转向以学生为中心的自主学习模式。

2.5 建立过程化学生成绩评价模式

针对教学目标,应结合工程教育认证的要求,对学生学习的全过程进行过程性评价[9]。评价要综合考查学生的平时作业、个人项目与团队项目,并形成知识技能、解决问题能力、学习研究能力、工程规范和团队协作5项评价输出。多维度评价输出如图7所示。

其中,知识技能考查学生的基础程序编写能力与算法设计运用能力;解决问题考查学生在项目的系统分析、构架设计、方案实施、测试迭代等解决实际问题的能力;学习研究考查学生在自主学习、自主探究、资料收集、方案对比、文档撰写等方面的综合学习能力;工程规范考查学生在从设计、实施、测试到交付的过程中,对架构、接口、代码、文档等的规范化能力;团队协作考查学生在项目实施过程中的团队领导与协作能力。

图7 多维度评价输出

该评价体系根据平时作业、个人项目、团队项目、上机考试等教学过程的16项教学输出,针对12项内容进行考查,并最终形成多个维度的考核指标。

3 课程实施

依托计算机教学实验中心,课程组启动教学改革,以部分工科院系为试点单位,此后逐渐推广至全校各工科专业。

在教学改革的实施中,学生程序设计能力提升明显,完成项目的总体难度和复杂度有了显著提高。在改革之前,学生完成计算机综合课程设计的平均难度是类似于简单计算器的程序;而改革后大部分学生在综合课程设计阶段,完成的课题主题涵盖图像处理、数据传输、文件压缩、统计分析等领域。

经过多年努力,课程组建设了丰富的课程资源,包括精品教材、课程网站、课程项目库、研讨型教学资料、过程化考核文档等。另外,为加强课程网络建设,设计了课程云平台;向全校各工科专业的科研与工程团队征集项目案例,在专业教师的帮助下,根据学生的实际能力,对案例进行简化和落地,转换为项目可实施的案例;建立在线评价系统,面对复杂的教学过程中的评价数据搜集与统计工作,与教务系统对接,提高教师工作效率。

学生参加中国大学生计算机设计大赛等软件设计类竞赛的成绩也有大幅度提升。在多次教学评估与工程认证中,学生一致反映C++程序设计课程是他们印象最深、收获最大的课程之一。

4 结 语

双轨制的教学改革是计算机基础教学中的一次重要探索。以学生为中心,以学好、用好计算机语言工具为根本任务,以培养学生创新能力与综合素养为重要理念的双轨制程序设计课程教学改革,也将在未来的道路上不断地接受各方的反馈,持续进行改进。

猜你喜欢
研讨计算机工程
基于计算机自然语言处理的机器翻译技术应用与简介
计算机多媒体技术应用初探
使命与担当:福建省高中语文名师“整本书阅读与研讨”专题研讨
水运发展与专业研讨
《计算方法》关于插值法的教学方法研讨
《计算方法》关于插值法的教学方法研讨
使命与担当:福建省高中语文名师“整本书阅读与研讨”专题研讨
信息系统审计中计算机审计的应用
计算机网络安全
子午工程