周益民
(电子科技大学,四川成都 611731)
信息科技发展突飞猛进,大学生毕业后不管是就业还是深造都离不开本科教育奠定的计算机专业基础知识。因此,大学生的计算机通识教育具有高度实践的需求属性[1]。计算机基础教育作为普适的素质教育课程,实用性价值不断得到彰显,体现在每个当代大学生的学习、工作和生活中。
《数据结构与算法》课程作为最重要的专业基础课,是计算机学科一半以上的专业课程的直接或间接前驱,其重要性不必赘述。国内外高校的很多计算机专业教师对《数据结构与算法》课程的讲授都有其特有的方式方法。包括建设小班课程、研讨课程、实验课程等。现如今,利用信息化工具打造线上精品课程教学也显得尤为重要。
《数据结构与算法》课程主体分为数据结构和基本的算法设计与分析,课程内容丰富、结构抽象,初学者一般很难快速理解掌握并融会贯通。学生经历高考后,应试教育的思维模式已经根深蒂固。该文将根据《数据结构与算法》 课程的教学需要和课程特点,紧跟创新创业和实践工作的需求,提出区别于传统实践教学的教学内容与工程实践相结合的教学方法,与此同时,提出与之相对应的课程设计方法。教师以学生创新能力培养和实践能力培养为教学活动契合点,改善《数据结构与算法》课程的教学将有望为计算机专业教育整体质量贡献积极意义。
《数据结构与算法》课程描述了计算机中数据存储、组织方式和算法设计与分析,是计算机类专业第一门基础课,一般开设在大二年级的第一个学期。它甚至作为其他电子类工科专业的专业课程开设在高年级。其重要性和影响力不容小觑[2]。《数据结构与算法》 为后续专业课程的教学提供基本认知和思维过程。因此,它的教学效果的好坏直接关系到学生对后续课程知识的学习接受程度。《数据结构与算法》主要内容源于现实生活中各种实例的抽象,比如,顺序结构中的队列操作,来源于火车进站和出站的情况;栈操作则来源于洗盘子的过程等。课程的主要特点有三。
《数据结构与算法》 课程包含的知识深刻且困难。具体而言,它既包含数据组织管理的物理结构和逻辑结构,同时也包含在不同结构下的算法设计和实施的有限序列。结构部分的教学是具体的物理结构(两种)和抽象逻辑结构(三种)之间的辨析和理解。算法设计和实施部分要求学生既要具备工程设计能力,同时也要具备代码实施能力。
通常来讲,该课程内容对于只有程序设计基础的大二学生,这必然是个挑战。此外,相关的查找和排序经典算法实施例子不下10 个,都需要学生理解、掌握后并举一反三。以该校开设的《数据结构与算法》课程为例,总的授课时间是64 个学时,其中实验和实践课时为16 学时。
课程知识点繁多,在教学工作中可以按照定义和操作两个抓手将基础原理知识进行快速梳理分类。寻找现实生活中的具体实例与对应的概念抽象形式去描述,将关联的思想贯穿于整个课程的讲授中,将会激发学生对繁杂知识点的学习兴趣。
关联思想的介入,其最好的体现方式是与具体工程实验的需求相结合,这样学生在理解基础理论知识后,可以通过与知识相关的实验内容加深对知识的理解,进一步提升自己对知识领悟能力[3]。在工程试验过程中,一方面,夯实理论基础,锻炼了学生创新思考的能力,另一方面,在实践中和企业界科研界相结合,使实践与现实问题不脱轨。
《数据结构与算法》 课程的知识点不仅零散繁杂,而且章节之间的关联性不是很大。比如,第一部分的线性表与其特殊操作的栈和队列,第二部分的树和森林,第三部分的图和广义表,上述3 个部分在逻辑结构上各异,在物理结构上没有关系,不过是数据的逻辑结构不断地泛型表达。此外贪心算法和动态规划是两种不同的算法,思维差异很大。
虽然它们之间的关联性较弱,但是教师可以通过提纲挈领,发现并表述其中理论联系。比如,线性表描述的是一对一的关系,树描述的是一对多的关系,而图描述的是多对多的关系。链式存储和顺序存储在三者上的具体实施,就是将逻辑关系物理化表示的过程。贪心算法和动态规划都可以用于解决具有最优子结构性质的问题。
此外,虽然知识点是零散的,但是可以设置综合性的工程问题。比如,一个问题用多个查找算法如何解决,问题解决后比较各自差异性能。又比如,不同的问题采用不同的数据结构与算法进行工程问题实践,有什么优劣势。让学生在动手实践中,把握理论学习的精髓,并用解决实践问题的过程加深课程之间的关联性。
知识来源于现实生活实例的归纳与抽象。《数据结构与算法》课程中的基础概念的定义和描述常常不容易理解。比如,栈和队列的描述是通过其操作的不同加以区别描述。
为此,需要教师对基本原理知识理解透彻,将现实生活中比较常见的例子与课程内容结合,比如,栈的操作类似于洗盘子的过程,线性表与二叉树的区别类似于独生政策和二胎政策等。合理且常见的实例可以加深学生对知识点的理解和增强课堂教学的趣味性。
此外,将抽象的概念用PPT 进行动画演示可以帮助学生理解抽象的概念。当学生理解了概念,在面临工程实践问题时,脑海里会调用出具象化的抽象概念进行问题解决。
IT 类行业对计算机人才的需求是多方位的。有的需要在校生对某一方面比较熟悉即可,有的需要全面的人才。共通之处在于,IT 行业需要学生具备一定的动手能力。几乎每家IT 公司的面试都要求面试者在一定时间内采用熟悉的编程语言实现对特定问题的求解。这既包含理论知识的储备和灵活运用,同时也包含平常储备的工程实践素养。为此,对学生的动手能力的培养是必须的,但不是最终的目的。动手能力的积累是一个有限的过程,而基础理论的学习是需要长期的沉淀,所以两者既泾渭分明,又相辅相成。
科技创新产业的不断发展伴随“互联网+”时代和人工智能时代的推进,对于IT 类人才需求不再仅仅局限在技术层次的单纯要求,还需要科技人才准确把握科技发展方向和灵敏的商机嗅觉。现如今,高素质创新型人才和卓越人才培养是国家对双一流高校建设的期望,也是我国高等教育面临的挑战。
大学一般作为学生面向深造或社会工作的重要脱产求学平台,除了加强学生思想道德方面培养以外,专业的基础能力的培养必将是重中之重。计算机专业基础课程《数据结构与算法》是计算机专业必须了解和理解的内容,而且最为很多公司应聘的必考内容。作为教育者,有义务积极调整方法和策略,以适合社会需求,开启培养模式教学改革。
在大众创新、万众创业的背景下,《数据结构与算法》课程也为计算机类学生创新创业竞赛、科学研究和工业界难题提供了理论和实践基础。千里之行,始于足下,学生在这门课程的学习方法和思维可以潜移默化到更深层次的教学实践,在不断积累中,面对科学高峰才能做到仰之弥高、钻之弥坚。
工程实践教学在《数据结构与算法》课程教学活动中是必要的组成部分,不可或缺。只有在实验教学中利用好了《数据结构与算法》中的实施例子,才能帮助学生建立深刻的课程理论素养、工程实践能力。
实验训练方面,教师需要选择比较贴近现实的工程项目作为例子,以提高学生的编程动手能力,同时也增强了学生对《数据结构与算法》知识内容的理解。计算机课程的学习的目的是各行各业的应用,所以对其课程内容进行的工程实践是必须的。
实验教学可以不再局限于实验课堂,可以给学生分配以项目合作的形式。提供与网络安全、人工智能、数字媒体技术、大数据等专业背景相关的实践项目供学生选择。做到实践环节与学生兴趣和专业背景相结合,学习效益可以最大化。
高等工程教育面临新的机遇,同时也伴随新的挑战。2016年我国工程教育加入“华盛顿协议”标志着我国高等工程教育改革发展已经站在新的历史起点。
2017年,教育部牵头研究提出了“新工科建设”,明确了新经济快速发展迫切需要新型工科人才的支撑。高校面向未来进行人才培养布局,探索更加多样化和个性化的人才培养模式,将有利于培养具有创业能力、跨界整合能力的新型工程科技人才。
当今时代发展迅速,大学教育不单只为专业知识教学,还需要为学生开启开阔视野,培养学生随时随地学习的习惯,不断探索未知的新方向新领域。
实验课的设计是学生实践能力的直接体现。有意义的实验项目不仅可以激发学生的学习兴趣,而且可以让其很快地掌握知识内容。
《数据结构与算法》 课程中的知识点比较抽象,所以其教学过程往往比较枯燥。为了使学生能够集中注意力,紧跟教师的授课思维,教师需要对知识理解透彻。备课过程中应该紧贴现实,找寻与知识点相关的生活实例、工程实例、专利实例等。做到理论知识与具体实际相结合,使学生在学习理论知识的同时建立出思维的工程实践映像。
工程实践案例的新颖性设计不是像脱缰的野马一样无拘无束,而是要在理论基础上提供曲折性的实践案例。例如,可以面向对区块链技术感兴趣的学生设计一个区块链数据结构与算法操作的小实验。即结合了当下热点知识和技术,夯实了理论基础,又拓展了学生思维。具备新颖性又不逃脱数据结构与算法的理论基础。所谓学会了举一反三,才知道万变不离其宗。
一般而言,学生在应试教育中形成重分数轻实践的观念,直接导致学生的课外工程实践经验较少。为此,教师需要向学生贯彻工程项目的全局思想,让其了解项目的需求和目标。结合与之相关的知识点的详细讲解,加深学生对知识点的理解。这一过程,促使学生在掌握《数据结构与算法》的基础知识后,主动参与到工程实践当中,达到学有所用。
学生通过动手实现工程实践中的小项目,回味课堂上学习的理论知识,可以反馈和加深对知识的理解。学生将工程实践和理论知识紧密结合,同时也提高了解决实际问题的动手能力。
现阶段我国的填鸭式教学和灌输式学习忽略了学生理解并应用的过程。激发学生创作的思维是破解唯分数论的一个有效途径。工程实践中的小项目就是理论和创作思维的桥梁。设计优秀的项目使得学生思维活跃,创造能力提升。达到学以致用的目的才是经验教学的最终目标。
如果学生对知识有比较好的掌握程度,则能够利用知识进行变通和创新,进一步丰富理论体系。对知识掌握越深刻,对创新思维的培养越有益。以工程实践为导向的课程教学是巩固理论知识比较好的手段。巩固基础知识既加深了学生对知识的印象,从而完备《数据结构与算法》课程的教学,也破解学生轻实践的现状,提升了学生的实践能力。
理论联系实际的教学原则是从抽象到具体,具体到抽象的环路教学方法,目的是以学习基础知识为主导,从理论与实际上去理解知识,注意运用知识去分析问题和解决问题,达到学懂会用,学以致用。增强学生对学习知识的兴趣,充分发挥学生学习知识的主观能动性,这样学生获得的知识更加牢固。
《数据结构与算法》课程相对于硬件学习是抽象的,所以更要重视理论联系实际。每一门课程学习的目的是解决的问题而存在。每一个工程实践就是一个大的问题。锻炼学生利用抽象的思维进行问题分解,将问题分解为子问题进行逐一解决,将提升学生学习的综合思维能力和创造性解决问题的能力。
《数据结构与算法》作为计算机专业的比较重要专业基础课,由于其知识点抽象,学生不易理解。面临学生重分数轻实践的问题,该文根据理论联系实际的教学原则,结合当今的计算机行业的就业环境和趋势,提出将《数据结构与算法》课程的讲授过程与具有意义的实训项目相结合的兴趣教学课程设计理念,以其加深学生对知识点的理解、应用和创新能力。以工程实践为导向的《数据机构与算法》进行教学的探索将为计算机专业课程综合能力的培养提供最基础的建设。