`
liuxinyu95
  • 浏览: 30053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一堂有趣的计算机课

阅读更多
昨天讨论了一些Computing at school的内容。受到Richard Bird在
Pearls of functional algorithm design一书中Saddleback search一章的启示,我这里抛砖引玉,给出一个我心目中的中学计算机课的例子。

教师:
同学们,早上好。想必你们都吃过了营养丰富的早餐。现在该补充一些维生素了。
同学们每人都会得到一串葡萄和几个盘子。今天我们要考虑一个有趣的问题:

    如何吃到最大的10粒葡萄。

明明:老师,我想出了一个办法。

教师:说说看

明明:
我先找出最大的一粒葡萄,然后吃到肚子里。然后,我在剩下的葡萄中找到最大的,吃掉。
重复这个过程。当我吃到第10粒葡萄时就可以了。

教师:
很好,但是有一个问题,明明同学需要向其他小朋友详细解释一下。你如何才能找到
最大的那粒葡萄来吃掉?

明明:...

小美:老师,我想到了如何找到最大葡萄的办法了。

教师:说说看

小美:
我先随便找两粒葡萄,比较它们的大小,然后把小的那粒放到盘子里。把较大的那粒拿在手里。然后,我继续从葡萄串上摘一粒葡萄,和手里的那粒比较。如果新的这粒大,我就把原来手里的那粒葡萄放到盘子里,否则,就把新的这粒放到盘子里。重复这个步骤,最后我手里剩下的就是最大的葡萄,把它吃掉就可以了。

教师:非常好!明明,小美,你们两个可以把自己的那串葡萄吃掉了。
同学们,你们还有别的办法能吃到最大的10粒葡萄么?

强强:老师,我想到了一个办法

教师:说说看

强强:
老师,我们上体育课的时候,不是从矮到高站成一列么?所以我觉得,如果我把葡萄也从小到大排成一列。然后把最后面的10粒葡萄吃掉就可以了。

教师:
这个办法是可行的,可是如何让葡萄像小朋友们一样,从小到大排成一列呢?这个问题很有趣,我们可以单独在其他课程里仔细学习这个问题。这个问题名叫“排序”,是计算机科学中非常重要,非常基本的一个问题。今天我们暂时先不讨论他。强强小朋友,你可以把自己的葡萄吃掉了。
不过请你按照自己想的方法试试看。

同学们,你们谁还能想到别的方法?

小朋友:...

教师:我给大家说一个方法。我们可以随便在这串葡萄中选择一个,把所有比这粒小的葡萄放到红色盘子里,把所有比这个葡萄大,连同这粒葡萄的放到蓝色盘子里。然后我们数数蓝色盘子中葡萄的个数,如果超过10个,我们只需要吃掉蓝色盘子中最大的10粒葡萄就可以了。否则,我们要吃掉所有蓝色盘子里的葡萄,比如x粒,然后再吃掉红色盘子中的最大的10-x粒葡萄就可以了。

小朋友:... 我们不大明白

教师:
同学们,我刚才讲的方法,使用了计算机科学中非常重要的递归思想。的确有些难。不过我们来亲自做个实验吧。乐乐,你来按照我说的方法给大家表演一下。

乐乐:嗯,我首先找到一粒葡萄,放在手里,然后我把剩下的每粒葡萄和这粒比较。小的放到红色盘子里,大的放到蓝色。好了,现在有14粒葡萄在蓝色盘子里。我怎么吃掉其中最大的10粒呢?

乐乐:
老师,我明白了。现在这个蓝色的盘子,就好比刚才那串大葡萄,所以我只要重复刚才的步骤。
我从蓝色盘子里选一个,把比它小的放到黄色盘子里。比它大的放到绿色盘子里。现在绿色盘子里只有6粒,我把它们全部吃掉。

乐乐:
现在我要吃掉黄色盘子里最大的4粒葡萄就可以了。老师,我完全明白了。

老师:
很好,小朋友们,你们现在已经学习了,计算机科学中的k选择问题。现在请大家像乐乐小朋友一样,按照这个步骤吃掉最大的10粒葡萄。

小朋友:...啊呜,啊呜吃葡萄....

老师:
小朋友们,现在作为练习,请大家吃掉剩下葡萄中最小的12粒葡萄。

小朋友:...啊呜,啊呜....

老师:小朋友们,你们吃到了可口的葡萄,也学习了计算机科学中的一道有趣的题目。
计算机科学,就是研究如何制定规则,和设计操作,从而解决问题的科学。
今天的课就到这里。同学们,下课。
分享到:
评论

相关推荐

    如何上好每一堂计算机课.pdf

    如何上好每一堂计算机课.pdf

    大学计算机基础课程第一堂课的教学目的.doc

    大学计算机基础课程第一堂课的教学目的 摘 要:分析了大学一年级新生对计算机的认识误区,引导他们正确地认识和使用计算机, 让他们理解计算机作为"工具"地位的意义,帮助他们提高学习计算机知识的兴趣,使他 们逐步...

    如何上好一堂-python-编程课-.docx

    如何上好一堂 python 编程课 近年来,人工智能科学知识普及推广大潮席卷全国,中小学教师作为基础教育核心主体之一对推动人工智能教育发展有着至关重要的作用。2017 年人工智能技术就上升为国家战略,明确提出要在 ...

    学通Java的24堂课

    第1堂课 java概述 3 视频讲解:31分钟 1.1 java简介 4 1.1.1 java发展历史 4 1.1.2 java的几个版本 5 1.1.3 java应用领域 6 1.1.4 java项目成功案例 6 1.1.5 怎样学好java 8 1.2 环境搭建 8 1.2.1 jdk下载 ...

    一堂很有价值的美业总裁必修课视频课程下载整理.zip

    一堂很有价值的美业总裁必修课【视频课程】下载整理.zip

    教案:计算机病毒.doc

    我觉得应该充分调动学生的积极性、参 与性,充分运用他们的思考能力,才能上一堂好课。于是我根据初中一年级孩子的学习 特点,对教材作认真的解读和适当的重组后,决定采用头脑风暴的形式,利用思维导图 来引导学生...

    WORD贺卡排版的计算机教学公开课

    一堂关于WORD贺卡排版的公开课教学内容

    计算机二级竞赛office高频考点精讲

    计算机二级Word考点精讲(六),mp4I L--【一堂课学会抠图】用PS抠图(赠送课).mp4 I F-02.Excel专题直播【完】 I H…01计算机二级Excel考点精讲(一),mp4I I H…02计算机二级Excel考点精讲(二).mp4I F…03计算机二级...

    山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》.doc

    山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》.doc

    《计算机硬件系统》教学设计.docx

    《计算机硬件系统》教学设计 一、教材分析 【教材地位和作用】 这节课是八年(上)信息技术第一单元第一节内容,在教材中这一节叫"计算机之形——计算机硬件系统"。是对整个计算机硬件系统的介绍,它是针对初中学生...

    2021年计算机应用基础练习题库与答案.pdf

    2021年计算机应用基础练习题库与答案.pdf

    计算机硬件与计算机发展史教案.doc

    教学设计 教学时间:2015年10月8日——2015年10月12日 任课教师:欧发兵、周骑桥、向洪 【教学内容分析】 【教学对象分析】 本节课是面对新生的一堂课,大部分新生是来自农村。对计算机的接触比较少,但大部 分同学...

    东北大学计算机网络课件

    计算机网络基础,12级上课使用,杜荔老师是出过教材的,课讲得非常之好,这课件是她每堂课前后都修改过的因此名字里都有一个“新”字

    Computer-Vision:汉城大学的一堂课

    计算机视觉 汉城大学的一堂课

    《计算机应用基础》教案-第1章计算机基础知识.doc

    " " " "观看视频"计算机应 " "五、开拓思维,同时提出新的问题(激趣法) "用领域" " "教师提出预习问题,让学生产生继续探究、学习的愿" " "望,整堂课带着下一堂课的悬念结束,为学习下一结" " "内容做好铺垫。...

    活动1--选购计算机-教学设计.doc

    教" " "学方式奶油小生,学生学习兴趣大大提高,是一堂成功的课 " ----------------------- 活动1--选购计算机-教学设计全文共2页,当前为第1页。 活动1--选购计算机-教学设计全文共2页,当前为第2页。

    《计算机硬件组成》教学设计(1).doc

    本节课是其中的硬件系统这一部分,主要介 绍计算机由哪些硬件组成,及其各个部件的功能。 2.教学目标的确立 知识与技能: (1)在观察实物及动手实践的基础上使学生对计算机硬件系统有直观的认识,了解 计算机的...

    计算机基础教案完整版.docx

    开拓思维,同时提出新的问题(2分钟)(激趣法) 教师提出预习问题,让学生产生继续探究、学习的愿望,整堂课带着下一堂课的悬念结束,为学习下一结内容做好铺垫。 学生回顾自己在日常生活中计算机的作用情况,并...

    计算机发展教学设计.doc

    《计算机发展》教学设计 背景材料: 1946年,第一台计算机诞生,在短短几十年的时间里,计算机发生了天翻地覆的变化。其功 能从简单到复杂、从低级到高级,形态也从巨型机器到现在个人电脑。目前,计算机已经 渗透到人类...

    Vamos a la Clase:在课间休息时为下一堂课做好准备-开源

    很多年纪较大的学生使用侮辱性的文件名或将NSFW照片留在桌子上,以防止课间休息后的下一堂课遇到这类问题,我决定他们应将文件保存在documents文件夹中(/ home / students / documents ),因为该脚本在休会期间...

Global site tag (gtag.js) - Google Analytics