APP下载

以程序设计能力为核心的二级项目课程群体系建设与实践

2021-07-27窦燕穆运峰李贤善郭栋梁郭丁丁

中国教育信息化·基础教育 2021年6期
关键词:课程群

窦燕 穆运峰 李贤善 郭栋梁 郭丁丁

摘   要:针对培养学生程序设计能力的课程之间各自为政、实践资源偏抽象、程序设计能力考核中编程题目过少的问题,文章提出了以程序设计能力培养为核心的二级项目课程群体系建设方案;以三门理论课和一门实践课的深度衔接为基础,引入企业教师进行实践资源校企合作,实行课程考核强化机考的程序设计能力培养模式。三届学生全员参加CSP认证结果和优秀学生参与竞赛结果表明,该模式对学生的程序设计能力培养有较好的效果。

关键词:程序设计能力;课程群;二级项目;CSP

中图分类号:G642 文献标志码:A 文章编号:1673-8454(2021)12-0070-04

程序设计能力是利用计算机分析问题、解决问题的重要基础能力。程序设计能力可以分为两类:一类是侧重理论的,比如数据结构、算法、计算复杂度、机器学习等,这类主要是指一个人的程序构造和算法设计的能力;另一类是侧重系统的,比如操作系统、网络系统、Web系统、分布式系统、存储系统等设计与开发的能力。作为软件工程专业的学生,这两种能力对于学生专业素质的培养都是至关重要的。侧重理论的程序设计能力的培养主要是在大一和大二阶段进行,侧重系统的程序设计能力的培养主要在大三和大四阶段进行,这两个阶段也不是完全割裂的,但是也有一个明显的划分。本文讨论的是侧重理论的程序设计能力,因此将培养学生程序构造与算法设计的相关课程作为一个整体考虑是非常有必要的。目前有许多高校在程序设计能力培养体系建设方面做了大量工作。山东理工大学提出一种以竞赛促进教学、以教学带动竞赛的程序设计培养模式取得了很好的效果。[1]我校软件工程专业则通过建立培养学生程序构造和算法设计能力的课程群来提高学生的程序设计能力,以全体学生参加计算机学会组织的CSP程序设计能力认证来检验培养效果及程序设计能力培养模式。三年来的认证成绩体现出课程群建设初见成效。

一、程序设计能力培养现状

1.课程之间各自为政

侧重理论的程序设计能力培养相关的课程有多门,但是这几门课程的授课教师进行教学设计时基本上都是各自为政。例如我校的计算机应用基础进行了“程序设计课程混合式教学模式的探索与实践”的教学改革,[2]C/C++程序设计完成了“卓越计划下的C++程序设计课程教学设计”的教学改革,[3]数据结构与算法完成了“基于Moodle的数据结构混合教学模式探索”等多项教学改革的实践。[4-6]这些教学改革的内容相对局限于各自课程,不同课程的授课教师之间交流少,所用案例缺乏整体性和一致性,存在课程之间各自为政的现象,没有将它们放在一个系统的专业体系中来认知。

2.实践资源偏抽象

提高学生的程序设计能力是教师一直努力的一个方向。为了提高学生的程序设计能力,每门课程的主讲教师也都设计了相应的实验、项目操作等实践环节,但是存在一个问题,这些实践资源大部分是教材中理论知识的验证,大多缺少实际问题背景描述,并且已经抽象出了模型,学生只需要基于该模型模仿教材中所讲的知识按图索骥去做即可,虽然可以很快完成教师所布置的实验任务,但是在遇到实际问题时,学生还是难以独立完成。目前普遍存在一个现象:学生上课能听懂,但害怕写程序,碰到实际问题无从下手。[7]这个问题10年来一直存在,分析原因,这和布置给学生的实践性资源过于抽象、学生练习过少有关。

3.编程题目考核过少

每所学校对学生的培养定位不同,所以教学目标、教学内容、教学要求也会有所不同,这是极其正常的。程序设计对于学生来说有较大难度,大多数学生也难以在短短一个学期内具备较好的程序设计能力,尤其是对于大一和大二接触程序设计时间不长的学生,很多学生遇到编程题目就空到那里,而程序设计课程教学的目的是为了能让大多数学生通过考核,采用的题型大多由选择题、填空题、程序的算法描述这样的题目组成,教师为了照顾大多数学生,布置的程序实现的练习也不够多,学生在没有明确要求的情况下做的额外練习就更少了,这就形成了恶性循环。

二、课程群体系建设方案

为了解决以上问题,需要以系统的思想将程序设计类课程放在培养学生程序设计能力这个大框架下统一考虑,以数据结构与算法二级项目为核心,以相关的程序设计理论课和实践课为依托,建立一个课程群体系,最终目标是提高学生的程序设计能力。其体系结构和课程之间的关系如图1所示。

课程群中包含三门理论课程《计算机应用基础与程序设计》、《C/C++程序设计》、《数据结构与算法》和一门实践课《数据结构与算法课程设计》。数据结构与算法培养学生了解计算机常用的处理问题的方法,但是为了实现这些方法,需要掌握一些必要的工具,《计算机应用基础与程序设计》选择的C#程序设计语言、《C/C++程序设计》都可以作为实现思想的工具。虽然前两门课都是工具,但是作为刚入学的大学生来说,激发学习兴趣、夯实程序设计基础非常重要,因此入门课程高级程序设计语言的教学非常重要,应通过此课程教学激发学生的学习兴趣。教学中可用趣味性强的例题来组织教学,所有新知识点都通过实例引入,从而很好地将整个教学内容融入到学生程序设计基础能力的培养中,C#作为入门语言还是比较合适的。有了基础编程能力,需要提升学生的程序设计能力,C/C++语言能让学生更好地理解程序内在的逻辑,因此在第二个学期学习第二门程序设计语言C/C++,培养学生初步的程序设计能力。第三门课就是要培养学生的复杂算法分析能力,数据结构与算法课程就是对学生程序设计能力的提升。在学完这三门理论课程后,安排一个综合性的课程设计,是对前面所学的一个大综合。因为这个阶段主要培养学生面对一个有实际背景的问题,能够选择合适的数据结构,设计相应的算法,最终能够编程实现,对算法的学习和训练是非常有必要的,因此在课程设计中,也安排了相关的算法练习,为二级项目的实施打下坚实的基础。

每一门理论支撑课程的实践包含课堂理论、课内实验、三级项目、课外拓展训练,具体如下。

课堂理论:在讲解知识点的过程中,改变传统的以知识点为中心的教学方式,让学生围绕着现实生活中的小问题展开相关知识点的学习,引导学生将抽象问题转变为现实问题。

课内实验:将实验分成验证型实验和设计型实验两类。验证型实验针对课程中的具体知识点,设计型实验针对多个知识点的综合应用。将实验中传统的以知识点为主线的实验框架调整为以“问题”为主线的实验框架。

三级项目:传统的三级项目多是语法描述为主,学生感到枯燥,没有学习兴趣。而对于有背景描述的项目,其要求的算法隐藏其中,学生需要有较好的抽象和分析能力才能够将描述的题目转换成算法,并最终实现项目。

课外拓展训练:以Moodle网络教学平台和浙江大学程序设计辅助教学平台为依托,在平台上进行课外的练习和训练,使学生学习不断流,提高程序设计的实践能力。

实践课程包含算法强化、二级项目和企业实践。其中二级项目需要多门课程的知识点作为支撑,融合的知识点多,因此更要进行设计,提出一个较复杂的问题让学生通过团队合作的方式解决。

该课程群体系有三个特点。

1.理论课程深度衔接

课程群建设涉及三门理论课程和一门设计实践课程,该体系最大的创新是要打通这几门课程的断层现象,课程内容设计注重连贯性、突出系统性。以二级项目的设计为核心,将项目中的设计思想和编程实现所用到的知识点分解到三门理论课程中去,将 C#、C/C++程序设计、数据结构与算法(C++实现)等核心课程组成“资源共享、平台共用、层层递进、 逐步提升”的强核心课程群模块,将程序构造入门、程序构造进阶、算法设计入门、算法设计进阶、程序与算法应用组成核心课程模块,解决程序构造、算法设计及应用的知识体系构建的问题。

2.实践资源校企合作

课程群在建设过程中,开发了“程序构造能力课程校企合作组织模式”。将企业教师纳入到课程群建设中,通过企业教师将企业真实案例引入到实践教学中,形成了以专职教师为主、企业教师为辅、理论教学和实践教学并重、引进PTA程序自动评测平台的模式,解决程序类实践型教学资源建设和训练环境贫乏的问题,所设计题目具有一定的生活或历史背景,提高了学生的积极性和主动性。项目要求的算法隐藏其中,学生需要有较好的抽象和分析能力才能够将描述的题目转换成算法,培养了学生问题分析的能力,大大提升了學生程序构造和算法设计的能力。

3.课程考核强化机考

为提升学生的程序构造与算法设计能力,课程群中所有课程对内除了有常规的知识点的考核外,还要更加注重学生的实际编程能力考核。课程群中所有的理论课和实践课的实践环节均在浙江大学的程序设计实验辅助教学平台PTA,这就对学生的编程能力提出了很高的要求,每门课平时的作业练习、实验环节也都在该平台上进行,加强了学生编程能力的训练。有了最终机考的要求,学生在平时的练习中上机实践的时间也增加了许多,编程能力自然得到提升。在数据结构与算法课程实践这个环节结束后,我校软件工程专业要求所有学生参加计算机学会(CCF)软件能力认证CSP(Certified Software Professional),如果通过并在全国平均分以上,其成绩可以记为学生的创新学分。通过这个环节也可以让教师了解燕大软件工程专业学生的软件设计能力在全国参赛学校的水平。

三、课程群体系建设效果

1.参加CCF 组织的CSP认证成绩逐年提升

以程序设计能力为核心的二级项目课程群开始建设以来,燕山大学软件工程专业组织所有的学生参加由中国计算机学会举办的CSP认证。CSP是计算机学会(CCF)的计算机软件能力认证(简称CCF CSP认证)标准,其考试内容主要覆盖大学软件开发者的算法设计和实际编程能力方面计算机专业所学习的程序设计、数据结构和算法,以及相关的数学基础知识。[8][9]参加CSP认证也是检验学生程序设计能力的一个很好指标。我们软件工程专业从2016级开始全员参加CSP认证,历年成绩如表1所示。

从表1中可以看出,2016级、2017级和2018级学生参加CSP的超过了全国平均分的比例在提高,新一级学生人数的比例也在提升。对于这样的一个客观的认证结果,也说明学生的程序设计能力在逐步提升,以程序设计能力为核心的二级项目课程群建设初见成效。

2.参与各类大学生程序设计竞赛成果逐年增加

截止到2020年10月30日,燕山大学软件工程专业学生在各类大学生程序设计竞赛中获得竞赛铜奖(三等奖)以上的情况统计如表2所示。

此外,大学生程序设计竞赛分站赛(CCPC)、国际大学生程序设计竞赛亚洲区上海站(ACM-ICPC)、计算机系统设计大赛(CCSP决赛)各获得三等奖一项。从获奖数量和质量的统计结果中可以发现,2020级获奖人数和等级也比上一年增加了,说明学生的程序设计能力有了显著提高。

四、结束语

以程序设计能力为核心的二级项目课程群开始建设以来,从大一的第一门计算机应用基础课程开始就注重学生程序设计能力的综合培养,以理论课程为依托,以程序实践为突破,引入CSP认证作为程序设计能力考核指标之一,培养软件工程专业全体学生的程序设计能力;引导学生参加程序设计专业竞赛,进一步提升优秀学生的程序设计能力。实践证明,注重程序设计能力的课程群体系建设对培养学生的程序设计能力起到了较好的作用。

参考文献:

[1]张先伟,曲志坚,张立红,马新娟,王海鹏,刘晓红.程序设计能力培养体系建设与实践[J].计算机教育,2019(9):75-79.

[2]李贤善,赵逢达,穆运峰.程序设计课程混合式教学模式的探索与实践——以燕山大学《计算机应用基础与程序设计》课程为例[J].中国教育信息化,2018(12):36-39.

[3]史倩竹,窦燕,岳丽文,朱燕.卓越计划下的C++程序设计课程教学设计[J].高教学刊,2017(11):50-51,54.

[4]窦燕,李季辉,李可.基于Moodle的数据结构混合教学模式探索[J].计算机教育,2014(24):73-76.

[5]窦燕,李季辉,李可.思维导图在数据结构课程教学中的实证研究[J].教学研究,2014,37(5):40-43.

[6]窦燕,王常武,赵逢达,李贤善,李可.网络教学平台支持下的混合教学多模态考核方式[J].中国教育信息化,2017(14):17-19.

[7]刘卫国,施荣华.“计算机程序设计基础”课程群建设的探讨[J].计算机教育,2009(12):71-72.

[8]中国计算机学会.CCF软件能力认证Certified Software Professional(CSP)[EB/OL].http://cspro.org/cms/show.action?code=publish_4028807662f1ccee0162f55d6abc 0037&siteid=100000&newsid=62ebd5ce75b54c56a04332c 97705f421&channelid=0000000107.

[9]中国计算机学会.CCF计算机软件能力认证[EB/OL].https://baike.baidu.com/item/CCF%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%BD%AF%E4%BB%B6%E8%83%BD%E5%8A%9B%E8%AE%A4%E8%AF%81/20404464?fr=aladdin.

(编辑:王天鹏)

猜你喜欢

课程群
基于工匠型人才培养的课程群知识体系研究
面向复杂工程问题的计算机人才创新能力培养体系研究
面向高精尖信息化产业背景下的本科计算机网络课程与课程群建设的研究
网络工程专业围绕教学关键点的网络软件课程群构建
应用型智能科学与技术专业大数据课程群建设研究
基础医学显微形态学实验课程群的构建及意义张雪莉
基于课程群的软件工程专业三位一体教学模式探索
“卓越医师”创新创业能力培养实践教学分析及医学方法学课程群构建
软件工程专业编程语言课程群教学中的问题与对策初探
基于创新人才培养的射频课程群建设研究