APP下载

CS2013指导下的程序设计课程实践教学实施方案设计与翻转实验教学实践

2017-01-05苏小红赵玲玲邱景王甜甜张彦航

中国大学教学 2016年5期
关键词:知识体系能力培养实践教学

苏小红 赵玲玲 邱景 王甜甜 张彦航

摘要:针对CS2013缺乏与其相匹配的实践教学指导性纲领的问题,以CS2013的知识体系为指导,设计了程序设计课程的实践教学实施方案,制订了以系统编程、问题求解、计算思维和自主学习能力培养为核心,涵盖程序设计完整知识体系的实践教学大纲,并具体给出了一个实验课程设计案例。然后,在这一大纲指导下进行了翻转实验的教学改革试点,借助高级语言程序设计能力训练平台和编程题考试自动评分系统,尝试了线上线下紧密结合,课内课外互为补充,能力为导向,考、讲、练结合,学习成效驱动的翻转实验教学模式,在本校程序设计课程实践教学中取得了良好的效果,保障了学生的实验效果和实验目标的达成。

关键词:CS2013;程序设计课程;实践教学;知识体系;能力培养

从计算机诞生至今,计算学科的相关专业教育一直受到国际学术学会组织的关注。美国计算机学会(ACM:Association for ComputingMachinery)和美国电气和电子工程师学会计算机分会(IEEE-CS:Institute of Electrical andElectronics Engineers-Computer Society)联合任务组于2013年推出了第四部计算机科学(CS:Computer Science)高等教育指导性大纲CS2013(Computer Science Curriculum 2013)。CS2013中的知识体系涵盖了18个知识领域,提供了不同大学和学院的121门案例课程,这些课程从不同侧面体现了知识领域中的各个知识单元组合成课程的不同方式。此外,CS2013也提供了5所不同大学和学院的核心课程设置案例,这些案例展示了如何通过知识单元实例化将完整的知识体系分配到专业培养方案中的一系列核心课程中。这些案例不仅共享了课程和核心课程设置的经验,而且展现了不同的教育理念。这些经验和案例为高等学校实施教学改革和实践提供了切实可操作的课程设计方法和人才培养方案改革模式,也引领了全球计算机教育领域的发展方向,为计算机领域专业教育构建了一幅全面、具体、严谨、深入、可操作性强的蓝本,因而受到国内外高等院校计算机教育行业的普遍推崇,在全球计算机教育领域产生了广泛而深远的影响,并引发了对其指导思想的深入研究和实践的热潮。

然而,作为计算机专业教育的基石,实践教学领域却一直没能推出一部与CS2013相匹配的指导性大纲。造成了实践教学一线缺乏清晰统一的指向和纲领,导致了先进教学理念与实践教学的脱节。

为了使中国的计算机课程与国际接轨,在我国计算机高等教育中推广CS2013的先进教育理念,2013年受教育部委托,由中国计算机学会教育工委、Intel公司牵头,组织国内十余所著名高校核心课程教师成立了“ACM CC2013中国工作组”,针对CS2013中缺乏对教学实践环节的指导性纲领问题,重点对适应CS2013指导思想的计算机专业实践教学体系进行研究。希望通过参与CS2013实践教学体系的研制工作,结束国内只是被动跟随国际标准的现状,适时将中国计算机教育的特色、需求、想法表达出来,以计算机专业实践教学体系为切入点,以期在国际计算机教育的舞台上发挥更大的作用。ACM很重视中国工作组提出的增加实践教学体系的建议,同意由中国研制CS实践教学体系,作为CS2013的附录发布。作者作为ACMCS2013中国工作组成员之一,参与了CS2013实践教学体系中“程序设计基础”核心课程实践教学体系的设计和编写工作。

本文对程序设计课程的CS2013实践大纲的制订工作进行了介绍和总结。程序设计课程群是计算机科学中的重要组成部分,在计算机专业课程体系中占有举足轻重的地位。而如何在程序设计课程的实践教学中将CS2013的教育理念具象,践行CS2013中的知识点覆盖和能力培养,体现CS2013中从知识到能力到思维培养的层次性要求,同时兼顾我国计算机专业教育的实际,是程序设计课程实践教学大纲制定过程中着重解决的问题,也是本文重点阐述的内容。

一、基于0S201 3的程序设计课程教学目标

1.CS2013中的程序设计课程

CS2013中将计算机科学的知识体(BodV ofKnowledge)组织为18个知识领域(KnowledgeArea)构成的集合,分别与计算领域中的各分支对应。其中,从各知识领域所涵盖的知识单元来看,与程序设计课程相关的知识领域主要包括程序设计语言和软件开发基础。程序设计课程相关的知识单元和核心知识点如图1所示。

2.基于CS2013的程序设计课程能力培养目标

与以往单纯强调对知识的掌握不同,CS2013中的一门课程可能包含多个知识领域中的知识单元,涵盖某个知识领域也可能需要多门课程,因此CS2013更强调学生对知识的实际运用能力,尤其是综合运用所学知识进行系统设计的能力,即具有系统编程能力;同时,在实践中锻炼求解问题的技能,要求学生能够将生活中的实际问题转化为可以运用掌握的知识来予以解决的模型,进行合理的假设和抽象,还要求学生对同一问题掌握多种求解方法,即问题求解能力;CS2013虽没有反复强调问题求解技能,但对求解问题方法的选择和求解代价的评估,以及对封装、抽象、系统级视角解决问题等思维方式的引入,都蕴含了对学生计算思维能力的要求;此外,计算机学科的快速发展特性使得学生是否具有终身学习的能力成为计算机学科对学生的培养是否成功的标准之一。这种终身学习能力要求从向学生传授知识,改变为引导学生自主学习,最后使之形成终身学习的习惯,因此如何引导和强化学生形成自主学习能力应该是当今高等教育中所有课程的实践教学环节所面临的重要任务。

其中,系统编程能力的训练应在实践教学中贯穿始终。随着实践教学的开展和深入,逐渐培养学生的问题求解能力,在学生具备基本的编程能力、掌握一定的问题求解方法之后,引导其进行自主学习,并最终形成计算思维,完成从手到脑到思维的能力的逐级提升。

3.基于CS2013的程序设计课程教学目标

教学目标决定着教学的过程和对教学的评价。只有设立了明确清晰、恰当合理的教学目标,才能聚焦教学活动中的各个环节,使各项教学活动的设计紧紧围绕着目标而展开,并为最终达成目标而服务。用目标的导向性避免教学活动的盲目性和随意性,避免教师过分依赖个人的直觉和经验进行教学。

因此,为了制订与CS2013相匹配的程序设计课程实践教学大纲,首先要明确程序设计课程的教学目标,即通过熟悉一种程序设计语言(如c/c++)的基本语法和编程实践,了解软件设计与开发的过程,掌握结构化程序设计和面向对象程序设计的基本方法,掌握计算机问题描述和求解的思维方法,以及软件系统设计与实现的基本方法,使学生熟悉程序设计语言的集成开发环境,熟悉计算机求解问题的常用算法,熟练运用结构化程序设计和面向对象程序设计方法解决实际问题,增强系统分析、设计、编码和调试的能力,养成良好的程序设计风格,使其具备今后无论使用什么语言编程都能灵活应用这些思想和方法的能力。

二、基于CS201 3的程序设计实践教学设计

1.基于CS2013的程序设计课程实践教学规划

根据程序设计课程的能力培养目标和教学目标,以及CS2013中对程序设计相关知识领域和主题的规划,结合国内的实际教学情况,从CS2013中相关的主题中提炼出需要在教学实践环节中予以强化、加深的知识点和能力点,并针对这些需求规划制订了与课堂教学内容和进度匹配、覆盖重要知识点和能力点的实验和课程设计。

在整体规划中,实验部分包含不多于5个必修实验,不多于2个选做实验,课程设计部分包含最多3个必修课程设计。各实验与相应知识领域、知识单元和知识点的对应关系如表1所示。

2.基于CS2013的实践教学内容设计原则

实践教学内容设计遵循以下三条原则:

(1)基础实验部分循序渐进、层层深入地引导学生逐步运用所学知识,对关键能力的形成进行反复训练,最终强化为计算思维能力。

(2)综合实验和课程设计兼顾趣味性和实用性,强调学生综合运用所学知识进行系统编程能力的训练和培养。

(3)实验任务强调自主性,鼓励学生自主选题或自主设计任务要求,为学生自主实验创造条件,激发学生的主动学习意识和学习兴趣,从而逐步形成自主学习能力。

3.基于CS2013的实践教学内容设计

CS2013制订的实践教学大纲的具体实验内容、题目和对应的能力培养目标如表2所示。

三、基于CS201 3的程序设计实验设计案例

以贪吃蛇游戏为例,介绍本实践教学大纲制订的思想和设计方法。

1.案例内容

题目:贪吃蛇游戏。综合运用面向对象知识,编程实现贪吃蛇游戏,熟练掌握面向对象的程序设计方法,增强系统分析、设计、编码和调试的能力。

(1)用户账户管理功能:记录用户个人信息、得分和级别,支持个人信息的增删改查。

(2)游戏管理功能:按照食物出现的频率、贪吃蛇移动的速度等设置不同的难度。使用键盘方向键控制贪吃蛇的上下左右移动,在没有用户按键操作情况下贪吃蛇自己沿当前方向移动,在贪吃蛇所在的窗口内随机地显示贪吃蛇的食物,并实时更新显示贪吃蛇的长度和位置;当贪吃蛇的头部与食物在同一位置时,食物消失,表示用户吃掉了食物,贪吃蛇长度增长,用户得分增加;当用户得分达到预设值时,游戏过关;当贪吃蛇头部到达窗口边界或即将进入身体的任意部分时,游戏结束。

(3)进阶内容:实现学英语背单词功能。游戏开始后向用户展示一张给定的单词表,单词表可从指定的单词文件中随机抽取,随着游戏级别增长,单词表中单词的难度加大;食物为字母,用户操纵贪吃蛇按顺序选择要吃掉的字母,吃掉的字母形成单词表上的未被吃掉的单词后,用户得分增加,单词表中的单词减少;当单词表为空时,用户过关。这个进阶内容就是学生自主设计的一个任务。

2.案例分析

该课程设计覆盖的知识点如表3所示。这些知识点涉及cs2013中的软件开发基础和程序设计语言两大知识体,知识点覆盖全面,基本涉及了从基本的数据结构到面向对象程序设计,从算法到程序设计方法,从设计、编码到测试、验证等程序设计课程中涵盖的几乎所有重要内容,是具有很强综合性的课程设计题目。

题目的特点是兼具趣味性、综合性、层次性、实用性。趣味性体现在题目来源于受众广泛的游戏,以游戏这种学生喜闻乐见的形式来代替较为刻板的题目,可以提高学生的学习兴趣;综合性体现在题目覆盖了贯穿程序设计课程的大多数知识点,同时能够对程序设计、编码、测试、调试、纠错、抽象和建模等多种能力进行训练,在知识点覆盖广度和能力训练深度上具有综合性;层次性体现在题目中功能的设置从易到难,由浅入深,学生可以根据能力选择其中的部分功能予以实现,以适应不同层次的学生的不同需求;实用性体现在经学生自己设计实现的这一系统可在自己的学习中实际使用,这将大大促进学生对程序设计的实际价值的认知,从而提高学生对程序设计的兴趣。

四、学习成效驱动的翻转实验教学实践

如果没有好的测评作为导向,那么目标的制订和实施将成为一纸空谈。有效的评价机制可以让教师及时了解教学目标的实现程度和学生的学习状况,以便及时调整教学活动,改善教学计划和方法。

为了顺应“互联网+教育”的发展趋势,保障学生实验效果和实验目标的有效达成,我们自主研制开发了支持远程在线自主实验的高级语言程序设计能力训练平台。该平台允许学生自主选择实验内容,自主选择完成实验的时间和地点,让学生“我的实验我做主”。这种方式从空间和时间上拓展了传统实验课的“疆域”,使程序设计课程的部分实验从课内迁移到课外,从而形成“线上线下紧密结合、课内课外互为补充”的实验教学模式。在资源约束、空间约束和时间约束的条件下,这种实验教学模式突破了传统实验在固定时间、固定地点和可获取知识信息量有限等方面的制约,突破了场地、时间和资源的限制,实现了实验教学手段的电子化、网络化和信息化,促进了信息技术与高等教育的深度融合。

实验的目的是什么?既不是教师在实验课上盯着学生一行行敲代码,也不是仅仅给学生一个实验分数,而是让学生在实验和师生面对面的交流过程中能够做有所得、学有所获。既然如此,那么如何让学生在实验过程中“做有所得、学有所获”呢?

基于这样的考虑,我们在高级语言程序设计能力训练平台上增加了程序在线评测、错误反馈和定位等功能。原来学生提交的实验程序需要教师手工评阅,现在学生提交实验程序可以实时获得评分和成绩排名,允许学生多次提交程序,直到成绩满意为止,对错误的程序还能给出相关提示辅助学生自主修正错误。平台的在线评测、错误反馈和定位等功能使得学生不仅在课外没有教师指导的情况下也能自主完成实验,而且在实验代码的一次次提交和改错中还能获得能力的提升,既降低了教师指导实验的工作量,又达到了“以评促学”的教学目的,提升了学生的程序调试和排错的能力,教师还可以从平台上及时跟踪和了解学生的学习情况和学习行为特点,使学生的实验效果可控、可观测。

为了引导学生从关注“学习成绩”到关注“学习过程”和“学习成效”,我们还改革了实验考核方式。一方面按学生在高级语言程序设计能力训练平台上的刷题分排名取相对分,作为平时实验分;另一方面完全取消了期末考试,每次实验课都利用我们自主研制的编程题考试自动评分系统进行机上考试,在所有实验考试成绩中去掉一个最低分作为学生的实验上机考试分数。相对于期末只考一次而言,这种分阶段马拉松式的考核方式能帮助学生及时发现自己在学习上存在的问题,以便及时补救,从而达到“以考促学”的目的,避免了期末考前临时抱佛脚、“亡羊补牢、为时已晚”的问题。

为了让学生每次都考得明明白白,学得扎扎实实,我们又进行了如图2所示的实验翻转课堂试点。在每次考试结束后,都由教师和学生共同点评错误的程序,让学生有反思自己试卷的机会,共同点评典型错题之后再进行一次不计分的模拟重考,让学生考一次收获一次、练一次进步一次。

这种“考讲练相结合、能力为导向、学习成效驱动”的翻转实验教学模式,在2015年秋季学期试点后取得了良好的效果。以前的实验课经常有迟到早退和上网聊天现象,自试点翻转实验课以后,不再有迟到早退和上网聊天的现象,因为学生从这种实验教学模式中尝到了甜头,实现了“考有所得”。这种“一对多”的批量指导模式大大缓解了实验助教严重不足和一对一指导实验工作量大的问题,提高了实验指导效率,而且学生在教师点评错题后通过自己的思考和分析自行解决自己的问题,也更容易产生成就感。此外,教师还可从随堂考试和试卷点评中及时了解学生在学习上的薄弱环节,进而有的放矢地调整后续的教学进度和教学内容。

猜你喜欢

知识体系能力培养实践教学
构建知识体系的专题课程教学改革实践和探索
智能信息处理实验课程建设
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
高职院校商务礼仪课程教学改革探索刍议
《飞机结构与系统》课程教学问题与改进措施
数学归纳法在高中数学教学中的应用研究
信息技术教学中学生自主探究能力的培养探析
基于CDIO的大学生职业素养培养研究
低年级学生课前预习能力的培养