周世平 童向荣 卢云宏
文章编号:1672-5913(2015)03-0084-03
中图分类号:G642
摘要:阐述程序设计基础课程改革方案,以学生为中心制定课程目标、考核、课程内容及学习方式,给出一个新的程序设计基础课程教学改革方案。
关键词:程序设计基础;课程改革;以学生为中心
0 引言
程序设计基础课程是计算机专业学生接触的第一门专业课程,它的质量关系到数据结构、操作系统等后续课程能否顺利进行。多年来我们延续着课堂教学、实验教学、课程设计、考试4个教学环节的模式。课堂教学以一本教材为主要教学内容,实验教学以辅导学生能够完成编程实验为主,课程设计出一些比实验大的题目让学生在集中的时间完成,考试采用流行多年的考试方法(选择、填空、程序填空、编程题的汇总)。为了维持及格率,教师将考试题目出得越来越简单。该课程后续课教师抱怨学生的编程能力太差,连简单的一个算法都不能实现;更有甚者,认为程序设计课程根本没有教学生程序设计,只是教学生程序设计的语言。学生反而抱怨老师的课程没有培训机构讲得实用。
2014年7月,笔者在北京怀柔参加CCF举办的第二届导教班。南京大学的陈道蓄教授进行了5天的“计算机问题求解”课程讲座。南京大学“计算机问题求解”课程将计算机导论、C++程序设计、数据结构、离散数学、算法设计与分析5门课程整合成一门跨时2年的课程。该课程以程序设计为主线,对计算机领域所需的离散数学、问题建模、数据抽象、算法设计与分析、算法复杂性理论进行了探索性的学习。“计算机问题求解”课程所采用的模式是建立在培养学生各种能力基础上的。如采用启发式教学,培养学生的自学及凝聚问题的能力;采用深度引导,鼓励学生追求质量更好的算法,培养学生的创新意识;采用数学逐步渗透,培养学生的数学意识和能力。陈道蓄教授的5天讲座感染了来自各高校的一线教师,大家愿意将这种以学生为中心的教育理念移植到所讲授的每门课程中去,这种移植不是简单的模仿,更不能照搬,而是要根据各校的具体情况,建立适宜的课程体系,完成每一门课的教学改革设计。
1 改革的出发点
一门课程的改革涉及课程的各个方面,包括课程目标、课程内容、实验课内容、考核方式、学习形式、作业形式等。所有这些方面的改革都面临着这样的问题:课程的出发点是什么?改革的目的是什么?
长期以来我们课程的出发点都是以教师为中心:教师教什么?怎么教?怎么考?很少关注这样的问题:教师教的内容是学生需要学的吗?教师教的方式适合学生吗?考试题目有助于学生的学习吗?我们是否考虑所进行的每一个教学环节究竟能给学生带来什么?比如,课堂上面面俱到的语法讲解、实验课上的一个个程序的抄写、仅仅为了题型多样化的考试题目。我们已经习惯这些教学环节,却忘记了它们对学生产生的副作用。
任何一门课程的改革首先是改革我们课程教学的出发点。课程的出发点不应该是教师,而应该是以学生为中心。所谓以学生为中心就是首先要考虑学生的需求。比如,学生为什么要学习这门课?学生在这门课程能够学到什么,掌握了什么,培养了什么。我们在这里是说,学生“学会”什么,不是说教师认为学生“应该”学会什么。我们强调去掉“应该”二字,其目的就是要将课程的中心由教师变换到学生。
程序设计基础作为计算机专业学生的第一门基础课,对刚刚进入大学的学生起着至关重要的作用:引导改变学生的学习模式,完成从中学学习到大学学习的过渡;引导学生的自学意识,具备初步自学的能力;引导学生对计算机专业产生好的感性认识与体验,培养学生对专业的热爱。程序设计基础课程的改革必须以学生为中心,完成埘学生的引导作用。在明确了该门课程的作用后,就要设置课程的目的和考核要求,再根据课程内容和考核要求设置课程内容,最后确定学习方式。
2 课程目标及考核
课程目标与考核是两个非常重要的环节,这两个环节的确定决定了一门课的性质。所谓课程目标是我们期望学生能够从这门课程的学习得到的,考试是检查课程的目的是否达到的一种重要手段。
2.1 课程目标
课程目标应该是专业目标的一部分,应该是先制定计算机专业的目标,然后再制定课程目标。谈到课程目标时,我们就容易联想到“传道、授业、解惑”。然而,这6个字以教师为中心,关注的是教师的职责、教什么、怎么教的问题。改革后的课程目标是以学生为中心,关注学生学到什么、学生怎么学的问题。
任何一门课程的目标都不应该仅仅是知识的传授。陈道蓄教授在“计算机问题求解”课程中谈到课程目标时,提出了4个方面:培养学生应该具有的意识、应该具有的能力、所需要的知识、所具备的技能。
程序设计基础课程是利用计算机程序设计语言来解决实际问题的课程,因此在本门课上,首先学牛要学会一门程序设计语言,包括语言知识的掌握及应用技能,然后学生要学会用这门语言进行程序设计,解决实际问题;而解决实际问题,就要学会对问题的分析。另外我们希望学生在本门课程中具有初步的自学能力,为将来的专业课学习奠定基础。为此,该门课程的目标如下:“本课程的目标是希望学生掌握简单的数据抽象、问题建模和简单的算法等基础知识,养成解决问题的能力,养成程序设计的能力,养成自我学习专业知识的能力,学会学习一门语言,熟练使用语言及其开发环境进行程序开发与测试的技能。”
课程目标的特点是通过学习一些基本知识,培养学生应该具有的能力。在这里不是教会学生一门语言,而是要求学生“学会学习”一门语言。学会学习一门语言,既培养学生的自学能力,又保证将来学生不会畏惧任何语言课程,有信心通过自己的学习可以学会任何一门语言。
2.2 考试
考试对于大一的学生再熟悉不过了。程序设计基础作为计算机专业的第一门专业基础课程,它的考试内容与形式对学生的学习态度的转变有着相当大的作用。中学时期的考试以对知识的掌握为主,所以学生的学习态度是学知识;如果大学的学习还考知识,那么学生的学习目的就是学知识。考试是课程的一部分,考试也是课程的指挥棒。考试的内容及方式决定了学生的学习态度和学习方式。
在确定本门课程考试的内容及方式时,要审视考试的目的是什么。首先考试不是单纯地为了考学生,为了给学生一个教学记录。考试是为了让学生更好地学习,是为了督促检查课程目标的实现。程序设计基础课程的目标包含了知识、能力与技能3个部分,在这3个部分中,解决问题和程序设计的能力最为重要,所以考试的内容以能力为主,考核的知识是应该具备的能力所需要的。编程的技能是学生必须掌握的,因此是必考的
至于采用什么样的考试方式,要看它是否能够更好地让学生展示学习的成果。鉴于本门课程的特点,考试内容及方式可以拟定如下:“本课程的考试内容为程序设计能力、解决问题的能力以及C语言运用的技能。考试的方式为OJ平台机考与案例解决方案。”
没有采用笔试,不意味着知识不重要。更重要的是学生是否能够将学到的知识用于解决问题中,而不是死记硬背知识。在制定考核内容及方式时,要充分考虑课程目标。如果考核不理想时,就要反思课程目标是否合适,是否需要改进?
3 课程内容及学习方式
课程目标是以学生为中心的,课程内容和学习方式也必须是学生为中心。强调以学生为中心,主要考虑学生学会哪些内容,学生以什么样的方式学会,而不是以教师的角度,教师该传授哪些内容,教师该如何传授。强调以学生为中心,不是说不需要教师,而是强调教师在传授的内容和方式上要以学生的“学会”为着眼点。
3.1 课程内容
以往讲一门课,实际上是讲一本教材。围绕着本课程目标中关于能力、知识、技能的要求,课程内容中除了C++语言本身,增加简单的算法设计、简单的数学建模思想,以此培养学生分析问题、解决问题和程序设计的能力。所以本课程的内容如下:“本课程内容大致分为如下几个方面:C++语言、简单算法设计、简单的数学建模思想。3部分内容不会独立分开讲,而是通过有机地结合起来,达到我们对学生能力培养的目的。至于教材我们也不会局限于一本教材,而是提供给学生更多的开放内容。”
本课程是借助于C++语言,向学生传授设计的思想,培养学生解决问题的能力。
3.2 学习形式
多年来我们一直延续着教师讲一学生听一学生作业一教师总结一复习考试的流程模式。这种方式不是学生的学习方式,而是教师的传授方式;不是以学生为中心的,是以教师为中心。若以学生为中心,就要考虑什么样的方式能让课程有效地达到目标。课程目标决定了学习方式。
程序设计基础课程除了传授语言知识外,还要培养学生解决问题的能力,学生的编程技能。另外为了帮助大一学生顺利过渡到大学的专业学习,本门课程还承担着培养学生自学能力的任务。根据烟台大学学生的实际情况,对于较难部分教师承担讲解,如算法;对于简单部分学生自学,如语言细节。本课程的学习方式如下:“本课程在教师指导下让学生自学语言的使用、语言的细节、程序的运行及测试。教师将程序设计思想、简单算法及其数学建模讲解传授给学生,引导学生掌握知识、运用思想和能力,帮助学生自我培训编程的技能。”
笔者采用的学习方式,学生有主动承担的部分,教师有引导督促的责任,没有将教师和学生完全分隔。既给了学生自我探索、自我学习、自我训练的空间,也强调了教师在学生学习过程中的引导角色。
4 结语
改革方案中的课程目标、考核、课程内容及学习方式都是建立在以学生为中心的基础上,彻底改变了教师教、学生学的教学模式。改革方案的每一个环节中更凸显对学生能力的培养。
烟台大学近一年来进行程序设计基础课程的改革,在2013级学生中采用Online Judge平台的机考模式,用实际问题的程序设计求解取代传统的笔试。这种考试方式的改革,彻底改变了学生背书的习惯,将学生的注意力吸引到对程序设计能力的关注。与2012、2011级学生对比,经历考试改革的2013级学生的程序设计能力大幅度提高。
仅仅考试改革就给程序设计基础课程带来了巨大变化,我们相信全方位的以学生为中心的教学改革方案将会给这门课程带来更多活力,同时为计算机专业的教学改革带来希望。