【采访时间】2015年5月6日

陈斌,北京大学地球与空间科学学院遥感与地理信息系统研究所副教授,主要研究方向为空间信息分布式计算、分布式虚拟地理环境。在教学方面,陈斌老师负责本科生课程《离散数学》和《数据结构与算法》、研究生课程《空间数据库》。

【引言】

“数据结构与算法”,一门听起来不太“接地气”的课程。虽贵为理科院系基础必修课,但数算在培养学生兴趣、激发学习热情、改善教学效果等方面,依然“路漫漫其修远兮”。第一年接手数算,半学期便受好评;令许多同学开学时还望而生畏,半学期就乐在其中——这些都是怎样做到的?带着疑问,地空学院记者团专访“数据结构与算法”主讲教师陈斌,试图寻找学生纷纷“点赞”背后的秘密。

“我担心用Python讲数算会不会太简单?”

“我喜欢教计算机类的课程”陈斌爽朗地笑着,“看到学院征集新数算老师的通知,我毫不犹豫报了名。”

在他看来,数算这门课程首先要解决“预备知识贫富差距过大”带来的问题。有的同学高中时候就可以熟练编程,便会觉得课程内容很简单;而大部分同学之前根本没有接触过数据结构或算法,甚至对计算机知之甚少。如果一开始就进行快节奏的教学,会有相当一部分同学跟不上,造成两极分化。而有同学“掉队”是他十分不希望看到的。

“其实不只是地空,信科也是这样,大家水平参差不齐。我本科和研究生都是计算机专业,所以语言障碍造成的学算法的痛苦我也懂得。”为了解放在C与C++的语法、指针中挣扎的同学,他经过一番找寻,最终大胆地选择了语法简洁、结构清晰、入门门槛低的Python。

“C和C++很强大很灵活,但正因为它们太强大太灵活,对初学者会造成一定的困扰。指针、迭代器……光是这些就足够晕一阵子了,花一个小时编程可能五十分钟奉献给了捕捉语法bug。”相比之下,Python是动态语言,不提供指针这些底层机制,并且强制缩进以减少语句分块错误。因此使用Python语言,花半个小时编程,那么这半个小时就是纯粹地做算法,这样可以为学生减少很多压力,更接近课程本身的目的。“我有点担心用Python来讲,是不是数算会太简单了?”他半开玩笑地说。

随后,他便在教学小组讨论会上提出用Python的想法。老师们纷纷赞同,化院的数算老师迅速决定也选择Python作为本学期授课语言。“于是我又多了一个‘盟友’!”陈斌兴奋地说。

“数算不是编程,课件也是动态的。”

接下数算后,首要任务是对课程进行定位。陈斌第一堂课便宣布“数算课不是一门编程课”。这直接颠覆了大多数人“数算课就是学编程”的印象。他认为,这门课的真正目的在于教会同学们如何理解、组织、处理数据。

“任何一门自然科学、基础科学都需要处理数据。大家不是计算机、软件专业,即使学GIS,也不是人人将来都要去编程的。所以,我希望大家通过数算课能够掌握基本概念和思维方法,日后知道碰到什么问题去翻哪本书,这样就够了。毕竟我们不是蓝翔,不需要培养你们的‘特定专业技能’。”

课程定好位,陈斌便开始着手准备课件。“我的PPT是现讲现写的。”现讲现写可以保证每节课呈现的都是“新鲜出炉”的知识,而且是“量身定做”款。他根据反馈及时增删教学内容或调整教学计划,让每一位同学感觉自己的想法是有价值有反馈的,从而调动了大家的积极性。“然而这有好处也有坏处。”他露出一丝俏皮。“现做现卖”有时会导致系统性完备性不够。不过,通过这种方式自己有时也会收获意想不到的惊喜。“比如那些棵树!”,他兴奋地说。

“老师应该让学生爱上听课。”

陈斌从来不点名。他认为如果学生不来上课,非常重要的一个原因是自己讲得不够有吸引力。除了增添趣味性,把握难易程度也很重要。即从简单入手,根据学生的掌握情况加快进程。不能太难,让学习吃力的同学失去信心;也不能太简单,让基础较好的同学不重视。

一句话,老师应该让学生想来上课,并且听进去课。

“走神?那是一种自然规律嘛。慕课就建议视频课程不要超过十五分钟,这不是等于变相承认了人集中精力的时间只有十五分钟?”他随之笑开了,“然而我们不能只上十五分钟就下课啊,这就要求老师提升课堂吸引力。”

他课上提问的形式十分灵活,有时在微信群里发红包,抢到的同学阐述自己的观点;有时直接在检查谁起得最早谁睡得最晚,要他们来讲讲自己的看法。根本用意是尽量让同学们参与教学过程,保持思考,丰富教学形式,活跃课堂气氛。

为了能让学生更深刻地理解数据结构中得基本概念,陈斌想了很多方法。例如在讲递归算法的课上,烧脑的“递归型”科幻电影便像断了线的珠子般噼里啪啦掉进课堂里。《前目的地》中男主角不断生下自己的情节与递归不停调用自身的特点惊人地吻合,是“递归算法”一个鲜活的例子。相似的思想换上艺术的外衣,华丽地挑战大家的视觉、听觉和脑力,这怎能不让人印象深刻?

除了课上,课后作业的形式也有创新。还是在讲到递归算法时,他留了一份特殊的作业:利用Python的turtle工具画一棵分形树。“分形树是可视化递归算法最直观的表现方式,我是想通过这种有趣的形式让大家更好地理解递归的概念。不过这次作业,学生的创造力远远超乎我的想象!”陈斌笑道。不少学生从此摇身一变成为指尖上的绘画家,利用程序代码描绘起湖光塔影来。后来,陈斌将同学们的作品汇总整理,发布到了自己的微信平台上,在全院上下产生了不小的影响。

“微信工作时挂在电脑,闲暇时挂在手机。”

“我儿子抱怨我总是看手机。”陈斌既欢乐又无奈地说。

在课外辅导方面,陈斌可谓是做到了极致。为了更及时地答疑,他的微信工作时切到电脑,闲暇时换到手机。一个微信群,几乎提供“24小时咨询服务”,不分问题难易,不分专业或生活,有问必答,激起了无数智慧火花。老师、助教的不懈投入,带动了全班一百多人的学习热情,大家在这样的气氛中交流着、进步着。

万事开头难。刚开学时,许多同学对数算这门课比较畏惧。“所以刚开学的那段时间非常重要。”他坦言道,“开始时是心理适应期,需要老师的热心和耐心陪伴来度过。”如果得不到及时帮助,有些同学会因为一点小的问题而放弃对整个问题的解决,甚至放弃这门课程的学习。“所以这些时间的付出都是值得的。”

“其实提问,不管是面对面还是通过互联网,都需要勇气。所以我们要通过鼓励来增长这种勇气。”他抿嘴笑了,“所以我觉得下课来问我问题的同学都很勇敢啊!同学们的很多有创意的想法也会让我有意外惊喜,教学相长,付出和收获总是相伴相生的。或许这也是我做下去的动力吧!老师的职责正在于此啊:在同学不懂得时候帮助理解,在同学有成绩的时候积极鼓励,在同学有想法的时候把他们推得更高更远。”话语里有些欣慰。

“其实想学好一门课并不难!”

如何教好一门课?陈斌不假思索地回答:“首先,要从一开始郑重声明:‘这门课挺容易的!’”

带过几门课程,他对学习与教学也总结出了一些独到见解:

首先,要学会站在一定的高度上俯瞰知识体系,不要把自己锁死在某一道题目中,不要被一些次要的东西干扰,用最浅显的道理去理解概念。“Python的优越性再次展现:它可以将来自语言的干扰降到最低程度,从而专注于对算法本身的研究。”

其次便是要切实的达到三个标准:第一步,学会判断是非,即这是什么,不是什么;第二步,理解概念的基本内涵,这是什么样的;第三步,把这几个概念结合起来会怎样,该怎么用。

最后,重视知识的历史发展过程和知识之间的联系。知识之间是紧密关联的,并不是“隔行如隔山”,而是交叉学科更具优势;了解知识历史发展过程可以帮我们更好地梳理知识脉络,掌握知识框架,从而加深对知识的理解。

【老师寄语】

无论是科学探索还是技术创新,解决问题的模式总是相近的,我希望在数算这门课上,喜欢或是不那么喜欢编程的同学,都能发现、掌握和运用这些模式,感受数据和算法之美,体验信息的艺术,享受学习的过程。

【记者】

陈春含,北京大学地球与空间科学学院2014级本科生

黄  翔,北京大学地球与空间科学学院2014级本科生

运乃丹,北京大学地球与空间科学学院2014级本科生

python 北京大学陈斌教授_“其实数算可以很简单” ——专访北大地空学院陈斌...相关推荐

  1. python 北京大学陈斌教授_陈斌 - 北京大学副教授 | 到「在行」来约见我

    行家自述 作为专注教育的大学教师,经过多年教学实践改革探索,逐渐形成了"专业教育.通识教育.创新教育"融会贯通.互相促进的教学理念,不仅形成了从专业基础课到通识教育课,再到创新教育 ...

  2. 零基础学python裴帅帅_人工智能时代,爬虫如此简单。

    但我们伟大的苹果之父史蒂夫·乔布斯说,「每个人都应该学习编程,因为它教会你思考的方式」. 同时,英国牛津大学研究称,未来20年英国35%现有工作将自动化. 日本研究人员称,在未来的十到二十年之,日本将 ...

  3. python 北京大学陈斌教授_【慕课】Python 语言基础与应用(第2次开课)

    慕课<Python语言基础与应用>又开新学期啦! 3月14日第2次开课 编程语言排行榜首,人工智能时代头牌语言 Python 零基础也要学! 本课基于主讲教师在北京大学讲授数据结构与算法课 ...

  4. python中国剩余定理公式_《孙子算经》之物不知数题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

  5. python社会网络分析教授_科学网—python 社会网络分析工具之networkx - 郗强的博文...

    1.networkx 2.igraph 3.SNAP 1.networkx NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网 ...

  6. python新特性赋值_变量与赋值_Python入门视频课程_Python视频-51CTO学院

    老男孩教育的PYTHON自动化开发课程自2013年第1期到现在已经走到了第12期,2年半的时间里,我们每一期都在对课程细节进行不同程度的优化,课程总时长也从最开始的2个月延长至第12期的五到六月,更新 ...

  7. python代码手机壁纸_听说最近有个很火的姓氏壁纸?10行Python代码搞定它!

    昨天Paradoxical网上冲浪的时候,看到了一篇文章说最近有个很火的姓氏壁纸,就像下面的图这样. 看起来不错鸭,但我不会做--嘿嘿,可以去拜托小哥哥嘛~ 我:小哥哥,给你看个壁纸. 惨绿青年:傻傻 ...

  8. python 工资管理软件_智慧职教云课堂2020Python程序设计(深圳信息职业技术学院)题目答案...

    智慧职教云课堂2020Python程序设计(深圳信息职业技术学院)题目答案 更新时间:2020-11-23 20:41点击: 智慧职教云课堂2020Python程序设计(深圳信息职业技术学院)题目答案 ...

  9. python绘制饼状图图例_Python图表绘制很简单,一文带你学会如何生成带图例的饼图...

    matplotlib库,作为Python数据可视化的常用库和经典库,咱们已经探讨了多次,并了解了内部多个函数的使用,上次咱们聊了如何在图表中添加各种样式的图例,今天呢,咱们接着上次的内容继续深入聊聊, ...

最新文章

  1. STM32 内存管理实验
  2. 【学习笔记】Android 图像处理
  3. µVISION: Error: Encountered an improper argument
  4. 2017年5个网络行业快速发展技术趋势
  5. 栅格像元做地理坐标映射后的坐标值是像元中心点还是其他位置?
  6. ajax传值controller怎么写,ajax如何传递参数给controller
  7. 通过链表深入理解Java的引用和对象
  8. C++字符串处理封装类String
  9. Composer + thinkphp5.1安装与使用
  10. 树莓派安装smbus_树莓派安装wiringPi,BCM2835,以及python的RPI.GPIO
  11. 异速联服务器配置 虚拟机,异速联服务器配置要求
  12. MySQL 关于时间设置注意事项
  13. 好的设计的10个原则
  14. U盘删除附带的CD驱动器内的数据
  15. 诈金花游戏单机版 附开源地址
  16. php 亚马逊关键字排名,亚马逊提升关键词排名的方法
  17. 再读德鲁克#2 如何提升生产率
  18. 现货黄金实时行情给我们的启示
  19. 2-2 图像算数操作—OpenCV-Python教程翻译
  20. 大众点评自己店铺怎么删除

热门文章

  1. 树莓派自动挂载usb移动存储设备
  2. 用ntdsutil来清除无效的DC信息
  3. 顶级配置华硕笔记本电脑900元清仓咯
  4. vlhub_fastjson1.2.45
  5. the method to speed up your app
  6. 嵌入式Linux学习路线图
  7. soildworks 2020安装教程。(安装solidworks提示SOLIDWORKS Electrical无法连接到 SQL Server)
  8. 【Thingsboard】源码分析:OTA 更新
  9. 题解1202Pell数列
  10. ucosii/iii实时嵌入式操作系统任务切换与中断管理深入解析