本科教育

教学研究

当前位置: 首页 >> 本科教育 >> 教学研究 >> 正文

【教学研究经典文献选读】南大陈道蓄教授:教学生提问和教学生答问,哪个更重要?

发布日期:2021-01-09    点击:


曾经有位高中毕业生问我:选择什么样的人生道路效率比较高?我被问住了,因为我觉得除了存心忽悠,恐怕这个问题没有答案。

汉语中将学术工作称为“做学问”,学问学问,学与问是密切关联的。我们这些经历过文化大革命的人都熟知一句话:“学‘毛著’(指毛泽东著作),要带着问题学”。这句话已随着历史远去,但不管学什么,能够带着问题学一定是很有效的学习方法。要想做到这一点,首先得能想到问题,提出问题。

多年前,下课时还总会有学生围着我问这问那,后来慢慢地,提问的学生越来越少,而且问题越来越聚焦于两类:“作业中的某个题怎么做”或者“某个题目在考试中会不会有”。

人在年幼时总是爱提问的。我碰到过的称得上“十万个为什么”的小朋友绝不止一两个(我的小孙女没上小学之前,总是上天入地问个不停)。以前有一本著名的英国科普刊物,叫New Scientists,经常发表一些家长替孩子转达的问题。一个6岁孩子问“饼干和面包都是面粉做的,为什么一个越放越硬,一个却越放越软”;还有一个4岁女孩问“狗知道自己是狗吗”(对研究动物行为的科学家而言,这个问题一点也不可笑)。等到我们的孩子稍微长大一点,就会一再被告诫:“别乱想,快做题!”于是,慢慢地“做题”变成了“刷题”,也很少有兴趣和心态自己想问题了。

几年前,一位国外著名大学的教学负责人应邀参加我国的院校评估,他在听了某“985”大学的课后发表了一通评论:“大学课堂从低到高可分为5级,最低一级是学生被动听课,依次向上是老师问学生,学生问老师,学生质疑老师,师生辩论”。大家可以想象得出他对当时课堂的评价是哪一级。

其实能提出问题是“人才”的基本素质之一,而且应该是主要素质之一。善于提问体现了两个方面的素质:有兴趣和敢思考。这样的素质并不完全是天生的,儿童的好奇心只是提供了一点“土壤”。能提出问题,特别是提出对自己“有启发”的问题,是需要在教育过程中引导的。“Critical Thinking(批判性思维)”在国外的很多学校中是一门重要课程,其主要目标就是引导学生提问。

我自己在上一门改革的计算机专业基础课“计算机问题求解”。学生学这门课的主要方式是阅读材料(教材),主要由学生自己看(“自我探索”),课堂的主要任务是引导学生深入思考(“深度引导”)。为了体现启发学生自己提出问题,上课用的PPT上有若干页只是用大号字给出的问题。平均每次课提出的问题大约在15~20个,积累下来超过1 000个问题,而且还不包括用小号字随处插入的问题。我不时会问学生:“你们看这段书时有没有想到这个问题”,很多时候多数学生回答没有,这说明已经产生了引导效果。

关于我提出的问题,这里可以举出一些例子:

(逻辑)为什么集合代数那一大堆公式和命题逻辑演算那一大堆公式“样子”很像,处理符号含义不同,形式上几乎都是对应的?

(无限集)我们用是否“排好队”描述无限集合是否为“可数集”(和自然数集合等势),为什么“......—3,—2,—1,0,1,2,3......”不能算“排好队”,也不能就此证明整数集是可数集?

(程序设计基础)变量是不是量?

(算法问题)为什么两个样子差不多的问题,一个很容易,一个却很难?如欧拉回路的判定与生成问题与哈密尔顿图的相应问题。

(排序课)都是采用divide-and-conquer策略,合并排序和快速排序有什么不同,你觉得为什么会产生这样的不同,带来的后果如何?

(图搜索)既然都是同样的遍历所有顶点的问题,为什么需要两个不同的算法?这与最小生成树问题同样流行两种算法的原因有什么不一样?

更多的例子是与当时的内容“自然地”相关的,目的还是引导学生“想到问题”,是否每个问题都有一致的答案并不重要。

我在开头提到的那位同学显然对自己想问的东西全然没有真正思考,所以自己也不清楚究竟要问什么。这样的问题与祈祷眼前突然出现个“魔法神杖”没有本质差别,也不可能获得真正的“学问”。事实上,并不是非要再加上一门关于教导学生开动脑筋的课程(我们的课已经太多了),引导学生提问应该是每门(值得上的)课程不可或缺的一部分。

有一次我在某大学听了一堂数据结构课,讲课老师应该是为了通过评估特意安排的,那堂课的内容是图的遍历:深度优先与广度优先算法。老师的课堂讲述非常细致,也很清晰。下课后我与任课老师进行了一些交流,我建议他算法过程不必讲这么细,因为书上有完整的算法过程,让学生自己看即可。然后我向他提了一个上面我提到的问题:既然同样针对的是“图中的顶点遍历问题”,为什么要煞费苦心地弄出两个算法来呢?这位老师一时没有反应。其实我相信绝对不是老师的水平问题,但这显然是课前没有准备。任课老师并没有想到此问题,也绝不认为学生可能提出这样的问题(算是“知己知彼”)。

我经常听到第一门程序设计课的老师说起“递归”是难点,却很少听到老师引导学生思考递归与数学归纳法本质上是否相似。学第一门程序设计课的学生刚刚经历过高考,对数学归纳法一定非常熟悉,如果有学生想到这个问题,那是否能继续问:为什么计算机出现以前只流行数学归纳法,递归解题却不流行呢?其实递归用起来足够“容易”,难点不是怎么用,而是引导学生认识其本质,使学生不觉得这有什么“不自然”。事实上,真有不少计算机专业的学生,直到毕业也没有搞清楚,如果不能用递归,怎么用循环解决“Hanoi Tower”问题。

我在这里想说的是,如果我们的老师没有养成一个经常给自己提问题的习惯,那么如何引导学生提出问题呢?
作者简介
陈道蓄,南京大学教授、博士生导师;近 10 年来,致力于计算机专业核心基础课程的教学改革,创建 了内容涵盖计算导论、离散数学、程序设计、数据结构以及计算机算法的全新课程“计算机问题求解”;同时积极 参与了中国工程教育专业认证体系的建立,该课程的建设思想充分考虑了对专业认证所要求的学习产出的支撑。

文章转自:

陈道蓄. 教学生提问和教学生答问,哪个更重要?[J].计算机教育,2021(2):优先出版.
文章转载链接:

https://mp.weixin.qq.com/s?__biz=MzA3NTMzMzMyNw==&mid=2649454756&idx=1&sn=e5279e558544a21e2bf669cbfa69f329&chksm=876df304b01a7a12ce84e6825036b0a1a3d7ac124a389d0f614a03b5f08aca0f99c223f65b66&mpshare=1&scene=1&srcid=0108WIUHDyQAJ2xHKob2m5Yu&sharer_sharetime=1610149635796&sharer_shareid=5b57222ab983116e672a1432aee5d1c6&version=3.1.0.3004&platform=win#rd