APP下载

面向差异化能力培养的计算机程序设计实验体系

2022-06-06白雪飞

高教学刊 2022年16期
关键词:程序设计基础计算机

王 雷,唐 建,白雪飞

(中国科学技术大学 信息学院,安徽 合肥 230027)

计算机程序在驱动当今社会高效运转的各类系统中处于核心地位,程序设计能力已成为高端人才的必备能力。作为高等教育在学人数最多的国家,我国对计算机教学越来越重视,很多大学将计算机程序设计列为面向所有专业开设的公共基础或通修课程。

与数学物理等基础课程不同的是,从教学目标上,计算机程序设计应该是一门理论与实践并重的课程。然而在实际的教学中,由于教学理念、实验条件、教学方法、考核机制的影响与约束,使得课程实践的整体水平很难达到教学要求。另一方面,现代教育理念强调以学习者为中心,而相比于其他基础课程,由于中学信息技术教育水平的不同,大学新生在计算机基础方面的差异十分巨大,单一的实验教学模式难以满足差异化的学生学习需求。

近年来各高校都加强了实验条件建设,并且针对学生程序设计能力的培养,在实验教学形式与教学内容方面进行了很多改革的尝试。比如采用项目导向、应用导向甚至竞赛导向的形式,增加探索性实验内容,引导学生综合利用知识解决问题;也有强调从错误中学习和培养编程能力、建立突出实践能力评价的多元考核体系等方法,以实践促学习;在分层教学方面,也有一些有益的尝试。但由于缺乏体系化设计以及相应的条件建设,仍然无法建立能有效解决学生基础差异问题的实验教学模式。

针对上述问题,本文首先进行了学情分析,然后设计了多平台的实验体系,通过差异化的教学实践帮助学生从不同的起点出发达到教学目标。

一、学情分析

在国内计算机教育起步阶段,几乎所有大学新生都没有专业的计算机基础,因此计算机课程可以沿用其他课程的教学模式,从零基础开始学习语法知识、练习编写小程序,所有人同步学习直至完成教学任务。当时的计算机课程主要面向信息和计算机类专业的学生,属于专业课程体系,学生的学习目标明确,学习主动性也较强。

但在进入信息时代之后,国内高校已普遍把计算机程序设计列为各专业都需要学习的基础课程,教学对象表现出如下特征:(1)专业差异大,涉及到理学、工学、农学、医学、经济学、管理学等跨度很大的专业,各专业对程序设计能力的需求各有不同;(2)基础差异大,由于信息技术不是高考科目,大多数新生并未在中学系统学习过编程,甚至有相当一部分人并不经常使用计算机,在学习本课程之前几乎是零基础,但由于信息奥赛是高考自主招生认可的五大竞赛之一,又有相当数量的学生参加过信息类竞赛,对编程较为熟悉,这些基础不同的学生显然无法保持一致的学习进度。

课程组在本校新生入学时进行的计算机基础调研结果见表1。从中可以看出,学生的计算机基础分布较为分散,其中学过C/C++的学生占比达到11.3%,而这已经是计算机程序设计基础课程能选择的最难的语言;学过至少一门编程语言的更是高达20.1%,对这些基础很好的同学来说,按部就班的实验内容难以满足他们的学习需求。但与此同时,不能熟练使用计算机的同学占比高达43%以上,其中很少使用计算机的同学达到了14.6%的比例,对他们来说,学习编程的过程具有相当的挑战性。

表1 新生入学计算机基础调研结果

从“以生为本”的角度,针对基础不同的学生,应该有更多可选的实验平台,安排不同起点的实验内容以及循序渐进的实验方案,以帮助他们尽快缩小差距,最终共同达到学习目标。因此,设计与实现一个面向差异化能力培养的实验教学体系成为必然的选择。

二、实验体系设计与教学实践

本文从教学对象、实验内容、实验平台三个维度进行了差异化的实验体系设计,其架构如图1 所示。每个维度都是一个由浅入深、循序渐进逐步发展的过程,介绍如下。

图1 多维实验体系架构图

(一)教学对象维度

中国科学技术大学(以下简称“我校”)从2009 年起,在国内率先把计算机程序设计作为全校所有专业的通修课程,并在设课同时实施了分级教学。根据新生的入学计算机测试结果,结合学生的分班意愿,划分了基础班和普通班。在当时,两类班级的主要差别就体现在实验内容上。从2018 年起,在省级重大教研项目支持下,课程组对本课程进行了更深层次的改革,在进行了细致调研的基础上再次分级,面向具有较强程序设计能力的学生增设了进阶班,配备具有丰富教学科研经验的教师和计算机专业的研究生助教,开展进阶内容的教学。从教学对象维度,分班不仅意味着知识储备起点的不同,也对应着从不同层次的实验内容和实验平台起步。

(二)实验内容维度

实验是学习计算机程序设计的最核心环节,但在当前的教学实践中,存在着实验内容过于简单和零碎、缺乏系统性与趣味性等问题。题目类型较为单一,更注重知识点的学习与练习,而不是对程序设计思想与方法的理解与掌握。特别是没有针对不同基础的学生设置不同层次的实验内容,难以满足学生的差异化学习需求。

为改变现状,首先针对基础薄弱的基础班学生,增加了计算机应用的上机内容,主要包括Windows 操作系统及常用应用软件操作实验、Office Word、Excel 和Power-Point 操作实验、以及Linux 操作系统与网络操作实验等。针对普通班的学生,实验内容则从演示型实验开始,逐步过渡到验证型、设计型和综合型,其中综合型包括了二维字符数组的操作、文件与链表的应用等较为复杂的内容,重点锻炼学生的程序设计思想与计算思维能力。

针对进阶班的学生,除了增加算法分析与设计、软件工程等方面的教学内容外,更是大幅增强了实验内容。要求学生以自由组队的方式,完成至少两项任务,其一是使用Miller Rabin 测试算法进行素数判定,其中涉及二进制大数的生成、输入、运算与测试等较为艰深的数值表示与处理的内容,学生通过本实验了解使用计算机暴力计算能力从概率上解决数论问题,以及随机化算法的设计思想;其二是设计实现一款游戏,要求:(1)该游戏必须包含动态控制成分(例如:棋子移动、飞行等,而不能是简单直接地显示棋子);(2)C 语言下可以用字符作为显示界面,也可以在C++语言下用图形窗口作为显示界面;(3)作为游戏,应当有人机交互成分。要求交互界面友好,易学;(4)鼓励有基础的同学尝试添加博弈对抗;(5)鼓励有基础的同学尝试多机联合/对抗等。

(三)实验平台维度

课程为不同基础的同学提供了多平台的实验环境,分为本地、服务端和云端三类平台。基础薄弱的学生从简单易用的Dev C++5.11 本地开发环境开始练习,有了一定基础后则要求使用兼容性更好的CodeBlocks 开发环境或更加专业的Visual Studio Code 环境。中后期的综合类实验,除了基于离线平台编写与调试源代码外,还要求学生在服务端的自主实验实训平台(图2)在线提交已完成的代码,一方面便于助教随时进行评判,另一方面可以长期保存学生的实验程序。

图2 自主实验实训平台

对于进阶班与其他进行到综合类与项目导向类实验阶段的同学,要求分别在我校自主开发的在线评测系统CODIA(课达编程)(图3)以及华为“智能基座”产教融合项目提供的鲲鹏云平台(图4)上进行自我测试与高阶练习。

图3 CODIA 在线评测系统

图4 华为鲲鹏云实验平台

(四)综合考核

合理的考核制度,重点不在于如何考察学生对知识的记忆和掌握的熟练程度,而是要有利于激发学生的学习主动性与探索未知的兴趣。本课程的实验考核环节,采用了线上线下相结合、教师与学习者共同参与的综合考核方式。

线下通过人工对演示型、验证型和设计型实验的正确性进行评判,而综合型实验则会进行综合评判,评分内容包括实验程序的完整性、鲁棒性(如是否有较为完善的错误捕捉与处理机制等)、项目报告的规范性;对项目导向类或其他开放性实验,则从作品的创新性(程序中独创的部分,包括使用新的架构、算法或策略、设计理念等)、作品新颖性(与已有程序的差异,具有趣味性甚至对抗性等)等方面,由教师、助教以及各分组间互评打分,尽可能保证评分的合理性与公平性。

线上主要通过平台打分,如自主实训平台可以完成语法练习类程序的语法正确性判定,而程序设计思想与方法的优劣则由教师和助教人工进行评判。在线评测系统由于使用了机器学习与大数据分析技术,已经能够达到信息类竞赛用软件的评测水平,适用于本课程除项目导向类以外的所有实验内容的自动评分。

以上多维考核的结果最终进行加权计算,得到学生的综合实验成绩,而实验成绩占课程总评成绩的40%,较好体现了实践能力在课程学习中的重要性。在4 个课堂进行的教学实践发现,学生编程能力有显著提高,代码规范性从无到有,难度高、工作量大的综合实验的完成率从约60%提高到85%以上。在我校课堂教学质量评估系统中,学生均给出了4.5 分(满分5 分)以上的评价,处于全校课堂的前列。

三、结束语

作为一门理论与实践并重的课程,面对基础差异巨大的学习群体,设计能力层次分明、平台搭配合理、评分公平有效的实验体系,对学生掌握程序设计思想与方法、锻炼编程实践能力具有至关重要的作用。教学效果证明了本文设计的多平台实验体系在差异化能力培养方面的有效性。未来的工作中,将依托智慧课堂等现代教育技术,进一步改进与细化差异化能力培养模式,以达到更优的教学效果。

猜你喜欢

程序设计基础计算机
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
中国计算机报202007、08合刊
中国计算机报2019年48、49期合刊
夯实基础,举一反三
夯实基础,举一反三
中国古代的“计算机”
最憨厚笔记 夯实基础就是要一步一个脚印