(北京林业大学信息学院,北京 100083)
实践教学是高等院校本科生教育的重要环节,直接关系到大学生实践能力的培养和创新能力的提升[1-2]。目前各高校十分重视对学生实践能力的培养和锻炼,特别对于计算机等理工科专业来说,大量课程是围绕计算机编程实践而设置的,学生必须通过充分有效的实践锻炼,才能扎实掌握学科专业知识,为进一步的深造和工作打下坚实的基础[3]。
首先,课程编程实践是围绕课程知识点展开的教学活动,目的是为了增强学生对单个知识点的理解和应用。目前课程编程实践内容单一且缺少综合性,与实际联系不紧密,学生很难从整体上把握知识点在课程或专业中的定位。
课程设计的目的是为了能够较为全面锻炼学生某一专业方面的实践能力,帮助其了解课程知识的应用方法和途径。目前课程设计实践多安排在理论课程结束之后,由于受到课程时间和课程内容的限制,编程实践不易深入开展。同时,实践内容只针对具体的某一门课程,不能与其他课程相结合,所以,目前课程设计所涉及的编程实践缺乏与其他课程之间的联系。
毕业设计是大学四年最为全面而又可以获得教师有效指导的实践活动,通常被安排在大四下学期。虽然毕业设计的形式和内容能够得到教师的有效指导,但由于毕业设计与课程学习间隔时间过长,不少学生会存在知识遗忘的现象。同时,毕业设计还会受到学生就业、考研等外在因素的影响,学生很难再花大量时间去进行有针对性的学习,实践与知识学习容易产生脱离。
本科高年级的暑期实践为学生提供了一个良好的锻炼机会,学生有机会进入企业从事第一线的生产实践。但是该实践过程通常缺少学校的统一管理,教师无法对学生在企业的实践活动进行有效监督。而且学生暑期实践的内容多由企业甚至是个人决定,实践锻炼的内容和效果都难以统一把控,经常会出现实践效果参差不齐的情况。
对于学生实践能力培养中存在的问题,究其原因,一是许多短期实践环节(如课程编程和课程设计)会受到课程内容和时间安排的限制,任课教师很难安排跨课程、跨学期的实践任务和教学指导,同时实践内容相对单一;二是综合性的暑期实习或毕业设计的时间安排过于靠后(常被安排在大三结束之后),知识得不到及时巩固,理论学习与实践锻炼缺乏连贯性;三是各个实践环节都有严格的时间限定,导致实践活动很容易受到考试、就业、升学等多重因素的干扰,学生无法进行系统深入的实践锻炼。这些因素影响了学生实践能力的培养和综合素质的提升,长此以往,会进一步出现“重知识轻实践”的认识偏差。
针对计算机及相关专业学生编程实践能力培养中存在的问题,笔者设计了一种基于课程体系的编程实践项目,即在相对宽松的时间条件下,根据课程体系安排编程实践项目,以此来锻炼学生的综合实践能力,促进课堂教学与编程实践的快速结合。笔者选择北京林业大学电子商务专业的若干本科生作为本编程实践项目的参与者,让他们从大二开始参与到基于计算机相关课程的编程项目实践探索中。
北京林业大学电子商务专业在计算机应用方面的培养目标是掌握一定的计算机、网络及信息技术的基本原理及应用方法,能利用计算机、网络等现代信息技术从事商务活动或相关工作。目前该专业培养计划围绕Web前端、后端的设计和开发共设置了17门课程(包括9门专业必修课和8门专业选修课)。结合专业培养目标,编程实践项目案例选定9门课程(附带3门课程设计实践)作为项目的伴随课程,并以开发真实的教学管理考务系统作为编程实践项目案例的目标。
编程实践项目从学生大二上学期开始,周期为2学年(2015—2017年),通过一年的基础课程学习,学生对于大学学习生活和专业都有了一定的直观认识,学习和发展方向逐步清晰;同时,大二大三2年的学习时间涵盖了主要专业课程的学习内容,是学生获得知识、锻炼实践能力的最佳阶段。因此,编程实践项目结合专业教学大纲和课程体系,按照教学的自然学期进行编程实践项目的阶段划分,逐步展开编程实践项目的各项任务。
在每个学期,编程实践项目将结合课程安排和项目目标制定明确的阶段性实践目标,让每一个学生都能清晰地了解实践所需的课程知识和实践任务。这样,学生一方面能在课程学习过程中主动地探寻实践项目所需的知识技术,另一方面也能够在编程实践中将当前所学知识迅速应用于实际项目,解决项目实施过程中遇到的问题。通过这种理论学习与实践锻炼的反复交互,学生能清晰地了解知识学习与生产实际的关系,增强自身学习的主动性和参与实践的积极性。
基于课程的知识体系将编程实践项目的目标和任务分解到各个学期,它们与课程的对应关系见表1。
表1 参与编程项目的计算机相关课程及项目任务
基于课程体系的编程实践项目按照课程教学内容分为四个阶段,各阶段的实践任务和培养目标如下:在大二上学期,学生要开发一个具有信息展示、资料下载功能的网页平台。该任务能加深学生对网络通信与网页设计的认识和理解,它将成为整个项目的出发点和后续实践的基础。在大二下学期,在原有网页平台基础上,加入用户交互模块,逐步开发注册、登录、管理等各项功能。通过该阶段功能模块的开发,学生能对专业课知识的应用产生明确认识和切身体验,促使他们将所学知识用于解决实际生产中遇到的问题。在大三上学期,学生要完善平台应用功能,逐步开放编程项目的系统功能,不断测试项目代码并将其陆续投入使用。这一阶段除了要锻炼学生的实践能力外,还要加深其对专业学习的认识。同时编程实践项目各功能的整合能帮助学生理解各专业课之间的内在联系,加深对本专业课程体系的理解。在大三下学期,将编程实践项目的各系统功能进行整体集成,最后将整个项目工作成果投入使用。这一阶段主要是拓展学生的视野,培养学生的研究能力和项目整合管理能力。
在编程实践项目实施过程中,教师仅起着引导的作用,而项目任务的实施则完全交给学生,由学生伴随课程学习自行完成。编程实践项目活动采取自主组队报名的方式来确定参加的人员,这样能够确保参与人员的主动性,在一定程度上避免了被动参与项目的情况。因为经过大一学年的共同学习,学生对彼此都有了一定的了解,自主组队还可以确保成员之间的相互了解、相互认同,增加共同学习的效果。
在实施编程实践项目的各学期初始,教师根据编程实践项目的阶段性目标与课程设置情况向学生介绍各学期需要完成的项目任务。学生了解了各学期的项目实践任务,能促进他们对新学期课程相关知识的探索和学习,开展有针对性的学习和项目实践。同时,学生要向教师反馈上一阶段编程项目完成情况和遇到的问题,教师根据编程项目进展和学生反映的问题,提出有针对性的解决方案和改进意见,帮助学生从整体上把握各阶段的编程项目工作。
在编程实践项目实施过程中,教师会针对学生在编程项目中遇到的问题开展不定期的讨论,为学生提供具体的建议和指导。教师还可以结合该学期的课程实验、课程设计等实践环节,寻找其与编程实践项目的结合点,帮助学生更好地理解课程知识与编程项目任务的关系。
在各学期期末,指导教师需要再次向学生明确本学期需要完成的编程项目目标。一方面帮助学生明确课程中的知识要点和技术重点,辅助课程复习;另一方面,敦促学生利用假期对课程学习内容和编程实践项目的工作进行回顾和完善。
在编程实践项目实施过程中,教师采取的是相对松散的管理方式,每一个阶段都设置了一个低目标和一个高目标。低目标是学生要掌握同期课程教学大纲要求掌握的知识要点和技术重点;高目标是要从实际需求出发,满足编程项目目标用户提出的使用需求。低目标和高目标的设立使学生有更大的自主性,他们可以根据自己的时间及个人兴趣进行编程项目开发。
在编程实践项目实施的进度上,教师没有严格设置任务的截止点,学生实践活动的安排相对灵活。教师将编程实践项目进度与课程同步,使学生能够边学习边实践,促进了理论学习与工程实践的有效结合。
基于课程体系的编程实践项目,增强了学生的编程实践能力,使学生能系统全面认识专业,了解学科的发展,达到了编程实践项目的预期目标和良好的效果。
在两年的基于课程体系的编程实践项目的实施中,学生利用课余时间完成了一个功能完善的教学管理考务系统。该系统分为学生端和教师端,在学生端实现了注册登录、信息查询、材料下载、项目/实验报名、习题上传、在线答题等功能;在教师端实现了学生信息管理、教学资源管理、组织实验/活动、习题管理、自动出卷等功能。教学管理考务系统具有日常教学管理、学生活动管理、考务管理、在线答题和自动评测等功能。借助此编程实践项目相关功能的开发,学生还完成了“计算机网络”“php”“Web开发”等多项课程实验和配套的课程设计,实现了编程项目实践与课程作业、课程实践的良好结合。此外,学生还在编程实践项目的基础上申请了软件著作权。
首先,通过编程实践项目,学生加深了对课程知识的理解,扩展了自己的实战经验;其次,在编程实践项目实施过程中,学生遇到不少课堂或书本上没有提及但初学者普遍会遇到的问题,从而促使学生利用各种资源进行主动学习,提高了学习的积极性和学习效率;最后,编程实践项目还能帮助学生了解各门课程之间的内在联系以及课程与专业之间的关系,将不同课程知识串联起来,形成一个有机的知识整体,并加以综合运用。
基于课程体系的编程实践项目可以弥补高校现有的实践教学的不足,有效提升学生综合运用知识的能力和水平。高等院校可根据本科生的专业培养目标,在实践培养计划中添加此类项目实践环节,设计有针对性的项目,激发学生学习的主动性、培养学生的创造力。同时,也可以尝试在一定条件下将编程实践项目替代毕业设计,或将毕业设计安排成编程实践项目的扩展,让学生能在其中挖掘科学问题,以达到全面培养学生综合素质和能力的目的。
资助项目:北京林业大学2018年度教育教学研究项目“面向网络工程专业的伴随课程体系编程项目实践”,项目编号BJF212018JY082。
[1] 徐立臻,唐继卫.爱尔兰高等教育对我国高校教学实践环节改革的借鉴意义[J].中国大学教学,2006(4):59-61.
[2] 张放平.强化实践教学 推动创新型人才培养[J].中国高等教育,2017(17):29-31.
[3] 何兵.关于计算机专业课程教学方法的几点思考[J].计算机教育,2009(7):68-73.