独立学院软件开发类课程教学策略探讨

2022-03-23 07:12谭荣丽
山西青年 2022年4期
关键词:课程设计编程知识点

谭荣丽 吴 昊 黄 驰

南宁师范大学师园学院,广西 南宁 530226

随着互联网的飞速发展,我国对软件开发人才需求量巨大,但是软件开发专业人员专业技能高低不一、参差不齐是目前的普遍现状,严重地制约了我国计算机软件开发行业的发展。[1]独立学院计算机及其相关专业的学生就业情况并不理想,由于生源的差异,完全采用一般本科院校计算机专业的本科培养方案难以达到企业对计算机学生的软件开发能力的要求[2]。本文对应用型本科独立学院的软件开发类课程分析了教学中存在的问题及原因,并对软件开发类课程的教学模式进行探讨。

一、存在的问题及原因

(一)学生编程基础差、效率低

许多学生编写的程序存在逻辑结构混乱、可读性差、执行效率低等问题,这些问题在后期相应的课程设计和毕业设计中表现尤为突出。学生编程基础差,其主要原因在于:

1.独立学院学生的特性对学习的影响

学生编程能力是在程序设计、数据结构等课程学习中逐步建立起来的,作为教学体系中专业核心基础课程,要求学生在大一学年掌握一般程序设计的流程、方法和思想。然而,独立学院学生的学习主动性和自觉性较差、学习热情度不高、接受新事物的能力差、缺乏克服困难的毅力等特点[3]会影响学习的效果。许多学生在初学程序设计课程时还没有适应大学学习的节奏、对编程知识掌握的速度较慢,因而大部分学生很难与老师的教学计划同步;同时许多学生遇到问题时往往是放任不管、等待老师解决,而不是主动查资料解决。

2.缺少调试和修改错误的经验及能力

许多学生对数据结构和算法的理解尚不到位,书写的代码逻辑不清晰、结构混乱,因而导致程序的阅读和修改十分困难。同时,由于在学习程序设计初期学生在调试修改程序时过多依赖老师的指导,同时由于有限的课时导致任课老师减少了对学生进行相应的培训,部分学生在大二时依然不会通过提示信息来修改错误,面对程序中的逻辑错误更是无从下手。这就导致多数学生在开发测试程序时面对出现的错误时往往不知道如何处理,同时对如何查找和修改错误缺乏探索解决问题的毅力和信心。

(二)基础知识掌握不到位,知识运用能力不强

许多学生在软件开发过程中,不知道应用前沿课程的知识来实现具体的功能,同时由于对基础知识的理解和掌握不到位,在应用过程中也会出现各种问题。在教学过程中,大部分独立学院的教师都会发现许多学生对课程的前沿知识不会应用甚至不熟悉,那么相关课程的教师为了保证教学的正常进行会利用部分课时为学生补充复习相关的知识,从而导致教师没有更多的课时对课程综合知识的应用做更深入的教学。在后续的软件开发的课程中往往要求学生熟练掌握对前沿综合知识的应用,那相应的任课教师也可能会利用一部分课时补充相关的内容,进而后续一些综合应用性较强的软件开发类的课程时不能展开深入的教学,这就形成了一种非良性的效应。同时,由于传统的教学中重视知识点的讲解,而忽视了培养学生对软件开发的整体认识,因而在软件开发类课程的教学课程设计环节中,大部分学生在面对项目时都不知道该如何开始、具体怎么做。[4]

例如,南宁师范大学师园学院计算机专业开设的软件开发前沿课程主要有计算机导论、高级语言程序设计、面向对象程序设计、网页设计、数据库原理、数据结构、操作系统、计算机网络等,而后续开设的软件开发课程主要有动态网页设计、JAVA程序设计、Web数据库程序设计、APP软件开发、软件工程等。一方面,由于这些课程在不同的学期由不同的教师授课,这就可能会导致在课程教学过程中出现内容重复、软件开发必须掌握的内容没有涉及或简要介绍,因而学生会将这一系列课程简单地作为单独的几门课程对待,不仅无法掌握好各门基础课程,更没有形成一个完整的知识体系,直接影响到后续的软件开发课程的教学。另一方面,课程设计作为综合性实践教学环节,涉及了课程主要内容的综合性、应用性的实践教学,通过课程设计不仅可以检验学生对知识的掌握程度,更是培养学生对知识的综合应用、提高学生软件开发技能最有效的方式。然而,许多前期基础课程往往对课程设计重视不够,只有在软件开发类课程中的综合课程设计时才发现前期课程中知识掌握的不足。

二、教学对策与实践

(一)提升学生的编程能力,注重培养学生的编程思想

编程基础是培养软件开发能力的重要因素,编程能力需要在前期的程序设计课程中通过连续系统化的教学来培养。针对目前存在的问题,在教学过程中主要采取以下的措施:

1.加强实验课程的指导

在指导过程中了解学生对知识点的应用情况,及时纠正每个同学编程的程序中存在的各种思维错误。例如,在C语言程序设计中,许多学生会编写一些无效的、但却没有语法错误的语句,如一部分同学经常定义一些没有使用的变量,那么这时候就需要老师明确地告诉学生为什么编写的语句无用,编写每一行的语句的作用是什么,提高学生编程的可读性。

2.定期开展调试改错指导

学生调试和修改错误的能力需要一个长期积累的过程,而这一个过程中许多独立院校的学生不能独立的完成,那么这时候则需要老师的干预和指导。例如,老师在实验指导课程中,通过发现、分类、总结学生编程中经常出现的错误,定期开展错误和调试的课堂教学,利用学生已经出现问题作为案例来讲解指导学生如何阅读错误提示信息、如何根据提示信息进行相应的修改;同时通过相关的典型案例指导学生如何利用调试工具、添加和注释语句来提高学生修改错误的能力。

3.帮助学生建立编程思想

计算机编程的核心在于编程思想,在程序设计类的课程中帮助学生建立一定的编程思想,触类旁通而不是局限于特定的编程技术。例如,在面向对象程序语言课程设计部分的指导过程中引入算法的思想,在解决实际问题中分析程序,引导学生编写高质量的程序,为今后学习不断更新的软件开发技术做好充分的准备。

(二)调整前沿基础课程教学计划、教学大纲,注重基础课程的综合性实践教学环节

为了改善学生由于前沿知识掌握不到位、知识运用能力不强等问题,保障软件开发基础知识的教学更加全面、完善、实用;我们将相关课程进行整合,突出软件开发的教学内容,修订相应的教学大纲和教学计划,在前期的基础课程中加入相应的课程设计,并将后续软件开发中所要用到的知识点作为其中的考核点,使前沿课程的教学更好地衔接后续的软件开发课程,同时加强对课程设计的指导,为软件开发课程打好坚实的基础、提高学生对知识的应用能力。

以动态网页设计这门课程为例,针对具体的科目可以调整相应的教学计划和教学大纲,在软件开发类的前沿课程中设置相应的一些实用综合性的课程设计,同时需要相应的任课老师相互交流设置相应的教学内容,具体的措施有:第一,将动态网页设计课程设计中的页面设计部分、数据库设计和操作部分作为网页设计及数据库原理课程教学中的综合案例或课程设计的内容;第二,后续相关课程的任课老师可以将学生在编程部分、数据库操作部分常见的错误反馈给前沿课程的教师,可以将这些知识作为教学内容重点讲解,这样既可以提高学生的学习兴趣也更有利于后续教学的开展;第三,在做好一定前期准备后,在后续的动态网页设计课程中,针对这部分知识点任课老师只需要帮助学生进行简单的回顾复习或花较少的课时讲解相关的内容。

(三)基于微课的翻转课堂与传统课堂相结合

1.翻转课堂与微课

翻转课堂是指重新调整课堂内外的时间,将学习的决定权从教师转移给学生。在这种教学模式下,课程知识信息需要学生在课前完成自主学习,教师不再占用课堂的时间讲授,而课堂变成了老师学员之间和学员与学员之间互动的场所,包括答疑解惑、知识的运用等,从而达到更好的教育效果[5]。翻转课堂需要网络环境和数字化学习资源和平台的支撑,互联网尤其是移动互联网的普及催生了“翻转课堂式”教学模式。目前许多高校建设有自己的教学网站,也有开放的网络平台,如中国大学MOOC、云班课等;而大部分高校学生可以课前通过手机、计算机在相应的网络教学平台上学习微课。[6]“微课”是指按照新课程标准及教学实践要求,以视频为主要载体,记录教师在课堂内外教育教学过程中围绕某个知识点(重点难点疑点)或教学环节而开展的精彩教与学活动全过程[7]。

2.微课在教学应用中存在的问题及解决措施

在各种教学方式和教学方法中摸索一种解决学生听课效率低、互动性差的教学模式,一直以来都是独立学院教师在教学过程中面临的问题。微课作为课程的片段化的视频,学生可以不限时间和地点地根据自身的实际情况网上学习,同时学生可以针对某个知识点反复观看,这能够有效地解决学生听课效率不高的问题。然而,采用微课的翻转课堂需要学生具备较好的自觉性才能保障教学的顺利进行,但是实际情况是独立学院大部分的学生自觉性、主动性较差,能够按照教学进度学习微课的学生不多,这种情况在疫情防控期间开展的线上教学尤为明显。目前许多高校采用的直播或微课等形式开展线上教学,由于几乎没有什么线下的教学活动,此时线上学习的问题也比平常更加突出。许多学生无法在规定的时间里完成学习任务,甚至部分同学只是应付式刷完微课视频,这就导致最终的教学效果两极分化特别严重:一部分同学不仅能够如期地完成任务,且学习效果非常好;而有一小部分同学依然习惯于传统的课堂教学,需要老师督促,这部分同学学习效果非常不理想[8]。为了更好地发挥微课优势,同时解决微课在教学中存在的问题,我们采用基于微课的翻转课堂与传统课堂相结合的方式引入软件开发类课程的教学中。

3.教学实践

以ASP.NET这门课程中的ADO.NET访问数据库为例,这部分知识点是该课程中的重点和难点,其中GirdView、DataList数据绑定控件这个章节的内容包括了控件设计和编程实现具体功能两部分,在传统的课堂教学中无论是设计还是编程部分都需要学生高度集中注意力,学习难度较大。因而,这部分的知识点非常适合采用微课教学。

知识点微课视频控件设计 编程GirdView列设置、分页设置 绑定数据、实现分页设置编辑、更新、取消按钮,模板列设置 实现编辑、更新、取消编辑模板列设置 绑定数据、更新保存高亮显示数据排序设置、实现数据排序设置及实现全选、全不选功能模板设置 绑定显示数据SelectedItemTemplate模板设计 实现查看详细信息EditTemplate模板设计 实现编辑操作ItemTemplate模板设计 分页绑定ItemTemplate模板设计删除功能 实现单条、批量数据删除DataList

(1)微课设计。由于一些案例的教学时间较长,同时也为了方便学生后期操作练习,因而将这部分案例微课分为控件设计和编程两部分。这两个数据绑定控件中的第一个案例包含了控件最基本的设置操作和访问数据库的基本流程,是所有案例的基础。为了减少知识点的重复教学,后续的案例尽量在前一案例的基础上操作和讲解。

(2)微课与传统课堂的结合。在微课制作好以后,我们借助云班课平台进行发布任务开展翻转课堂,但考虑学生的特点,在具体的实施过程中额外采取其他措施:

①教师要在平台上了解学生学习进度,针对一些进度缓慢的同学进行适当的提示。由于大部分的学生自觉性较差,不能完全放任学生自主学习,教师要全程主动地了解学生学习情况,早发现早干预,从而能够尽量保障大部分同学在规定时间内完成学习任务,避免对影响后续章节的学习。例如,在这些微课视频中第一个案例最为重要,因此在课堂上和平台上都会强调相关视频的重要性,并要求学生务必在上课前完成。为了避免部分学生应付式刷完微课视频,在课堂教学前由各班学习委员匿名收集学习情况,包括是否已经学过、对视频中哪部分有疑问等等问题,这样能够有效地收集到比平台更真实的数据。

②突出重点内容,与传统的课堂教学相结合。例如,在收集的数据中对于特别重要的知识点,若有超过40%的学生反馈还未学或依然没有掌握的情况,则将这部分内容进行课堂教学。采取这种方式的主要原因在于,部分学生不适应翻转教堂的微课教学,比较依赖传统教学;此外也是为了保证还未学的同学能够通过课堂教学掌握基本的内容,课后再通过微课补充学习,从而尽量保障大部分学生能够紧跟教学的进度。

③在课程教学正式开始前,通过调查问卷的方式了解学生对前沿课程知识的掌握程度,针对相关的知识制作相应的微课,这样可以弥补部分同学对基础较差的不足;针对另一部分学习能力较好的同学,可以额外利用微课扩展难度较大的课外新知识;同时也可以采用微课将最新的技术带入相应课程的教学中,避免占用过多基础知识的教学。

(3)教学实施结果。采用微课的翻转课堂在教学实施阶段,我们主要应用于在计算机科学与技术专业2017级、2018级两届的学生,我们采用调查问卷的方式收集学生对于微课教学的评价。首先是2017级毕业班的学生:58.54%的同学认为比传统教学方式要好;85.37%的同学认可对课程设计是有帮助的;78.05%的同学认为对毕业设计有一定的积极影响;87.8%的同学认为对在职业岗位上学习新的知识有帮助。其次是2018级的学生:97.5%的同学认为微课对学习有一定的帮助,其中30%认为对其学习效果很好;小部分同学反映不适应线上学习、注意力不集中、自主学习能力不够等问题,更希望老师采用常规的课堂教学、微课作为后续的课后辅助学习。

从问卷调查结果我们可以看出:利用微课实现翻转课堂,不仅可以提高软件开发类课程教学的效果,对学生走上工作岗位学习新知识起到一定的积极作用;同时,由于部分课程采用了微课,学生需要一个适应过程,需要适当地将传统的课堂教学相融合。

三、结语

软件开发是独立学院计算机科学与技术专业一个重要的培养目标,而软件开发类课程包含了一系列相关课程,这些课程的教学需要任课老师针对其课程定位和学生的特性寻找合适的教学方法,同时能够将基于微课的翻转课堂与传统课堂相结合的教学模式合理地应用于软件开发类课程的教学中,培养学生学习的兴趣、自主的学习能力、为今后在工作岗位适应不断推陈出新的知识和技术。

猜你喜欢
课程设计编程知识点
第十二页 知识点 静候“18”
“苏州园林:景致与情思”课程设计
第十页 知识点 教-8教练机
关于口罩 这10大知识点你必须知道
第九页 知识点 QSZ92式半自动手枪
沉睡数千年 一醒惊天下——三星堆考古启示下的儿童美术项目化课程设计
元征X-431实测:奔驰发动机编程
元征X-431 PADⅢ实测:斯巴鲁森林人(FORESTER)在线编程
纺织机上诞生的编程
学编程,先画画