浅谈Github开发平台在“高级程序语言”课程 设计中的应用

2021-05-12 13:01谢杰华
教育教学论坛 2021年9期

[摘 要] 为了适应信息技术的发展,以培养人才为目的的各高校开设了种类繁多的计算机类课程。其中“高级程序语言”作为计算机实践类课程,旨在巩固学生所学知识,培养学生的动手实践能力。分析了“高级程序语言”课程设计的传统模式中所存在的缺陷,提出了将软件项目托管平台Github应用于该课程的设想,并通过实例简单描述了Github在高级程序语言课程设计中的应用,同时分析了该新模式的优点。

[关键词] 高级程序语言;Github;软件项目托管平台

[作者简介] 谢杰华(1972—),男,广西南宁人,硕士,广西大学电气工程学院副研究员,主要从事计算机软件设计开发研究。

[中图分类号] G641   [文献标识码] A   [文章编号] 1674-9324(2021)09-0115-04    [收稿日期] 2020-12-31

一、引言

随着信息科技的发展,电脑、手机及网络已经成为人们日常生活不可分割的重要组成部分。而高等院校作为为社会培养人才的单位,对此种趋势自然不可置之不理。自20世纪七八十年代以来,各高校开始开设大学计算机基础课程,旨在培养学生的计算机相关能力,为社会培养更加适合时代发展的人才。进入21世纪之后,信息技术日新月异,突飞猛进,而各高校的大学计算机基础课程的教学目标已经不局限于帮助学生积累计算机的相关知识,培养学生的一般应用操作能力,还包括对学生计算思维和动手实践能力的培养。2016年出版的《大学计算机基础课程基本要求》也提道:“在各个具体课程的教学组织过程中,应重视课程实践项目的设计,将课程内容恰当地融入所涉及的项目当中。”[1]为此,各高校也开设了多种计算机实践课程与项目,旨在巩固学生所学的知识,培养学生的计算思维,进一步提升学生的动手实践能力。而“高级程序语言”课程设计便是其中之一,“‘高级程序语言课程的学习主要是计算思维及软件工程思维的建立,学生能力高低主要体现在计算机求解问题方面”[2]。

“高级程序语言”课程设计的开展步骤为:教师提供选题—学生选题—学生分组或独立完成—教师评分。这种传统的课程设计开展模式不仅缺乏师生之间的有效互动,难以形成公平合理的奖惩评分机制,而学生团队中也难以进行有效的分工协作。为了提升该课程的教学效率,让学生能在此过程中更好地培养软件开发实践能力和团队协作能力,课程开展模式急需改进。

软件项目托管平台Github诞生于2008年,现已在软件开发领域中得到广泛应用。将Github开发平台应用于“高级程序语言”课程设计中可以有效解决传统课程开展模式存在的问题,进一步提升该课程的教学效率。本文将通过实例讲解Github开发平台在“高级程序语言”课程设计中的应用与优点,并与传统的课程设计开展模式进行比较。

二、在“高级程序语言”课程设计的传统模式中存在的问题

“高级程序语言”课程设计的目标在于培养学生的动手实践能力和团队协作能力,巩固学生所学知识。近年来,随着信息技术的发展,各高校计算机基础课程的软件和硬件环境也得到了极大的改善。然而,与之形成鲜明对比的是部分计算机基础课程依然沿用传统的教学模式,而实践证明传统的教学模式难以实现教学目的,容易出现事倍功半的现象,无法取得理想的教学效果。以“高级程序语言”课程设计为例,采取传统的课程开展模式存在以下几方面问题。

第一,教师对学生的学习过程和软件设计过程缺乏监控。按照该课程的传统模式,一般由教师提供选题,学生选题之后独立或分组完成。尽管在学生进行课程软件设计的过程中,教师会与学生进行交流,但是学生在此过程中所做的工作依然缺乏监督,对学生每日完成的工作缺乏精准的把握。而师生之间也缺乏有效交流,教师无法及时指出学生在设计中的纰漏。

第二,学生团队中难以形成有效的分工与协作。学生分组完成课程设计旨在培养学生的团队精神,然而,如果按照传统模式开展高级程序语言课程设计,学生团队容易出现各成员缺乏协作、分工不合理、时间安排不合理、重复劳动或者某些任务无人问津等现象。而组员之间有时也缺乏及时有效的沟通,培养团队精神的目的自然也难以实现。

第三,难以形成公平合理的评分机制,无法区分团队表现与个人贡献。如果“高级程序语言”课程设计以学生团队方式进行,不仅容易出现上述问题,还会出现能者多劳而能力较差者少劳甚至不劳而获的现象。按照该课程的传统模式,学生团队设计完成后将成果交由教师进行评分。而面对团队的集体成果,教师难以定义每个成员的贡献,只能按照最终成果给每个成员打个平均分,致使某些贡献大的成員积极性大受打击,而贡献少甚至没有贡献的成员却可以坐享其成。现在一些教师也发现了这一问题,采取让每个小组成员注明自己所写代码和所完成模块的方式,以求给各小组成员更为合理的分数。然而,这一自述贡献的方式也存在不足之处,有时甚至会引发小组内部的争端。

第四,学生的课程设计过程难以记录和保存,无法为将来的教学实践及软件开发实践提供实例,积累经验。在“高级程序语言”课程设计中,学生最后交到教师手中的通常是“成品”,而学生的课程设计过程却无法记录和保存,教师也无法根据学生交来的成果反推学生在设计过程中的想法及逻辑,难以有针对性地培养学生的计算思维。而对于未来的教学实践而言,由于缺乏设计过程的记录,这些成品也只能成为参照,无法发挥更大的效力。

三、Github开发平台在“高级程序语言”课程设计中的应用实例及优点

Git是开源的分布式版本控制系统,可以快速高效地对软件开发项目进行版本管理。而诞生于2008年的Github“是为开发者提供Git仓库的托管服务,这是一个让开发者与朋友、同事、同学及陌生人共享代码的完美场所”[3]。除了仓库托管服务之外,Github还具有Pull Request(拉拽请求)和留言评论等多种功能,让程序员得以进行有效的交流与合作,实现高效的社会化编程。下文将以一个实例简单描述Github在“高级程序语言”课程设计中的应用。

第一,教师登录Github网站,以发起者的身份布置任务,创建一个新的仓库(create New Repository)。该任务为设计一个文件管理软件,开始时间为8月16日,截止时间为8月31日。在布置任务时可简要说明任务要求,之后把链接发给学生(如图1)。

第二,必须完成该课题的是一个由3个学生组成的小组,其中包括学生A(用户名johnliu20)、学生B(用户名Bessie2018)和学生C(用户名MrWho17)。学生登录Github网站,用电子邮箱注册账号,登录后输入链接即可看到所需完成的课题。

第三,学生可以在本地电脑编写代码,之后上传到Github网站,通过Propose Pull Request向项目发起者(教师)提出申请合并,同时学生可以使用留言评论功能,说明自己编写这段代码所要实现的目的,并与教师进行沟通(如图2)。

第四,教师点击merge pull request按钮,将学生所写的代码纳入整个项目之中。在此之前教师可将代码拿到本地开发环境中进行检查,还可以通过留言评论功能向学生提出修改意见和建议(如图3)。

第五,课题结束之后,教师可以进入课题所在的Repository,点击顶部菜单栏中的insight>contributors,查看小组中每一位学生提交的代码、代码行数及提交时间。

如图4所示,学生A提交代码4次共计678行,且提交时间都集中于中前段;学生B提交代码1次共计187行,提交时间为布置课题后约1周;学生C提交代码1次共计115行,提交时间为课题截止前两天。除此之外,还可以点击每张图表中的commit/commits,查看每个学生所写的代码。教师可以根据学生提交的代码质量,结合上述信息,有效区分小组总体表现和个人贡献,给出更为合理、公平的分数。

通过这个实例,可以看到将Github应用于“高级程序语言”课程设计有以下优点:一是学生在propose pull request,以及教师在merge pull request的时候可以通过留言评论形式进行交流,即使没有登录Github网站,留言也会在同一时间以邮件方式发送到注册账号的电子邮箱中。这一功能可以让教师对学生的代码编写过程进行有效监督,如有错误还可以及时指正。二是团队成员可以通过@某个用户的方式与某位成员进行交流,有助于团队成员之间的集思广益、分工协作,以及互相监督。三是课题完成之后教师可以通过insight>contributors查看每位组员提交的代码及提交时间,有利于形成公平、合理的奖惩机制和评分体系,小组各成员的表现和贡献一目了然,有助于区分团队表现和个人贡献。四是通过Github完成的课程设计可以永久保存,为将来的教学实践和软件开发实践提供实例和经验。五是学生在使用Github的过程中还可以与世界各地的程序员进行交流,查看其他公开的软件开发项目,有助于开阔眼界和思路,提升自己的编程能力。

四、结语

开发平台Github已经在编程和软件开发领域得到了广泛应用,而“依托Github开源协同開发平台的实验教学方案,既能够满足面向程序类设计课程的实验教学要求,也能让学生在学校教学活动中体验行业中实际应用的开发环境”[4]。将这一平台应用于程序设计课程实践中,可以加强教师对学生设计过程的监控,形成更为合理的评分体系,提升学生的参与度,形成一种全新的实验教学模式。Github开发平台为程序设计类实验课程提供了一条新思路,是一个值得探索的新领域。

参考文献

[1]教育部高等学校大学计算机课程教学指导委员会.大学计算机基础课程教学基本要求[M].北京:高等教育出版社,2016.

[2]滕薇.工程认证背景下“高级语言程序设计”实验课程教学改革探索[J].科技与创新,2020(9):58-59.

[3][日]大塚弘记.Github入门与实践[M].北京:人民邮电出版社,2015.

[4]曾少宁.基于Github平台的协同式实验教学方法[J].计算机教育,2016(12):144-148.

Discussion on the Application of Github in the Course Design of Advanced Programming Language

XIE Jie-hua

(School of Electrical Engineering, Guangxi University, Nanning, Guangxi 530004, China)

Abstract: In order to adapt to the development of information technology, colleges and universities have set up many kinds of computer courses to cultivate talents. Advanced Programming Language, as a computer practice course, aims to consolidate the knowledge learned by students and cultivate students practical ability. This paper analyzes the deficiencies in the traditional model of  the course, and puts forward the suggestion of applying Github, a software project hosting platform, to the course design. It also gives a brief description of the application of Github in the course design by examples, and analyzes the advantages of this new model.

Key words: Advanced Programming Language; Github; software project hosting platform