习而学的软工教育之驳Anran —— Ever
邹欣老师的博客在这里 http://www.cnblogs.com/xinz/archive/2012/01/08/2316717.html
Anran同学在他的文章里已经说了他的关于习而学的看法,而我的看法和他不同。我支持在工科的学科推行习而学的教育。
本身来说,工科就是已解决实际问题为目标的学科。如果一个工科的学生不知道实际问题而只知理论,那就是一个失败!
在Anran的博客里,他说,对于一个大学生,思想远比实践经验重要。我很认同这句话,但是我想问,在大学里,有哪些课是真的传授了思想?没有!所有的思想只能从实践中获得,思想是靠自己去悟的。怎么悟?那肯定不是坐在教室里听着老师在那里讲自己完全没有概念的东西吧?就像我们大二下的OO课,那是典型的学而习,听着老师讲这里应该如何如何,那里应该如何如何,可是自己根本就不知这个如何如何和那个如何如何有神区别,为什么要这样而不是那样。因为我们不懂,没有经验,老师讲的那就真的是天书了。悟,就在在有了一定的经验和知识的前提下,然后某一天,突然想通了,然后,就有了自己的思想。这么说应该没错吧。
习而学,就以Anran自己的为例,初中就已经自学编程,就像他本身所说,这是“习”,之后再高中的信息竞赛,了解了计算机运行的基本原理,这是“学”。从“学”这里,他知道了他原先所写程序有多烂。这就是一个习而学的过程。我们200多人中,没有几个大牛,可是Anran绝对是那几个大牛中的大牛!
再说我们普通的学生,那就是学而习了。进大学之前,虽然不会连计算机和计算器都分不清楚,可是大部分人对于写计算机这个学科绝对是一头雾水,甚至可以说就是和外行一样认为学计算机就是修电脑的。在这种情况下,学习那些枯燥的理论,对于学生能有什么帮助?
我想问一下,在我们200多人中,在大学之前完全没有编程基础的,只跟着学校的课程走,有能够达到Anran的水平的吗?或者说有哪些学生的水平还可以吗?如果有的话,那也是课下自己去实践了,这是绝对的。相信没有人会否认这一点。就算是再克隆出来一个他自己,能做到吗?既然如此,那么这算不算习而学呢?既然学生自己唯有课下去实践,才能水平提高,那么为什么不直接地把那些实践的课程调到开始呢?
我不否认知识的重要性,所以我也不否认学的重要性,相反的,我认为,学比习更加重要,但是在习而学和学而习这两种教育方式中,我更赞成习而学,而且习而学显然也更符合我们学习的规律。学是我们的目的,而习是达到目的必须的手段。
其实,虽然目前中国大学的教育很糟糕,但是课程设置上,还是有些习而学的影子的。就以北航6系来说吧,我们2010级是大一下开课,我们下一届就已经是大一上开课了,而C语言显然是一门实践课程(虽然课上并不怎么感觉实践),Java、C++等一些课程也是大二就可以选修了。但是显然的,目前的课程设置绝对的有问题,就像Anran在他的文章里写的一样,某些课程,比如物理实验、比如航概等等,这些课和我们的专业有半毛钱关系吗?然而却占用我们大量的时间和精力。Holy shit!
同样的,对于邹欣老师的课表,其中的物理实验,也应该去掉,甚至物理课也应该去掉,毕竟对于物理,我们只需了解,我认为,在初中和高中六年的学习中,我们已经掌握了我们应该掌握的物理常识。当然,对于硬件方向的学生,或者想写物理引擎的学生来说,物理是不可缺的,所以物理应该是一个选修课。
综上,我以为,习而学是更加适合工科的一种教育方式。习而学不会使得一个大学向技术学校靠拢,因为无论如何,我们的目的更透彻更明白的理解计算机,习只是我们的手段而已。