APP下载

以学科竞赛为纽带建设程序设计课程群

2013-12-29王从银

电脑知识与技术 2013年16期

摘要:对于以培养基本程序设计能力为目标的程序设计课程群的建设工作,核心问题是把多门课程整合成有机的整体。在分析程序设计课程群建设面临的主要困难的基础上,提出一种以学科竞赛为纽带的程序设计课程群建设模式,从而保证教学过程中能保持整体连贯性,避免多门课程教学间的衔接不畅。

关键词:学科竞赛;程序设计;课程群

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2013)16-3784-02

培养学生的程序设计能力是高校计算机专业的人才培养目标之一,是为软件产业培养大量的急需人才的必然要求[1],也是检验计算机类毕业生质量的标准之一[2]。然而,计算思维与人类思维的显著差别使得学生程序设计能力的培养成为一个长期艰苦的过程[3]。同时,学生个体对于计算思维的接受能力也有着巨大差异,这更加重了程序设计相关课程的教学难度。围绕程序设计能力培养这个目标,建设程序设计课程群已经成为很多高校计算机专业建设的新举措。针对程序设计课程群建设过程中遇到的主要困难,并提出一种以学科竞赛为纽带的程序设计课程群建设模式。

1 程序设计课程群建设现状

课程群是为完善同一施教对象的认知结构,而将本专业或跨专业培养方案中若干门在知识、方法、问题等方面有逻辑联系的课程加以整合而成的系列课程[4]。多门课程整合为一个课程群,自成体系且服务于一个教学目标,同时,课程群建设介于课程建设与专业建设之间,既需要对多门课程统筹安排,又要考虑管理层次的粒度。因而,程序设计课程群以培养学生程序设计基础能力为目标,致力于把高级语言程序设计、数据结构和算法设计与分析整合成一个整体,建立灵活的管理机制,探索高效的教学模式,而另设软件开发课程群整合与软件开发相关的课程。

课程群建设应当注重课程的知识重组,知识融合,是对单独课程的教学大纲、实验大纲等教学内容的重新设计[5]。高校在程序设计课程群建设初期,需要对所有课程的知识点进行了梳理,并按照层次和先后关系建立知识点关系网络,然后对各门课程要讲授的内容、进度计划进行了统一规划。在实践教学方面,依据课堂授课内容的进度计划重新组织实验项目,合理安排验证性、设计性和综合性实验项目,并且安排了C语言课程设计和数据结构课程设计,通过完成难度和设计要求均略高于实验项目的集中实践训练达到融汇所学知识和技能的目的。另外,配合学校大学生程序设计大赛,组织了程序设计竞赛工作组指导学生在课余时间通过JudgeOnLine平台进行训练。从而,形成了课堂讲解、实验指导和自主训练三条线共同作用的程序设计能力培养体系,并取得了显著成效。

2 程序设计课程群建设中的主要困难

做出全面而系统的课程群建设规划之后,在实施过程中仍然感觉到运转不够灵便。通过各科任课教师和项目组成员讨论,发现主要困难有以下几个方面:

2.1 课程进度难以保障

计算思维的培养对于不同的学生而言难度不同。尤其是在入门阶段相当多的学生困难重重,跨不过第一道门槛的学生大多对计算机专业知识的学习失去了信心。所以,应该由学生的整体学习进度确定课程教学进度,但是,这样一来规划好的课程进度计划就难以得到保障。随着进度计划的一次次被动调整,授课老师们慢慢地不知不觉地失去对整个教学计划的掌控。鉴于大多数高校的计算机专业的教师是授课经验相对不足的青年教师,如果学校教务部门定期或者不定期地进行教学检查,把教学进度是否符合计划作为一项重要内容,老师们常常被迫为了赶计划而放弃对教学质量的追求。因此,建立一种支持课程进度灵活变化的机制是至关重要的。

2.2 课堂讲解、实验指导和自主训练三条线配合不畅

为了保持课堂讲解与实验指导的连贯性,通常安排授课老师同时兼任实验课指导老师。但是,在实验课上指导老师忙于解答学生们的疑问,实验课后只能根据印象找到一些典型问题在随后的课堂上予以解析。然而,这些典型问题的代表性是不确定的。因为实验课上提问的主要是学习积极性高的那部分学生,不足以代表全班整体情况。更为糟糕的是,那些在困难面前渐渐退缩的学生成了沉默的一族,他们的状况难以得到显现。另外,借助学科竞赛支持学生在课外进行程序设计自主训练的工作跟课堂讲解和实验指导更是很难有直接的相互影响。高校支持的与程序设计能力培养直接相关的学科竞赛主要有:ACM国际大学生程序设计竞赛、省大学生计算机程序设计竞赛(程序设计类)以及校级大学生程序设计竞赛。事实上,这些赛事的竞赛方式基本是一样的,因此,高校建立了程序设计竞赛工作组,主要负责这些赛事的前期准备工作。工作组的主要精力在于引导学生参加课余自主训练,提供学习指导,赛事准备等工作,但是这些工作没有跟课内工作融合成有机整体。

2.3 课程间的衔接工作困难重重

因为课程进度难以与教学计划保持一致,在制定教学计划时安排好的课程衔接已经失去意义,必须在每次课程结束后重新研究课程衔接问题,而这又需要准确评估学生对于已经讲授的知识点的掌握程度。这项工作不仅繁重,而且在授课过程当中,对于整体进度的控制薄弱导致学生对于知识点的掌握差异太大,课程衔接问题就成了难题。

3 以学科竞赛为纽带的课程群建设模式

为了应对程序设计课程群建设中面临的困难,需要一种新的跨越课程的建设模式。它应该能够迅速反映学生的整体学习进度,并能据以对教学内容做出灵活调整,把课堂讲解、实验指导和自主训练三条线打造成互动运转的一根轴线,实现课程间的无缝衔接。借助于学科竞赛工作与程序设计课程群工作的直接相关关系,才得以提出以学科竞赛作为纽带的程序设计课程群建设模式,该模式能够有效利用前期工作成果。

以学科竞赛作为纽带的程序设计课程群建设模式以静态的知识点关系体系为基础,依靠例题、习题、实验项目和自主训练题目四个资源库,依据JudgeOnLine平台反映的学生学习进度,在教学过程中动态调整课堂授课、作业习题、实验项目和自主训练内容。

知识点间的关系有两种:层次关系和依赖关系。比如,格式化输入知识点包括整数输入、浮点数输入、双精度数输入、字符输入、字符串输入等子知识点。比如,简单程序结构知识点依赖程序入口main函数、printf函数、字符串、函数定义和函数调用等知识点。当一个知识点依赖的知识点过多时,可以把部分知识点整合成一个新的知识点,然后利用层次关系简化知识点的依赖关系的描述。

例题包括说明性例题和实例性例题两种类型,说明性的例题用于解说某个语法知识,而实例性例题是解决某个实际问题。说明性例题必须注明要解说的那个知识点,实例性例题必须注明要用到的所有知识点(尽量使用高层次的知识点)。实例性例题需要对题目背景加以说明,这不仅让学生理解程序的目标,也是使得枯燥的课程带有趣味性,并具有更强的实用性。但是由于课堂时间有限,不宜花费过多时间在题目背景描述上,所有的实例性例题最好选择在有限几个涉及知识面较广的背景下,每次选择其中一个问题。这样做的一个好处是后一个例题可能能用到前一个例题的程序中的部分代码,从而进一步提高课堂效率。而说明性例题可以借用实例性例题中提到的某个概念作为背景,这要好于干巴巴的语法知识说明,有利于激发学生的积极性和热情。

习题主要针对知识点的理解和使用来设置的,相当于让学生完成一些说明性例题。主要题型是选择题、改错题和程序填空题。这些题目的答题正确与否都可以用软件系统来检验。从而节约了老师批改作业的时间。

实验项目是为了锻炼学生运用所学知识解决实际问题而设置的,需要用到的知识点应该是最新学习的知识点和部分以前学习的知识点。实验项目的背景可以来自生活的各个方面。实验项目不宜过于复杂,以中等水平的学生可以在1个小时以内完成为宜。如果题目比较繁琐,可以提供部分代码从而减少工作量。学生的学习兴趣是通过一个个成功后获得的成就感培养起来的,一个难以完成的实验项目对于学生的积极性的打击是无法估量的。实验项目可以在JudgeOnLine平台上完成,以注释的形式随同程序代码提交设计说明,以替代实验报告。

自主训练题目的难度要稍高于实验项目。必要的时候,随同题目说明提供关于解题所要用到的知识的提示。这一类的题目的难度要低于常见的程序设计竞赛练习题,需要组织力量重新设计一批题目,或者降低原有题目的难度。

以学科竞赛作为纽带的程序设计课程群建设模式的运行过程是一个螺旋式前进的过程。每个周期包括备课、课堂讲授、课后习题、实验、课余自主训练四个部分。备课工作是以上一个周期中JudgeOnLine平台中记录的实验和自主训练的情况为依据,确定下一次课要讲解的知识点(包括要重复讲解的知识点),选择例题、习题、实验项目和自主训练题目,设计授课流程。有了前面已经建设好的教学资源的帮助,老师备课时可以把更多的时间和精力用于课程进度的控制上,使之既能符合学生的学习进度也尽量跟上课程进度计划。当出现课程进度被学生整体学习进度严重拖后的情况,可以报请教研室采取处理措施。比如,安排教师利用周末时间给进展缓慢的部分学生做特别训练。如果授课老师在备课时发现准备好的教学资源有所不足时,可以报请教研室以组织力量根据新的需要进行补充。

4 结束语

从IT产业的发展趋势来看,高质量的软件人才是产业迅速发展的支撑,因而培养程序设计能力强的高级专业人才已经成为目前我国各类高校计算机专业的主要培养目标。程序设计课程群承担着把入门的大学生送上成长为社会经济发展迫切需要的专门人才道路的艰巨的任务。该文分析了程序设计课程群建设运行过程中面临的困难,提出了以学科竞赛为纽带进行程序设计课程群建设的工作模式。这种建设模式不仅可以使得教学工作灵活运转,还能可以借助完备的系统的教学资源减少授课教师用于设计例题、习题等组成教学内容的基本要素的精力,使得他们能更好地进行授课内容的组织工作,更多地关注教学进度与学生学习进度的协调。为了完善程序设计课程群的建设工作,下一步要进行的研究包括1)把高级语言课程设计和数据结构课程设计与程序设计课程群的日常教学工作揉合成更加顺畅的整体;2)按照程序设计能力培养目标的高低进行分级,以适应学生素质的差异。

参考文献:

[1] 李晓明. 关于计算机人才需求的调研报告[J]. 计算机教育,2004(8).

[2] 周荣辉,郝晓枫,赵宏宇. 学生程序设计能力培养的思考[J]. 吉林大学学报:信息科学版,2005(8).

[3] 吴绍兵. 计算思维和程序设计能力的培养[J]. 计算机教育,2011(16).

[4] 李慧仙.高校课程群三论[J]. 煤炭高等教育,2006(7).

[5] 翁伟. 程序设计课程群建设探索与实践[J]. 计算机教育,2009(23).