由从哲 陈湘军
《程序设计基础》是计算机专业学生的第一门专业必修课,通过本课程的学习,使学生对计算机和软件系统有一个初步的正确的认识,培养学生的用逻辑和数值方法解决计算问题的思维,具备编写计算机程序解决问题的能力,为后续专业课程的学习打下良好的基础[1]。
初学者在学习编程时遇到困难的原因有很多,这些困难可以分为以下几类:
(1)与学生有关的问题
尽管随着计算机教育的普及,很多同学在中学阶段就具有了很多的编程知识,能够着手去编写一些程序代码,但是缺乏开发计算机算法的能力,尚不具备通过编写计算机程序来解决具体问题的思维和能力。此外,对于编程中遇到的异常和错误,学生们没有足够的耐心对编写的程序进行不断的调试和修改错误。
学生的主要问题在于他们对通过编程解决问题的性质不了解。学习编程不仅包括理解编程语言,例如语法和数据类型,还包括开发多种其他技能,例如分析问题、开发算法、编写代码、调试和修复错误等。培养这些技能需要在课外进行大量的解决问题和编写程序的练习。然而,问题是,经过高中阶段的学习,许多学生认为阅读课本和理解语言语法就足够了,并没有意识到自己的不足。因此,帮助学生认识到自己的不足,会使他们更加努力地克服自己的弱点,提高学习水平。
(2)与学科性质有关的问题
刚刚接触程序设计开发的学生发现有些编程概念很难掌握,他们很难将变量、内存地址和数据类型等编程术语概念化。编程的另一个挑战是利用抽象设计,抽象定义为关注问题的主要细节而不是考虑许多次要细节的过程。在编程中,学习者需要在不同的抽象层次上思考问题,否则,他们将被许多技术细节所淹没,从而丧失学习编程的兴趣。
(3)与教学方法有关的问题
传统的教学方法对学生在程序设计课程中遇到的困难负有一定的责任。许多教师忽视了这门学科的本质,更多地关注编程语言的句法细节,而不是培养学生解决问题的能力。传统的讲授方法在编程课程中效果往往不尽如人意。因为程序设计的教学主要集中在解决问题上,学生需要即时的反馈来帮助他们克服困难并从中取得进步。因此,学生需要更多的个性化教学来解决不同个体的问题。编程学习者需要发展多种技能,但是,由于时间和课程规模的限制,很难在课堂上实现个性化教学这一目标。一般来说,学生需要在课外自己练习编程,这就需要更多的课外支持,才能保持进步,在遇到问题时不会灰心。
学习编程的困难通常会让学生感到沮丧,导致他们中的许多人对编程产生畏难心理,失去学习编程的主动性。因此,激励学生学习程序设计对于提高他们对专业的学习是非常重要的。一般来说,学习动机影响学生的学习努力程度,进而影响学生的学习成绩。学习动机可以分为两种类型:内在的和外在的。内在动机是指一项活动因其内在的满足感而表现出来,而不是因奖励等外在原因表现出来,而外在动机则可以定义为为了达到某种结果而进行的活动。
在程序设计课程中,学习动机对学生的成绩有积极的影响。学习动机在计算机程序设计课程中的重要性是由于课程的学科性质决定的,程序设计开发要求学生进行大量的编码练习,如果没有很高的学习积极性,那么这种高强度的练习是不可能持续的。为了提高学生的学习动机,应采用不同的策略使学生积极参与学习过程。研究发现,提高互动水平是提高学生积极性和创造积极态度的主要因素,从而提高他们的学习表现。此外,更多的支持和丰富的学习材料有助于学生理解课程主题并促进他们的学习动机。由于时间限制,在课堂上实施这些活动和支持可能很困难,因此,混合式学习环境是将多种活动结合起来并提供此类额外支持的适当方法。
混合式学习是一种新的教育方法,它使用技术将面对面课堂教学和在线教学策略结合起来,以增强学习过程[2]。该模式通过教师及学生的互动,为学生提供更多的支持,另外也满足了学习时间和地点的灵活性。此外,设计良好的混合式学习课程可以促进个性化学习,以满足不同学生的学习风格。根据学习过程中面对面角色和在线角色的比例,混合学习可以分为不同的模式。它可以通过三种不同的方法来实现:线上课程提供和线下课程类似的内容;线上课程作为线下教育的补充;线上课程替代线下课程。目前常见的模式是,大多数课程都是通过传统的线下教学来完成的,而在线学习则被用作一种辅助工具,以提高学生在课堂之外的学习。这种模式越来越多地被高等教育机构采用。许多研究都探讨了运用混合学习来解决学习困难和提高学生学习动机的有效性。研究发现,混合学习方法比传统的线下学习方法更方便、更先进,是最适合学习程序设计的教学模式,提高了学生的学业成绩和成功率,提高了学生的满意度。
目前,大多数大学使用不同的工具,如泛雅课堂、MOOC 或SPOC 等来实现混合学习。然而,这类系统的利用率仍保持在较低水平,仅限于张贴PPT 讲稿和提交家庭作业。我们的最终目标旨在开发一个混合式的学习环境来教授计算机程序设计,以提高学生的学习动机,并最终提高他们的学习能力。为了实现这一目标,学生应该积极参与混合学习的两个方面:线下教学的课堂时间和通过在线互动的课外活动。混合学习模式适合于程序设计课程,因为学生需要付出很大的努力来提高他们的程序设计能力,他们的大部分实践将在课后进行。因此,他们需要一个在线支持环境来帮助他们克服可能面临的困难。
在江苏理工学院,所有课程都由泛雅平台[3]进行管理,并鼓励教师有效地使用这一工具,将积极学习作为大学的战略目标之一。许多教师仅仅使用该平台来放置课堂教学的PPT,以及提交课后作业。在《程序设计基础》课程中,我们希望充分利用线上教学平台,将学习活动融入网上,并使之与课堂教学良性互补,创造一个积极的混合学习环境。
我们的目标是设计一个积极的混合式学习环境,以提高学生的学习兴趣,提高他们的学习动机,并加强他们计算机程序设计能力。这种环境下的活动应该解决这门学科学习困难的原因。主动学习旨在通过不同的活动,如讨论、阅读和解决实际问题,使学习者参与学习过程,而不是被动地听老师讲授。一般来说,主动学习会激发学生对学习的兴趣,因此,在程序设计课程中使用不同的主动学习策略可以激发学生的学习兴趣,帮助他们克服主题的困难。
以下是用于在我们的混合环境中进行主动学习的具体做法:
(1)小组学习
学生们被分成小组一起做一个小项目。通过分组学习,有助于学生在线互动,并支持小组成员之间交换材料。老师也加入了每个小组,让学生觉得自己是项目的一部分,教师需要随时准备在需要时帮助学生。分组学习注入合作学习和激励学生的教学方法,我们的目标是促进学生的学习,并激励他们互相帮助,克服这门学科的困难。
(2)案例教学
学生需要知道如何分析问题和设计完整的解决方案,这种能力在传统学习编程语言的课堂上并没有教给他们。为了帮助学生具备这一能力,我们给学生布置了一个类似于项目作业的具体案例研究。学生得到了问题描述和要求,需要他们针对具体问题编写计算机程序进行解决。这项研究的主要目的是帮助学生利用他们各自所学的知识,为一个具体的实际问题建立一个解决方案。作为本课程的主要评估之一,学生在开发他们的程序设计项目时需要模拟项目开发的全过程。
(3)互动讨论
讨论式教学是激发学生学习动机的一种积极的教学方法。它使课堂更加愉快,提高了学生的批判性思维,提高了他们的沟通能力。教师的角色是触发和引导讨论以获得特定的结果。在我们的教学过程中,讨论通常是在课堂上由与先前主题相关的问题开始的,以确保学生理解这些主题,鼓励所有学生参与讨论,并允许他们之间进行辩论。另一方面,利用线上平台的在线论坛鼓励学生参与异步讨论。与课堂讨论一样,在线讨论要求教师对讨论进行管理,并将其导向支持学生学习。
(4)学生日记
要求学生利用在线平台的日志文档完成学习情况的日记。学生们在每周的日记中详细说明他们所学的课程、开始学习前的目标、面临的困难、如何克服困难、如何评价自己以及他们的反思。教师利用日记来指导学生学习程序设计的正确方法,帮助他们调整学习方法,使之更好地适应学科性质,这主要取决于教学实践,而不仅仅是单纯的编程知识。学生日记反映了他们的态度和动机。我们注意到,学生们开学时充满了热情,对自己的成绩寄予了很高的期望。教师有责任运用不同的策略,通过推动学生取得更大成就,尽可能长时间地保持这种态度。
采用不同的策略使学生积极参与混合式学习,对他们的态度和满意度有积极的影响,从而激发了学生对编程课程的兴趣,提高了他们的学习成绩。为了充分利用混合学习环境的两个组成部分:线下学习和在线学习的优势,必须仔细设计混合学习环境。这两个组成部分应相互补充,以创造一个协作的支持性学习环境,提供与教师的高水平互动,为学生提供良好反馈,并指导学生学习的正确方式。这种支持性的环境适合计算机程序设计学科的性质,有助于学习者克服其困难。从我们的教学实践来看,混合学习提高了学生的满意度,提高了他们的学习动机,最终对他们的学习成绩产生了积极的影响。