我怎么讲好程序设计基础这门课_第1页
我怎么讲好程序设计基础这门课_第2页
我怎么讲好程序设计基础这门课_第3页
我怎么讲好程序设计基础这门课_第4页
我怎么讲好程序设计基础这门课_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    我怎么讲好“程序设计基础”这门课    一、教育理念至关重要“程序设计基础”属于基础课。实践告诉我,在信息化时代,在有了“人类通用智力工具”的条件下,用编程手段来解决人们遇到的各式各样问题的时候,需要一种新的思维方式计算思维。为了培养计算思维能力,课程重点放在讲思路,讲如何对问题进行抽象,还要介绍一些基础算法和数据结构。当然,一些重要的语句及程序结构也需要讲解,但不宜多,更不宜喧宾夺主。对问题进行符合逻辑的科学分析,找出解决问题的形式化方法,并抽象到数学层次上去,这是最基础和最具本质的教学目标。学生如果没有这种能力是写不出程序来的。我认为“干粮和

2、猎枪”的比喻既形象又深刻。课程再多如果不具内涵,充其量不过是大袋干粮。一颗孕育着生命的种子,在雨露、阳光、营养物质的滋养下长成参天大树,根系、枝干和树叶作为有机的整体在发展,决非堆砌而成。教学生在学知识和长技能的同时获得经验和感悟,形成科学的世界观和掌握科学的方法论,这是最为重要的基础,是真正的“猎枪”。就像当年教我们的老师那样,通过言传身教,让学生在学习知识的同时,去体验和感悟做人和做学问的真谛,才是最为重要的。这十年我把教书育人和我所承担的精品课建设任务结合起来,考虑通过课程的教学设计使学生在学科能力上、在思想方法上和在行为规范上能够有所长进。在教学目标上写了如下3条:(1)借助程序设计的

3、知识载体,传授基本问题的求解过程和基本思路;(2)建立算法意识,培养良好的思维习惯和求真务实的优良学风;(3)从学科方法论上打基础,培养计算思维能力和分析问题、解决问题的能力。比如在上第一堂课时讲到“清零”。这是针对绝大多数同学以当地最高分考入清华的现状,结合自身在清华50年的教学经验,给他们讲为什么先要摘掉光环,从零开始的道理。继而向学生介绍科学的学习方法和怎样才能学得主动的经验。针对计算机学科是实践性极强的学科,告诉学生“你不是听会的,也不是看会的,而是动脑动手自己上机练会的”。再如,为了改变中国学生不敢发言、不愿提问题的现状,在课堂上我经常说:“你站起来发言,如果打分,先打99分,那1分

4、仅只是对或错,完善或不完善的问题。”谁站起来发言,我就让大家给他鼓掌。鼓励学生敢于标新立异,只要发现学生有不同于我的新思路,我就请他上讲台,讲给大家听。作风是训练出来的,是习得的。我对同学们说:敬业精神是通过上课听讲、做作业和上机编写程序等每一个环节来培养的,需要“从我做起,从现在做起”。纸上谈兵是兵家大忌,不是清华的学风。行胜于言,实践才能收获真知灼见。告诉学生理性思维和理性实践是我们的导学要求。理性是创新的基础,不浮躁、不虚夸,求真务实是清华学风中最为重要的传家宝。在课堂上我多次说过:“尽管我比你们大50岁,但我和你们在研究与讨论问题时是平等的。讲错了,讲得不好,你帮我纠正,我还要谢谢你。

5、”作为教师要把学生当作自己的孩子,教书育人不仅要考虑现在,还要顾及长远。一个“生物人”通过学校教育和社会教育成为一个既能生存又能发展的“社会人”,知识、能力和素养的综合提高是至关重要的。专业能力(专业知识和专门技能)、方法能力(工作方法和学习方法)和社会能力(融入社会的行为规范和价值观念)三要素的整合是我们应该给学生打下的基础。按照可持续发展的教育观,“程序设计基础”课程应处理好知识、能力和素质三者的辩证关系。一个具有较强能方和良好素质的人必须掌握丰富的知识,程序设计基础领域的知识是由程序设计的基本概念和程序设计艺术(技巧)组成的,要掌握这些基本概念和设计艺术,必须立足于理性化的学习和实践。对

6、程序设计而言,编程能力是计算思维和技能化知识的综合体现;只记住若干语句而不会解决实际问题,不能说具备了编程能力。计算思维是否正确,必须通过实践检验。因此上机让程序调试通过且能正确运行,并得出预想的结果,是理性思维和理性实践相互结合的必不可少的过程。事实证明,实践是编程能力赖以生长的土壤,也是这门课化难为易的“金钥匙”。更为重要的是,这样的教学要求,有利于倡导理论联系实际的优良学风,对学生形成科学的唯物主义的世界观和脚踏实地实事求是的科学精神大有裨益。素质教育是以尊重学生的主体作用、主动精神,注重开发人的潜能,形成人的健全人格为根本特征的教育。在课程安排中怎样体现素质教育?我认为素质是知识和能力

7、的升华,素质教育要求学生在学校里学会“怎样做人,怎样做事,怎样求知,怎样健体”。虽然我们不是思想教育课,但是我们也可以在一些教学环节中发挥“教书育人”的作用。比如在课程中,我们提出“养成良好的编程习惯”这个教学要求,强调程序的可读性和规范性,让学生在作业中严格遵守下述原则:程序构思要有说明,变量要注释,程序要符合规范,严谨、认真、一丝不苟。把学生的敬业精神和良好的职业素养纳入日常的教学要求中来。二、突破难点,切入点很重要教学是需要设计的,切入点很重要。“兴趣是最好的老师”,在教学设计时要用心揣摩初学编程者的感受,认真研究难点究竟在哪儿,深入思考怎样做才能让学生感兴趣,而不被那些深奥晦涩的语句和

8、语法弄得眼花缭乱,一头雾水,兴趣索然。我就想:能不能打破原来的框架?教学设计要针对教学对象、教学目标、教学内容、教学策略、教学进度、教学评估等等来进行。教学设计要有教学理念的指导,要采取先进的教学模式。最重要的一个原则应该是要估计学生原有基础,还要符合学生的认知规律。在20年前有关程序设计语言的教材,大多是翻译过来的,冗长难懂,被初学者视为“天书”;有的甚至就是某种语言使用说明书的翻版,让人望而生畏,望而却步。引发兴趣是第一要素。我认为好的教学设计应该有利于调动学习者的积极性,在设计每一章、每一节时都要做到激发兴趣,引人入胜。比如,我在讲关系运算和逻辑运算符时就精心设计了两个例子。第一个例子:

9、清华附中有4位同学中的1位做了好事不留名,表扬信来了之后,校长问这4位是谁做的好事。a说:不是我;b说:是c;c说:是d;d说:他说得不对。已知3个人说的是真话,一个人说的是假话。现在根据这些信息,编程找出做了好事的人。学生对这个例子很感兴趣,急于想知道计算机怎么解?于是,我在教材中顺势引出如下4个方面的内容:(1)介绍关系运算与关系表达式;(2)介绍枚举法的解题思路;(3)为了枚举引出程序的循环结构;(4)为了判断和裁决引出程序的分支结构。学生在学这段很基本又很重要的内容时觉得顺理成章,有的放矢,没有感到枯燥。相反,觉得蛮有趣味。接着我又举了第二个例子疑案分析:某地刑警大队对abcdef6个

10、嫌疑人进行作案与否的排查,存在如下6条线索。(1)a、b至少有1人作案;(2)a、e、f3人中至少有2人参与作案;(3)a、d不可能是同案犯;(4)b、c或同时作案,或与本案无关;(5)c、d中有且仅有1人作案;(6)如果d没有参与作案,则e也不可能参与作案。请编程,找出作案人。为了解这道题,就要研究逻辑运算符和逻辑表达式。借这个题目讲怎样将上述6句话语,转换成逻辑表达式,并归纳写出破案综合判断条件。之后为加深对枚举法的认识,给出用6重循环来枚举和判定6个人哪几个是案犯。通过对这两个例题的分析,让学生掌握解题的重要一步是将人的想法转换成机器能够处理的表达式或操作步骤,要用关系运算符和逻辑运算符

11、,写出数学运算式,此其一。其二是用计算机解题往往需要从多种可能性中去寻找其中的一种或几种,因此,最容易想到的就是“枚举法”。要用枚举法就会遇到大量的重复计算,自然而然地引出程序的循环结构。其三是分支是计算思维的一个重要方式。借这些例题就把设计程序结构的基本概念和方法教给了学生。全部课程内容都采用了这种任务驱动的方式,引出基本概念和基本方法,再归纳总结上升为一般规律。学生反映这种讲法符合他们的认知规律,十分爱听也容易听懂。把实际问题形式化为机器能够处理的表达式对初学者来说是最为困难的,在课程中我们需要从这里切入,来教他们如何思考和用什么方法破题,并用例题和大量的习题来训练他们的这种思维能力。三、

12、以人为本,强化实践教育,最重要的是要唤醒学生的力量,培养其自我性、主动性、抽象的归纳力和理解力。高级语言程序设计传统教法效果欠佳的主要原因是:过于注重语句语法,满脑子都是语句,却不能自主编出一个程序,使人感到乏味,难以调动学生学习的积极性。怎样做才能唤醒学生的力量,提高学习的积极性,是该课能否成功的一个关键。我认为,一方面要在教学的理念上下工夫,研究怎样以人为本,怎样在每一个教学环节上都想方设法去调动学生的积极性;另一方面要加大上机编程解题的训练力度。在计算机学科中,“构造性”和“能行性”是学科的最根本特征。按照这个学科最根本特征的要求,需要加强基础理论的教育,由此强化学生“计算思维能力”的培

13、养,而计算思维能力在较大程度上是以思维方式的数学化为支撑的。在“程序设计基础”课程中如何培养学生的计算思维能力,加大抽象思维能力和逻辑思维方法的训练力度是我们教学研究的重点。在实践中我们体会到计算思维不是只想不做,更不是纸上谈兵。工具影响思维,人们依托计算机编程环境,对所要求解的问题进行分析研究,将其抽象成数学模型,想出算法或计算步骤,编程加以实现。可行与否、正确与否都须在机器上进行验证。因此,强化实践又是这门课所必需提倡的。这里反映了理性思维和理性实践的辩证统一关系。为了让学生明白本课程在人才培养计划中的地位和作用,我在课堂中通过介绍一些已毕业大学生和在校博士生的体会,告诉同学这门课是理工科

14、学生的一门“看家本事”,打好程序设计基础,对用好计算机这一“人类通用智力工具”,意义重大。只有掌握好信息处理工具才能发挥超凡的创造能力。同时,我也把课程主旨和教学设计告诉学生,让他们一上课就对该怎么学习有思想准备。我在课程教学中强调;能力,不等于不注重知识,具有较强能力和良好素质的人,必须掌握丰富的知识。能力的培养与素质教育要部分地通过知识的传授来实施,能力和素质在许多场合下是通过知识表现出来的。在课程中应该怎样传授涉及程序设计的知识?我们认为应该推崇以探索为本的学习,鼓励将知识型教学改进为研究型教学。我们课堂上讲授的编程实例有多种思路和解法,鼓励学生百花齐放,各抒己见,标新立异。在平时的习题

15、上,也有一些属于没有固定解法的提高题,让学生去探索好的解法,有时还让他们在全体同学面前交流。对于一些高手也给他们构造不同级别的探索空间,引导他们在世界大赛的氛围中学习实践,取得经验,提高能力。对程序设计课而言,编程能力是计算思维和技能化知识的综合体现。只记住若干语句而不会解决实际编程问题,谈不上有什么能力。计算思维正确与否也必须经过实践的检验。从编程这一特殊的课程要求看,要把知识运用的综合性、灵活性与探索性作为重要的内容,强调能力须以丰富的知识作为支撑,上机实践是既动手又动脑的过程,是编程能力赖以生长的土壤。不上机就没有能力提高的土壤。编程能力是计算思维和技能化知识的综合体现,因此能力的提高应

16、该是训练的结果。我们将实践环节赋予训练的含义,有目的地训练学生如下5种能力:(1)读懂题目,找到问题,并将其抽象为数学模型;(2)构思算法步骤;(3)编写程序:(4)调试程序;(5)运行程序和分析所得结果,提出改进的意见。因此,我们提出:强化实践环节,要理性思维和理性实践。上机编写程序去实际解决题目中的问题,体现了知识运用的综合性、灵活性与探索性。很多人觉得学习编程很难,我们认为难就难在这个知识运用的“三性”上。纸上谈兵去解决这“三性”是不可能的,这也就是我们为什么在改革课程设计时,要以强化实践作为突破口的根据。我们还认为理论联系实际的学风,在每一门课中都应该提倡,这会对学生形成科学的唯物主义

17、世界观有好处。涉及计算机的课程大都实践性极强,特别是程序设计,纸上谈兵无异于自欺欺人,不动手实践绝对学不会。为了改革原来的纸上谈兵的考试方法,我们依靠学生中的“高手”,专门研制了用于平时作业提交和期中、期末考试的网上程序自动评测系统。该系统对学生编程能力的提高也起了很大作用。想方设法给学生创造动手的条件,帮他们解决动手时遇到的困难,在完成课业,解决一个个难题的同时,他们会有愉悦感和成就感,提升自信心比什么都重要。这里我们说让学生“感兴趣”,不仅是讲课内容和讲授方法要有趣,更重要的是让他们自己动手,收获成就感。每年在开学初就派人先做学生情况的调查摸底,掌握学生水平的第一手资料,从而确定我们的课程进度和辅导力量的部署。每年期中测试之后,再针对暴露出来的问题,研究加强辅导的重点问题和重点对象。每学年期末我们都会以多种方式倾听学生意见,研究下一学年进一步改革的思路和措施。比如说,我们在教学实践中看到不少学生把程序写出来了,却花了很长时间调不出来,成了学习中的“拦路虎”。我们想与其让学生花费很多时间去摸索,不如及时给予指导,在课程中添加讲授如何调试的内容,并且安排

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论