以项目为中心的Java编程综合教学方法研究*
2022-07-29汪政
汪 政
(湖南第一师范学院计算机学院,湖南 长沙 410205)
0 引言
计算机专业人才的基本能力之一就是拥有良好的技术技能。然而,仅靠这些技能通常是不够的,还需要非技术技能(如解决问题能力、沟通能力等)。一些研究显示,计算机毕业生与行业期望之间在技术和可转移技能方面存在差距。这种差距与传统教学中侧重于技术技能和知识有关。所以,我们迫切需要提升计算机专业学生的非技术关键能力(关键能力)。我们意识到关键能力是计算机专业学生在职业、工作、社会和行业所需技能,我们开始改进计算机科学专业的一些课程。通过研究以项目为中心的综合教学方法,来实施Java程序设计的教学。
1 背景
1.1 计算机科学毕业生所需的能力
最近的研究解决了行业要求计算机科学毕业生具备哪些能力以及能力差距是什么样的问题。例如,软件工程技能体系(SWEBOS)描述了软件工程师须具备哪些软技能。作者将能力分为七类:①专业合作能力;②沟通能力;③构建自己工作方式的能力;④个人能力;⑤理解复杂流程、系统和关系的能力(问题意识);⑥将个人知识和技能应用于具体和新情况的能力(解决方案能力);⑦其他附加能力。软件开发的项目包括需求工程、建模、编码、测试和交付等活动,这些活动需要密集的沟通。因此,沟通技巧等关键能力对项目结果有很大的影响。对于软件开发项目的成功而言,关键能力与技术技能同样重要。
我们对多家软件公司进行了回访,毕业生缺乏的技能分为以下几类:①软技能;②软件工程过程;③计算机科学概念;④软件工具。在关键能力(例如口头和书面沟通、解决问题和自我管理的能力)和技术技能(测试、工具知识)方面都缺乏特定技能。总体而言,最重要的技能是沟通技巧、团队合作能力、解决问题的能力、计划和组织能力、获取和处理信息的能力,以及分析定量数据的能力。此外,还应该有人际交往能力、领导力、创造力/创新、动机、职业道德和灵活性/适应性等技能。
1.2 用于计算机科学的教授方法
大学被视为IT 行业专家的培育基地。因此,大学的一项基本任务是传授学生上述能力。学科内容知识和能力对于解决复杂任务和专业工作是必不可少的,不能通过完善的关键能力来弥补。计算机专业教学的挑战是涵盖技术技能和关键能力的需求,同时需要考虑到学生学习能力的异质性。
目前,“Java 程序设计”授课常见方法是介绍Java语言基础知识,剩余的技能,在实际练习中指导。这种方法强烈地展示了硬技能而不是关键能力。如何改变传统的教学方法,研究同时涵盖这两个方面的教育方法,是高等教育计算机专业一个需要解决的重大问题。研究目标包括:将关键能力的培养纳入课堂活动;加强学生合作和交流;强调小组工作和团队建设的重要性;要求合作学习和同伴教学相结合。
以项目为中心的Java 编程综合教学方法(CTIRO)的目标是解决计算机专业学生在学科、方法、社会和个人能力的发展问题,是为了教授”Java 程序设计”而开发的。CTIRO 是一种综合教学方法,整合和结合以下五种教学方法:①基于项目情境教学;②基于项目任务的学习;③基于项目问题的学习;④基于项目技术研究的学习;⑤混合教学。通过灵活、多样的教学方式来提升学生技术技能和关键能力。
2 研究背景
2.1 课程说明
“Java程序设计”是计算机专业本科第二学期学生的必修课。它需要总共96个学生学习时间(48个教学时间、16 个实践课时和32 个课程设计时间),并有5 个学分。该课程的教学包括每周进行的授课和以实验室形式进行的实践练习。该课程预期学习成果最初仅包含学科能力:使用算法的能力(基本能力)和分析、设计和实施软件的能力(软件开发能力)。CTIRO 的学习成果对关键能力进行了扩展(参考表1)。表1 中列出的预期学习成果是在2021-2022 年夏季学期开设课程“Java程序设计”的能力目标。
表1 在“Java程序设计”课程中指定为学习成果的能力
为了帮助学生培养学科和关键能力,“Java程序设计”课程从2021-2022 年夏季学期开始使用CTIRO 教学方法。除了教学方法之外,CTIRO 方法还将提供App 工具,可以通过学生的自我评估调查来评估关键能力的发展。
2.2 课程中的CTIRO教学
CTIRO 所有五种教学方法都用于教学和学习。由于学科知识和能力发展在本课程中非常重要,因此进行了概念演绎传递的混合教学。为了培养解决问题和分析思维的能力,基于项目任务的学习包含在本课程中。为了提高社会能力,例如团队合作和沟通,基于项目问题的学习被应用。为了加强独立工作和思考能力,应用基于项目技术研究的学习。通过CTIRO实现以下目标:
●重点是基于项目情境的学习。学生通常对算法有直观的理解,因为日常生活中就会遇到算法程序,例如烹饪食谱、玩棋盘游戏。
●为了在讲座中激发学生的积极性,采用小组教学方法。
●为了激励和吸引学生参与学习编程必不可少的动手活动和编程体验,在实验室中应用了基于项目任务的学习。
●为了培养社会和个人能力并激励学生学习,基于项目问题的学习被应用于实验室和自学。
●为了培养独立工作和思考的能力,向学生提供一项基于研究的任务,要求撰写一份报告。
与传统讲课教学相反,首先通过教授日常生活中的多个典型示例、任务和观察(基于项目情境的学习)让学生对主题有一个直观的理解,通过归纳将理论知识主题概念化。这些概念将在教师授课以及学生在实验室期间得到验证。
在混合教学中,将简短的概念和理论演示与个人和小组工作相结合。例如,提出一个讨论话题或给学生5 分钟的简短任务,然后在课堂立即讨论结果。在每堂课结束时,要求学生以线上调查问卷形式回答以下两个开放性问题:①我在课堂讲座中了解到的是什么?②我在课堂讲座中没有理解的是什么?学生的反馈将作为调整授课过程的依据。
在实验室中,学生单独和分组解决由老师给出的问题(基于项目任务的学习)。在解决问题的活动中,学生获得对该主题的概念性理解,学习所需的理论,并将两者应用于解决具体问题。
在学生获得一些编程背景知识和技能后开始基于项目问题的学习(第五周),并取代之前在实验室练习解决问题的活动。学生需要以2-3人为一组解决两个项目问题。这些问题是学生在基于项目任务的活动中自己制定和解决的。学生自行组织工作组,组织的原则是确保一个具有较多编程经验的人在组中,确保组中的每个人都积极参与。结对教学方法的结合对社会能力的培养起到积极的作用。
在基于项目技术研究的学习中,学生们接受一项无需编程的任务。在这个任务中,学生应该研究对象管理和对象的生命周期是如何在Java中完成的。他们需要考虑对象的创建、对象的生命周期和放弃等问题,并在合适的地方使用插图和代码示例编写技术文档。
除了教学方法之外,CTIRO 方法还将提供一种评估发展关键能力的App。自我评估调查表App是基于学生对其自身能力的看法和评估。要求学生使用李克特5 点量表评估课程:“5-同意,4-倾向于同意,3-中立,2-倾向于不同意,1-不同意”。所有课程参与者都需回答问卷。例如,问卷“我有动力参加这门课程”的平均得分为4.3。“我可以应用该学科的基本理论知识和实践技能”这一陈述的平均分是4.1,“在这门课程中我被鼓励发展自己的学习技能”这句话的平均值是4.0。这次评估的结果符合我们的预期。
3 讨论和未来工作
在“Java 程序设计”课程教学中使用CTIRO 的目的首先是让学生直观地了解同时具备学科能力和关键能力的重要性,其次是让学生处于有效学习的境地。到目前为止,这些教学改革的结果符合预期。
在这项工作在当前状态下,由于相对复杂的项目和教授新东西的快速进展,可能会引起批判性讨论。例如,当作为编程新手的学生聚集在一起开发复杂的程序(如彩票游戏或垄断)时,他们很容易不知所措。太困难的任务会导致沮丧,并对动机和学习成果产生负面影响。然而,经验告诉我们,情况并非如此。学生的积极性高,讨论的很热烈,掌握情况良好。
小组作业并不适合所有学生,例如,一名学生因为自闭症而不想参加小组作业。出于这个原因,我们允许他独自完成项目。这个学生没有达到主要目标,即在小组工作中获得经验,然而在学期结束,他的关键能力得到了提升,自闭症也得到改善。
CTIRO 教学方法在“Java 程序设计”课程教学中提高了教师的教学效率和质量,可以激发学生的学习积极性,让学生产生学习兴趣。该方法有助于学生自主学习能力、探究能力和创新能力的提高,提升了学生的关键能力,是一种有效的、值得推广的教学方法。