程序设计类课程是大学本科网络空间安全和计算机等相关专业基础课程或者核心课程,具备强烈的实践性和应用性[1]。此类课程要求学生通过实践性教学,掌握编程语言知识和编程技术,掌握程序设计的思想和方法,拥有利用编程语言解决实际问题的能力。微软公司首席法务官Brad Smith已经把计算机科学提升到国家战略的高度,并呼吁制定更具竞争力的教育策略[2]。国务院《关于印发“十三五”国家科技创新规划的通知》明确指出,“要面向云计算、大数据等新需求开展操作系统等关键基础软硬件研发,扭转我国基础信息产品在自主保障等方面的被动局面”[3]。为“践行国家战略,助力创新创业”,“张江杯”“百度之星”“华为软件精英挑战赛”等相关程序设计大赛也蓬勃展开。因此,围绕国家战略和《教育部2018年工作要点》的精神和要求,积极探索程序设计类课程实践教学的新思路,促进软件开发人才的培养尤为必要。
程序设计类课程实践教学是培养学生实践能力、动手能力、综合能力的主要手段,是全面提升学生综合素质的必要措施。然而,程序类课程传统实践教学实例与实际工程应用联系松散,实验平台功能单一、关联不够紧密,使得学生学习过程中只见点,不见面,没有整体布局和视角,且不能很好地融会贯通各个子学习模块。为此,如何以平台为支撑,实践为导向,结合学生实际,个性化设计实践教学环节,开展交互式云端教学具要重要意义。
由于程序设计的复杂性和平台资源的有限性,使得程序设计类课程实践教学在实际教学过程中常面临以下困难[4-5]。
1.编程训练偏少,理论和实际难以结合。程序设计类课程通常是计算机相关专业的专业必修课或选修课,包括理论教学和实验教学两个部分,其中,理论教学学时一般占总学时的大部分。例如,总学时为32学时,其中理论教学24学时,实验8学时。相关程序设计类课程学时分配如表1所示。然而,程序设计课程实践性极强,学生通常没有充分的时间对所学知识点进行理解和消化。学生编程训练偏少,理论和实际难以结合。
表1 程序设计类课程学时分配
2.实验室资源有限,实验内容偏少。高校实验室是教学科研活动和大学生人才培养的基地,是锻炼学生实践能力的重要场所。然而,实验室程序设计类实验内容较为分散,关联松散。实验室功能单一,且实验内容偏少。上述问题不仅导致实验室资源浪费,而且不利于学生实践能力的培养。
3.编程上手困难,学生存在畏惧心理。程序设计语言是一种计算机编程语言,其实质是一组记号和一组规则,需要学生利用逻辑思维去解决某个问题。然而,学生常缺乏动手编程的信心,感觉编程上手困难,不知如何入手、如何分析和解决实际问题。最终,使得学生对其存在畏惧心理。
4.书本文字单一,学生感觉枯燥。程序设计类课程书本文字单一,实验过程不详细。书本不能为学生提供色彩丰富、内容翔实的实验指导。在实验过程中,单一的书本内容导致学生学习效率低,感觉枯燥,不能很好地完成实验内容。
笔者针对程序设计类课程实践教学的实际情况,基于“在线平台+实践驱动”模式,对程序设计类课程实践教学方式进行了设计,如图1所示。首先,学生通过课堂理论的学习,熟练掌握程序设计语言的理论知识,为后面实践编程打下良好基础。其次,学生根据教学安排和个人的学习情况,个性化设置系统功能,包括系统操作界面设置和实验内容设置。然后,以实践驱动为导向,学生自主学习和实验开发,通过平台完成学生学习的全过程跟踪。最后,实时线上线下和同学、老师互动交流,完成辅导,引导创新。
基于“在线平台+实践驱动”的程序设计类课程实践教学模式,从在线平台和实践驱动两个方面入手,即以平台为支撑,实践为导向,强调学生的主观能动性。结合学生实际,个性化设计实践教学环节,开展交互式云端教学。
图1 新模式下的实验方案示意图
1.结合在线实验平台,优化实验资源。在当今信息时代,在线程序设计类实验平台不同于传统的纯实验室教学,前者拥有更大的内容拓展空间,提供更好的互操作性和用户体验。如商业化的动手做实验,轻松学IT的实验楼,为用户提供了一个集线上讨论、学习、实验于一体的在线学习平台。同时,也有免费的辅助程序设计课程教学的在线代码判题系统We⁃Judge,他拥有强大的在线教学管理,正规的程序类竞赛和多样化的判题技术,致力于打造更好的程序教学辅助系统。
图2 新模式下的在线实验界面
在线平台不受时间、实验内容和场地的限制,并可对实验环境进行隔离,让学生并行操作实验。更重要的是,我们可以根据学生学习的实际情况,灵活设置实验内容,充分契合学生的学习兴趣和进度。例如,Java语言基本语法中关键字、标识符、注释等相关知识的实验,其在线实验界面如图2所示。通过平台,学生可以一边学习、一边操作、一边交流,完成多方位的实验学习。在线平台将有限的实验室物理空间,扩展到无线的网络空间,为学生提供了一种线上可交流互动,线下可请教指导的交互式云端教学。
2.以学生为主体,教师为主导,实践为导向。《国家中长期教育改革和发展规划纲要(2010-2020年)》明确指出“要以学生为主体,教师为主导,充分发挥学生的主动性”。在程序设计类课程中,我们着重强调“以学生为主体,教师为主导,实践为导向”。教师的引导为外因,学生的学习为内因,其中,工程实践是联系教师与学生关系的核心纽带。教师通过线上平台为学生提供充分的工程实践引导,激发学生的学习兴趣,使得学生从被动的实验主体,转变为知识的主动探索者,充分调动学生的主观能动性,培养学生勇于探索和学习的精神。
基于实践驱动的程序设计类课程实践教学方式能够在学习内容方面为学生提供更多好的选择[6]。一方面,学生可以结合自己的兴趣爱好和学习进度,通过发现和提出自己感兴趣和关心的现实问题,合理安排自主的个性化学习。兴趣是一个人力求认识和趋向某种客体的积极态度的个性倾向[7]。我们常说,兴趣是学生最好的老师,通过兴趣助力学生的实践学习,两者相辅相成。另一方面,基于实践驱动的教学,使得更多问题来源于具体实践与现实应用,让学生在实践与应用中发现问题、分析问题、解决问题,为学生提供良好的实验环境(包括线上环境和线下环境),培养学生思考、实践、创新等综合能力。
总之,“在线平台+实践驱动”的实践教学模式,为程序设计类课程的实践教学提供了新的思路。利用信息时代下交互式云端平台,从实践教学实际出发,结合个性化实践教学内容设计,充分调动学生主观能动性,最终培养合格的软件开发人才。