如何在计算机科学基础班失败
计算机科学基础班进行了这么久,并不是没有失败的案例的。总的说来,大部分学生成功地掌握了重要的思维,而极少数失败的情况起初有点难以理解。经过分析,发现了这样一些规律:
1. 成功掌握课程内容,跟人的知识基础几乎没有关系。学生不需要良好的数学基础,不需要任何编程基础。我所要求的数学基础,是知道“2 * 3 等于 6”这样的小学数学。成功毕业的同学里面,包含了各种背景,有医生,律师,产品经理,水电工,印钞厂工人,卖酒的商人…… 当然,也有在职程序员和计算机博士已经毕业的人,只要用心都能学会。
2. 成功的案例都是虚心并且愿意花心思在这上面的人。有极少数失败的案例,是报名之后却不愿意花心思的人。世上无难事,只怕有心人。我目前还没有方法让一个不用心的人顺利掌握课程内容。如果不用心,不管学什么都会很难,教你的老师也会很累,再好的老师遇到这样的学生也只有放弃。我发现学费的价格与人的态度有挺大关系,学费低了容易招来不愿意花心思,不珍惜学习机会的人。心想随便试一下,态度就不认真了。
不用心的学生的一个特点就是,之前反复练习过的思想和原理,忽然会在下一次练习的时候完全忘记了一样。耐心跟他重复讲过的内容,纠正之后,又会在不久之后完全失去,甚至可以刚说了马上就不记得。因为心理只是完成任务一样,不用心去理解自己在做什么,感觉是想凑对了事。就像一个听写机器,你说什么他就写什么,没有思考。
因为计算机科学基础班的教学方式提供了提问的方便,对于不用心的人容易助长依赖性。练习中的每一步都发信息来问,每一步都想直接得到答案,而不自己去摸索和思考,以至于很多时候东西喂到嘴边还不知道咬。有的人写代码就像写文章,跟他说这里没对,才过一分钟又发来,“这下对了吗?” 好像他做的事情是为了凑对结果,让老师满意,而不是自己学到东西。发现这种情况,有的提醒之后有所改进,但有的提醒之后反而态度变得不好,开始表现出不尊重,那就无法避免地失败了。这种情况对于老师的时间和精力都是一种浪费和不尊重。
这种情况在大学里是不会发生的,因为大学的作业只有一次机会提交。教授是不会看学生作业的,助教给打个分就了事,根本不会这么来来回回地指点。除了上课时间和每星期大概一小时的办公时间,平时你是根本无法联系到教授的。相对于大学,我的方式是一种好很多的教学设计,然而极少数情况下,这种好心的设计带来的是相反的结果:不珍惜和不尊重。
3. 成功而顺利的案例,往往是愿意放下已有的思维,从头开始的人。极少数失败的案例,似乎有某种封闭心理,习惯性或固执地用已有的思维方式来“解释”教学的内容。比如中学的数学,其它的编程理念,道听途说的一些东西。所以有极少数的学生学完了课程,却似乎没学到什么,因为他们太执着于保留原来的思维,多次提醒之后仍然无法改变。
在心理上,他们把已经会的东西放在很高的地位,而没有虚心理解和吸收我教的东西。其中一个现象就是,他们会问我:“我这样理解对不对?…… ” 接着是对自己思想的大段阐述,或者画一些复杂的图,把我讲的东西用他自己的语言翻译了一遍,夹杂着很多其它地方学来的术语,或者自己别出心裁。为什么有人想要跟我学东西,不仔细理解和吸收我辛苦总结出来的内容,却期望我去理解他对此的“理解”?
实话说,我是看不懂这些“我的理解”的,因为那完全不是我教的方式,我也没有时间和精力去看别人大段的论述。看这些东西对于我的思维是一种干扰,所以大段的自然语言描述,我一般是不看的。
这里有一个“什么是本质”,“什么是基础”的问题。顺利的方式是用本质而基础的思想去解释不那么基础的内容或者术语,而不是反过来。你只能用简单正确的理论去解释复杂错误的理论,而不是用复杂错误的理论来解释简单正确的。
