此文并不是光谈现象的,我们要透过问题思索本质。
上次与西交的同学谈了一会儿,聊了一些关于西安交通大学(XJTU)与浙江大学(ZJU)在计算机专业的一些区别与见解。对了,我是软件工程(XJTUSE)的大二本科生。
首先,理论基础、工程经验、科研能力,无论从哪个方面看,ZJU CS,SE的同学的综合实力是强于 XJTU 的,甚至让我有一种高了整整一档的感觉。为什么会这样呢?
首先声明,我没有任何抹黑XJTU而捧ZJU的意思。ZJU的一些做法似乎是值得学习的。
思索其原因,我认为可能有如下原因导致XJTUSE的发展迟滞。
XJTUSE的专业课缺乏一种紧迫感。
我并没有对紧迫感的来源作任何的假设,老师、同学,或者是自己,都可以是紧迫感的来源。
从前只是单纯地认为,同学水平不高是因为老师授课质量不佳。
现在看来并非是这样。
生活在各种assignment、project、lab之下,deadline可谓是每周都有若干个,而且这些任务直接按照一定比例计算最终分数,可谓是每分必争。这样的事情也发生在PKU这样中国顶尖大学里。
并不是说 XJTU 就没有这样的制度,是有的。
但是,相比之下……
关于任务的开放性,这个我曾经问过老师, 为什么作业的问题那么死板无聊,老师给了我一个回答:这门课程只是为了学习语言,看来在课程设计的时候就没有让学生开放性思考的考量。
就我个人认为,我们没有必要花长达一个学期的时间去学习一门编程语言,太浪费了。即便是系统性地学习也不应该有如此高的学习成本。实际上,考前抱佛脚也不是什么秘密了。实际上,掌握一门语言,这个课程要求是相当尴尬的,因为如果要讲得深是很难的,通常要涉及非常深的设计,另外还可能会涉及很多计算机底层的知识;如果要讲得浅又是过于安逸的,空余大把时间休闲、刷手机什么的同样也不是什么秘密。
不过XJTUSE的课程作业也不是一无是处的,至少我肯定大作业的存在意义。大作业简直就是提升同学水平的一大利器。原来啥都不会、一脸懵逼的同学们经过了大作业的洗礼,或多或少都有一些开化。
那么深入思考一番,大作业与平时作业究竟有什么区别呢?为什么大作业的成效会如此好?难道就因为它大?
究其原因,
那么很自然地可以得出改良平时任务的指导思想:驱动、开放、挑战。
缺乏紧迫感的另一方面来自于课程设计:
看来不仅是同学不急,老师不急,连学院也不急。
首先,XJTUSE花整整三学期专门上编程语言课,且不谈其在我眼中成效甚微,想必历届学生都是有目共睹的。且,从课程名称上看,其实是看不出具体的内容的
课程名 | 实际上 |
---|---|
程序设计方法 | C |
面向对象的程序设计方法 | C++ |
Java Web应用开发 | Java |
这里需要注意的一件很有趣的事情是,冠以 Java Web 之名的课程,其绝大多数时间在讲 Java 本身, 涉及真正的 Java Web开发的课时寥寥一笔带过,就我个人的看法,这是偏题的,尽管Java是Java Web的基础,但是很明显,课时分配有很大的问题。
说到课时分配,C,C++的授课进度更是让人耳目一新,前期慢吞吞,似乎是给我们充足的时间去理解,让人昏昏欲睡。后期赶进度,给人一副强行讲完的感觉,授课且如此不注重质量,简直就是一个软件开发团队管理进度的反面典型。
当然,如果说大一的时间是可以肆意挥霍,无须过于认真,那我也无话可说。比如ZJU的通识课也给ZJU的同学这样一个印象。然而这显然是不符合XJTU一贯的风格的。
对于经典的工科来说,其理论体系已经相当稳固,按部就班地学习即可成为人才;反观以计算机代表的新兴工科,其不断发展的体系使得院校的教学难度大大提高。学校现在搞不好是正常的,不能太过苛责。不过我们讲道理,不能放着BUG不管,这也是我的职业操守。