摘要:大数据时代,“计算机科学与技术”专业“专升本”学生的程序设计能力的提升尤为重要。本文主要针对“计算机科学与技术”专业“专升本”学生专业知识基础两极分化严重的问题,以语言程序设计类课程为例,根据语言输入与输出理论采用分级教学模式,探索语言程序类课程的分级课程教学、分级课程设置以及具体可行的实施路径,再以《高级语言程序设计》和《数据结构》两门课程的融合分级教学策略,辅助计算机软考、程序设计竞赛等课外学习,进一步提高“专升本”学生的程序设计能力,提升学生的就业和升学竞争力。
关键词:大数据时代,专升本;程序设计;分级教学;计算机软考;竞赛
大数据时代为适应产业升级和经济结构调整对技术技能人才越来越紧迫的需求,国家将高职教育发展作为战略实施,希望通过发展高职教育缓解当前就业压力、解决高技能人才短缺。高职招生规模的扩大势必会造成“专升本”生源的多样性和规模的扩大,然而,现有的本科教育教学体制,很少有研究专门针对“专升本”学生的教育教学方针,使得现有本科教育和“专升本”教育存在脱节或者继续教育衔接不够紧密的特点,造成“专升本”学生在本科阶段的学习具有获得感、成就感不足的现象。因此,本文以语言程序设计类课程教学为例,研究更加精准有针对性的“专升本”本科教育教学模式。
由于程序设计类课程是一门特殊的语言,是人与机器交流的语言,我们希望利用语言学习的规律和特点,基于语言学家Krashen提出的语言输入与输出理论,设计针对性的“专升本”学生的,分级《高级语言程序设计》教育教学模式。Krashen指出:“语言输入如果太容易,就无法起到激发学习者兴趣和动机的作用。语言输入如果太难,则会让学习者失去兴趣”。因此,其将学习者的当前语言知识状态定义为“i”,其下一个语言知识状态定义为“i+1”,并指出只有当学习者当前学习的语言知识属于“i+1”的等级,才能起到对学习者语言发展的推动用。因此,我们将此作为分级教学的理论基础,在教学过程的设计和实施中,基于对学生当前语言知识状态的充分了解,设计处于“i+1”等级的课程学习资料,使学生学习兴趣和课堂参与度地到最大化的调动。
一、分级教育教学模式
(一)课程分级策略设计
制定多门程序设计类课程动态联动的课程分级策略,使学生在程序类课程的学习中,已具备课程需要掌握的前导知识和应具备实践能力,做到前后课程的无缝衔接,从而获得可持续的发展。具体的实施路径为,为了克服程序设计类课程的学习存在理论知识和实践能力脱节的问题,设计合理的课程体系和进度,将程序设计类课程分别从理论和实践两个维度,按纵向划分为基础、综合、提高三个等级。其中,基础课程,主要针对基础薄弱的学生,重点讲授语法基础知识,初步锻炼学生的编程能力,使学生克服编程的畏难情绪,为下一步的学习打下基础,建立信心。综合课程,主要针对有一定编程基础的学生,重点讲授结构和算法,建立程序设计的思想,锻炼学习解决常见的编程问题的能力。提高课程:主要针对已具备较强编程能力学生,使学生接触设计模式等高阶课程,并结合企业实际项目需求,使学生具备解决复杂问题,设计并完成项目模块的能力。对每个等级的课程在划分为初级、中级和高级三个层次,以实现针对不同基础的学生的精准授课,同时提高学生程序设计类课程的理论水平和实践能力。
(二)班级分级策略设计
设计精准和动态的分级教学分班策略。学生在入学时,可按照个人意愿选择性地参与不同等级的程序设计类课程的理论基础和实践测试,然后在入学培训时,由各课程的专业教师,对课程的主要内容和学习目标进行介绍。最后,结合学生的个人意愿和该分级的理论和实践测试结果,进行分班。使得班级内学习在进行该门课程的学习时,已具备第“i”级的前导知识,希望继续进行第“i+1”级课程的学习。因此,通过该精准的分班策略,学生对该门课程的学习更有自主感和成就感,老师对教学的内容也更有针对性,克服了填鸭式教学的缺陷。另外,在具体的教学实践中,采取浮动的调整策略,根据课程考核结果和学生的意愿,可以对学生的进行动态调整。
(三)考核分级策略设计
建构与分级动态教学相适应的形成性评估和终结性评估相结合的多元教学评价体系。首先根据分级动态教学思想和教学目标,结合学生实际学习情况,设计科学合理的高级语言程序设计分级考试题库,以真正实现对学生理论及综合实践应用能力的全方位考核和评价。另外,过程性考核方面,在课程设置上可分为理论和实践两个部分,在时间维度上可分为课前、课中、课后3个考核部分,并结合程序设计类竞赛、大创项目、分组主题报告等程序设计活动,从多个维度给出综合的过程性评价。
二、教学改革实例—以《高级语言程序设计》和《数据结构》整合分级为例
(一)《高级语言程序设计》和《数据结构》教学现状分析
在程序设计类课程中,《高级语言程序设计》是计算机科学与技术专业最重要的一门基础和核心课程,为后续进一步学习算法理论类课程,如《数据结构》、《操纵系统》,和项目实践类课程,如《面向对象程序设计设计》、《网络程序设计》打下基础。现有的《高级语言程序设计》课程体系,普遍都是讲授程序设计语言的基本语法和简单程序设计的方法。然而,“专升本”学生有的在高职阶段已经对设计语言的基本语法和程序设计设计方法进行了系统的学习,有的则在“专升本”考试时,通过自主学习,完成了部分内容的学习,学生之间的基础差异很大,甚至有部分学生完全没有基础。如果沿用传统的《高级语言程序设计》教育教学方法,教学效果不理想。
《数据结构》主要是研究数据的关系,讨论数据基于问题的逻辑结构、基于内存物理存储结构,和基于结构的数据各种操作的实现及分析。数据结构的不仅是程序设计的基础,也是设计和实现各种大型应用程序的重要基础。通过这门课程的学习,使学生通过正确分析数据的结构、并合理地选择数据的存储方式,从而在软件设计的过程中,设计出科学的操作算法,进一步提高软件整体质量,且为计算機专业考研的核心课程之一。该门课程学习的前提是,学生具备坚实的《高级语言程序设计》基础。
目前专升本学生在《高级语言程序设计》和《数据结构》两门课程的学习现状为:基础差的同学跟不上目前《高级语言程序设计》的教学进度,没有形成程序设计思想。进而,对进一步《数据结构》的学习更是觉得难上加难。基础好的同学觉得《高级语言程序设计》的内容难度已经难以满足自己对程序设计知识的渴望,难以对学习产生兴趣。久而久之,当老师教授超出其知识范围的新知识时,其也已经失去了学习的兴趣,同样使得《高级语言程序设计》的基础掌握不牢固。其次,在《高级语言程序设计》的学习中,让学生时难点并且和《数据结构》的联系最紧密的知识点是结构体、指针、字符串操作、递归、结构体指针、指针数组、函数指针等内容,然而这些内容由于较为抽象,学生难以理解和掌握,且受到课时限制,反而被老师进行了弱化。从而,进一步影响了《数据结构》的学习效果。《数据结构》作为考研必备科目,其重要性不言而喻。由于学生在对《高级语言程序》的学习中没有建立充分的程序设计思维,而《数据结构》教师在授课时,由于课程设置,默认学生已经建立程序设计思维,因此《数据结构》的学习容易形成理论知识和实践环节的鸿沟。学生虽然知道了一些结构,然而不能对其进行实际的应用,对于程序设计能力没有提升。因此,我们以这两门课程作为计算机专业专升本学生的改革试点,进行课程整合,在一起整体设计,构建《C语言程序设计》与《数据结构》的新的分级程序设计教学体系,提高程序设计教学的质量,改革教学方法,提升学生在学习中的获得感。减少课程间的鸿沟,降低学习学习的难度,实现理论可以指导实践,实践也进一步促进理论的理解和应用。从而,缓解当前专升本学习对程序设计类课程的困境,为专升本学生后续的就业和进一步深造打下基础。
(二)《高级语言程序设计》和《数据结构》整合分级教学改革
在教学改革的实践过程中,将两门课程的内容进行重新整合和划分, 将课程分为三个等级(基础、综合、提高),学生按照入学成绩、理论、实践考核以及个人意愿进行分班。基础班的授课内容主要包含基础语法、利用for循环以及嵌套循环结合一维数组、二维数组来解决常见的基础算法的设计与实现。学生要能够独立的编写并修改程序,给出一个代码,学生要能够正确分析其功能,给出一个功能和部分代码,学生要能够将代码的关键部分补充完整。为了实现这些目标,在理论上,学生必须掌握的是变量在计算机中是如何存储和修改的,数组中变量的存储形式,如何使用数组下标来操作数组,如何对输入变量和目标输出变量基于变量、数组等存储空间并结合if、for等逻辑控制的使用建立联系,得到正确的输出,并进一步,将这样的联系转换为语言的实现。在实践上,学生要熟悉编译环境的使用,能够根据工具中提供的调试工具,修改代码中错误的语法和逻辑。
综合班的授课主要包含指针、结构体、链表、队、栈、综合实验等,主要的设计思想是,通过将《高级语言程序设计》中的高阶语法和数据结构中的基本结构相结合,使学生在理解并牢固掌握了指针、结构体、链表等高阶语法的基础上,再接触数据结构中的几个简单的基本结构。这样设计的好处是,学生学习完高阶语法,立即可以将其用在基本结构的具体实现中,既练习了高阶语法的使用,又能够加深对基本结构的理解和应用,起到了相互促进的作用。克服了以前单独授课,高阶语法讲解粗略,学生难以应用,数据结构只理解基本思想,学生对复杂问题的分析难以使用结构来构建,程序设计能力的提升困难的问题。最后再通过综合程序设计大作业的完成,更进一步建立了复杂问题的程序设计能力。提高班的授课主要包含更复杂的结构及算法的讲解和学习,学习完一个结构或算法,讲解其应用,并提供实际的案例供学生学习,扩宽其眼界,为学生的就业和进一步深造打下基础和指明方向。如,在实际的教学中,在对应的结构讲解中,引入一元多项式的代数运算、迷宫问题、俄罗斯方块、约瑟夫环问题、打印机优先队列问题、社交网络问题等。这些通过利用所学的结构来解决这些实际问题,能大大提升学习对程序设计的兴趣,并且提升其设计的编程设计能力和实际的解决问题能力。另外在提高班的课程设计中,还需要特别培养学生的自学能力,通过查询资料和学习解决给定问题的能力,以及知识的总结与归纳能力,建立终身学习的思维模式。
(三)《高级语言程序设计》和《数据结构》整合分级考核改革
在《高级语言程序设计》和《数据结构》整合分级考核策略的设计中,应重点突出每个阶段课程在衔接处知识点的考核,检验学生是否达到进入下一级课程学习所具备的知识和技能。针对基础班,采取实践和理论并重的原则,既要考核学生对基础语法的掌握,也要考核学习是否具备基本的编程能力,是否能够根据书本的实际例子,编写并调试功能相近的代码。针对综合班,应考查学生应用高阶语法来实现某一结构的能力,测试学生是否能够将结构理论具像化到复杂程序的设计中去。针对高级班,应重点考查学生对高级算法的掌握和灵活应用,是否能够解决实际问题。
(四)《高级语言程序设计》和《数据结构》整合分级竞赛策略
为进一步补充课内教学的不足,增强学生的兴趣采取“以赛带练”、“以赛促学”,在程序设计竞赛的管理和组织中,设计分级比赛的策略。通过参与程序设计类竞赛,不仅学生的学习质量得到了有效地提升,同时学习质量的提高又反过来促进学生更加努力的完成程序设计任务。程序设计类的竞赛,主要有ACM-ICPC 竞赛,蓝桥杯全国软件和信息技术专业人才大赛,其组织形式,包含校赛、省赛、国家级比赛。所有的专升本学生都需要参加校赛,获取课外研学分。通过校内选拔的学生可以进行一步参加省赛,省赛和国家级赛事的筹备有专业的老师进行赛前指导。比赛成绩是学习对程序设计类课程学习情况和教师的教学质量最好的检验,可以检验学生是否形成编程思想,建立了利用计算机求解问题的逻辑思维能力。并且可以体现学生在省内高校、甚至是全国范围内处于什么等级。教师也可以进一步根据赛事情况来进一步改革教学,使得程序设计类课程教学的教学改革有了抓手。其次,比赛的组队原则为“以老带新”的梯队建设,體现了分级原则,这样不仅在参赛队伍内形成的新旧队员的更替,同时也实现了知识的分级延续。
(五)《高级语言程序设计》和《数据结构》分级教学备战计算机软件考试
计算机软件资格考试分为初级、中级、高级三个等级,取得初级资格可聘任技术员或助理工程师职务;取得中级资格可聘任工程师职务;取得高级资格,可聘任高级工程师职务。“专升本”学习在学习程序设计课程时,可以同时准备该考试,分别对应了《高级语言程序设计》和《数据结构》分级教学的三个等级。因此,教师在教学过程中,可以增加计算机软件资格考试中的真题进行讲解。计算机软件资格证书的取得是学习从事软件专业岗位工作的水平和能力的实证,可以提升学生的就业竞争力。
三、结束语
总之,针对大数据时代专升本学生程序设计能力的提升,将程序设计类课程进行分级教学,需在充分了解学生学习基础的情况下进行精准分班。并在每个等级的课程设置上要设计科学合理的教学目标,激发学生兴趣,充分从理论和实践两个方面提升学生的程序设计能力,各实现级别间的无缝衔接。最后,通过多样性的分级考核,给出综合全面的评价。
作者单位:徐艺 贵州师范学院 数学与大数据学院
参 考 文 献
[1]罗惜静.高职扩招下分层分类教育教学管理新模式探索[J]. 教育教学论坛,2021(51):2.
[2] Krashen Stephen D. The Input Hypothesis: Isuesand Implications[M].London:Longman,1985:62.
[3]崔艳菊. 大学英语分级教学的教改理论及管理模式[J]. 天中学刊, 2012, 27(2):2.
[4]刘飞飞. 面向程序设计类课程的MOOC+SPOC混合教学模式[J]. 办公自动化, 2020(18):2.
[5]周翔, 张廷萍. 程序設计基础类课程”线上+线下”混合式教学模式实践[J]. 计算机教育, 2021(8):4.
[6]汤伟.《数据结构》和《C语言程序设计》新教学模式研究[J]. 科技资讯, 2017, 15(24):2.
[7]黄海芳,方丽,余宇华.基于竞赛的程序设计类课程教学改革[J]. 电脑知识与技术:学术版, 2015(2X):2.