面向新工科人才能力培养的计算机程序设计课程改革
作者: 王雷 秦琳琳 王嵩
摘 要:新工科教育注重对工程人才的学习能力与思维能力的培养。计算机程序设计在本科课程体系中具有基础性地位,是新工科教育中的一门重要课程。然而该课程传统上以知识传授为主,教学内容与教学方法难以满足新工科教育的需求。课程改革针对新工科人才能力培养中的基础差异、自主学习、编程实践问题,基于入学测试与学生意愿进行分层教学设计,基于智慧教学工具进行教学方法创新,基于多级实验体系进行教学平台建设。教学实践表明,课程改革取得预期的成效,初步实现知识、能力、素质三位一体的培养目标,具有较好的推广价值。
关键词:新工科;计算机程序设计;计算思维;自主学习;能力素质;教学改革
中图分类号:C961 文献标志码:A 文章编号:2096-000X(2023)24-0161-04
Abstract: New engineering education focuses on the cultivation of learning ability and thinking ability of engineering talents. Computer Programming plays a fundamental role in the undergraduate curriculum system, and is an important course in the new engineering education. However, the course has traditionally focused on knowledge transfer, and the teaching content and teaching methods are difficult to meet the needs of new engineering education. The curriculum reform aims at the basic differences, independent learning and programming practice problems in the ability training of new engineering talents, reconstructs the teaching content based on the programming method, innovates the teaching method based on the wisdom teaching tool, and builds the teaching platform based on the multi-level experimental system. Teaching practice shows that the curriculum reform has achieved the expected results, and has initially achieved the training goal of knowledge, ability and quality, which has good promotion value.
Keywords: new engineering; Computer Programming; computational thinking; autonomous learning; competency; reform in education
新时代需要新思想、新理念、新发展。在当前国际形势与科技产业变革背景下,我国提出并大力推进新工科建设,形成了“复旦共识”“天大行动”“北京指南”,发布了《教育部高等教育司关于开展新工科研究与实践的通知》[1]《教育部办公厅关于推荐新工科研究与实践项目的通知》[2],明确提出对新工科人才培养的需求。与此同时,国际上也开展了对工程教育的新一轮系统性反思和变革。以MIT的“新工程教育转型”(New Engineering Education Transformation,简称NEET)计划为代表,变革的重点集中在学生的学习方式及学习内容,目标是培养能够引领未来产业界和社会发展的领导型工程人才[3]。
现代教育强调对学习者知识、能力与素质的全面培养。2018年的全国教育大会提出“教育引导学生培养综合能力”[4],2020年中共中央、国务院印发《深化新时代教育评价改革总体方案》,要求树立科学成才观念,坚持以德为先、能力为重的人才培养思想[5]。
中国科学技术大学(以下简称“我校”)信息学院自动化系是教育部第一批“新工科”建设项目核心单位。计算机程序设计作为面向全校所有专业开设的通修课,属于重点建设的课程,2018年获批省级示范基层教研室。教研室很早就把培养学生的计算机应用能力和计算思维能力作为教学目标[6]。2020年我校发布《中国科学技术大学“一流本科教育质量提升计划”行动纲领》,在本科生培养框架中将计算思维列为与思政、数理同等地位的通修内容(图1),进一步明确“培养学生利用计算思维解决复杂问题的综合素养”。
传统的教学模式以教为中心,侧重知识传授,强调对学生进行基于学科知识的认知能力的训练,忽视能力素质的培养。计算机程序设计课程(以下简称“本课程”)从能力培养的问题出发,进行了课程设计、教学内容、教学模式及实践平台等方面的改革,取得了具有推广价值的成果。
本文首先介绍计算机程序设计课程的能力模型,再阐述针对教学现状中存在的问题的改革思路,接着进行面向能力培养的教学设计,最后进行改革成效的分析。
一 课程能力模型
本课程的能力模型[7]如图2所示,揭示了编程实践能力、计算思维能力与自主学习能力之间的关系。
最底层的编程实践是基础能力。作为面向所有专业的通修课,本课程首先要完成培养学生编程实践能力的任务。计算思维概念虽然起源于计算机科学,却是一种面向问题求解与系统设计的一般性科学思维方法。在计算思维的引导下,学生能更深入地理解与掌握程序设计思想,因此是本课程拟培养的核心能力。最上层的自主学习能力,需要学生通过独立地分析、探索、实践、质疑与创造等方法来实现学习目标。一门课的时间和知识是有限的,学生只有拥有自主的学习能力,树立终身学习的观念,才能获得持续的发展。
二 教学改革思路
基于上述课程能力模型,教研室针对新工科人才能力培养中存在的问题进行了课程教学改革的尝试,问题分析与改革思路如下。
(一) 基础差异问题
针对我校新生的调研表明,20%以上的学生学习过C语言或C++,其中相当比例的学生参加过信息类竞赛,而14%的学生极少使用计算机。如此巨大的基础差异,不仅使得教学安排存在困难,对学生的学习兴趣也有很大的影响。同一课堂中,同样的教学内容与教学方法,基础非常好的学生会觉得索然无味,而基础薄弱的学生却常常跟不上进度,课堂氛围较为沉闷,教学效果大打折扣。更重要的是,长此以往会使得学生逐渐丧失学习兴趣,难以达成教学目标。为此,首先根据新生入学计算机测试成绩,结合学生的意愿实施了分层教学,将课堂划分为进阶班、普通班与基础班,再通过引导学生通过自主学习缩小基础和进度差距。
(二) 自主学习问题
自主学习是终身学习的基础。由于本课程是在大学一年级第一学期开设的基础课,新生大多延续了中学阶段应试教育的学习习惯,对课程学习的定位往往是快速正确解题,还没有形成自主学习的意识,也基本不具备自主学习能力。从教学的角度,单纯靠布置作业和思考题让学生自己完成,并不能培养出自主学习的意识与能力。为此,首先通过介绍本课程的知识体系、考核体系与能力要求,纠正学生的学习目标;再通过提供慕课等优质的课外学习资源,在合理的教学设计与实践体系下逐步引导学生培养自主学习能力。
(三) 编程实践问题
传统的程序设计课程教学中,学生都是在机房集中进行编程训练。实验环境与实验内容基本只能完成语法单元的编程练习,不仅编程能力提升缓慢,且难以触及程序设计的核心思想与方法。为此,教研室建设了包含模仿练习、自主实训、产教融合实验内容的多维分级实践平台,在该平台上逐级训练与提升学生的编程实践能力[8]。
三 面向能力培养的教学设计
基于上述课程改革思路,教研室基于“雨课堂”智慧教学工具,针对课前、课中、课后、实践和考核五个环节进行了面向能力培养的课程教学设计。完整的教学过程如图3所示。
(一) 课前自习
课前要求学生基于慕课与教材进行预习和练习。教师在课前通过雨课堂发布预习课件,列举教学内容、提出自学的要求与预习的问题。学生通过查阅教材、观看慕课与线上答题完成预习过程,在了解知识点的基本概念与简单示例的基础上,重点学习如何针对教学内容发现并提出问题,养成带着问题学习和思考的良好学习习惯。
(二) 课中引导
课中使用“雨课堂”智慧教学工具,首先针对预习内容进行小测与答案解析,然后通过问题列举和案例分析导入新课内容,接着在阐释知识点的基本概念后演示与讲解程序,教学过程中根据学生的弹幕调整演示与讲解过程,在适当针对新课内容进行课堂练习与答案解析,最后小结并布置练习与预习作业。
课中大量采用启发式教学方法,比如在分析线上答题情况时,不是简单给出正误答案,而是通过提问提示学生应该如何分析与理解问题的本质。再进一步结合案例对相关的概念进行更为深入的解析,特别是从错误的答案中提取有价值的想法与问题,培养学生质疑精神的同时训练学生的思辨能力。而在随堂练习环节,除了通过智慧教学工具实时检验学生对知识的掌握程度,还可以据此调整教学过程。最后布置开放性的课后思考作业,可以用来引导学生调研教师推荐的网络资源,并通过对比分析辨析真伪,培养科学求证精神。
(三) 课后探究
课后布置非标准化的思考作业,通过雨课堂、即时通信工具QQ以及课程群与学生交互,对学生提出的问题给出解题思路的提示,而不是直接给出答案,引导学生自己思考和探索。这种依托现代信息技术的探究式的问题引导教学过程,不仅有助于培养学生的自主学习能力,还能全程记录教学数据,用于持续的教学改革。
通过上述课前、课中和课后的混合教学过程,引导学生从发现与提出问题出发,基于自身的基础与认知特点安排学习计划、调整学习节奏、检验学习效果,在学习知识的同时获得自主学习的能力。
(四) 实践环节
计算机程序设计是一门理论与实践并重的课程,实践能力的培养至关重要。教研室设计了多维实验体系(图4)[8],根据分级实践原则,将实验内容分为章节实验与综合实验,分别在C/S架构的传统机房、B/S架构的自主实训平台以及“鲲鹏云”平台上进行,不同基础与学习进度的学生可按需选择,逐步提升编程实践水平,培养解决复杂问题的能力。
计算机基础薄弱的学生从本地计算机软件的应用开始学习,同时在Dev C++等本地开发环境进行简单的语法练习;普通水平的学生直接从本地的语法练习开始,逐步过渡到在信息学院开发的自主实训平台的服务端提交较大的程序代码;有一定编程基础后,可以在计算机学院开发的课达在线测试平台检验规范化的程序设计水平,感兴趣的学生还可以在“智能基座”产教融合项目提供的华为云平台开展团队合作形式的项目导向类实验实践。