【学生来信】
我是一名三线城市二本的计算机系的学生,现在是准大三的学生。现在有两个问题摆在面前,不知所措,希望您能给点建议。
第一个就是计算机专业的专业课太多了,繁多的编程语言课之外还有数据库、操作系统、计算机网络、计算机组成原理、接口、算法、数据结构,这些课该怎么学呢?刚了您的博文《大学内的“学无用处论”》,感觉您说的很对,大学的课都应该学,但是有一个问题就是如果都学,那么估计很难避免泛泛而过的结局(我不是什么天才,我们的老师虽然有负责任的老师,但是就我个人学数据库原理的经历而言,我感觉学完所有这些真的很难),怎么解决这个问题,老师能给点意见吗??
另外一个问题是我从去年暑假开始到现在一直在学以php为中心的web开发,学到今天也算是学到不少东西,web前端、后端,数据库等,中间也做了几个成或没成的项目,但越来越感觉到没法继续下去了,在学校做的东西很多时候都是用户很少,而且过程不完整的(基本是从策划到美工到程序员一锅烩),想继续深入却没有头绪,同时因为一直以来的在web方面的时间投入,我现在只有一些 标准c/c++ 和零散的一些 算法和数据结构的基础,想转变主攻方向,但是却不知道该怎么转,转了之后又怕把现有的给丢弃、浪费了时间。老师,能不能给我点意见,该怎么面对现在的情况,像之前那种学法,合适吗?我现在该转型吗?如果要转,怎么转呢??
【我的答复】
第一个问题问得很好,我想展开来对此多说一些。
对计算机专业,你列出了那么一大堆课程,其实不光是计算机专业,哪个专业不是有很多课程的呢?这个问题其实也困扰了我很久,当时我想在自己的课程中给学生更多的学习任务时,不敢这样去做,生怕让学生的负担太重而吃不消。首先想到的是中外的区别。在很长的一段时间,我考察过国外不同层次的高校的培养方案(上网考察),通过看书了解了国外的教学模式,也深入了解过自CC2001以后的IEEE-CS/ACM的培养方案的建议(我国的计算机专业教学指导委员会制定的规范与之相符,并且国内各大学的培养方案的核心课程都是在此建议的框架内制定的)。所以,这样的安排,并不是国内的高校有意增加课程所致。
有人会搬出中国学生要多学的外语、政治课等来,这算是中国学生的额外负担了。实际上,在目前的发展阶段,我国大学生掌握一门外语是必须的。其他专业不表,计算机专业的学生不会看英文文档,不会与国外同行简单交流,在这个平坦的世界中,是无法立足的。现在各高校普遍地将英语四级与毕业证脱了钩,采取分级教学的模式,也不是所有学生都要在外语方面投入那么多精力了。这是一个减轻学生负担的好的现象。要说外语学习负担重,完全是学习方法不对头,这点不再多表。教育部列出了几门必修的“政治”课(国外也有类似的要求,但实施的办法不一样,不一定是用课程的形式要求),要在大学前两年占用一些学时。但据我所知,在政治课最多的时候,大概一周4个学时,在课堂上认真听讲或将课本看一遍的已经是不错了,顶多在考前突击几天而已。所以,这是国内学生的额外负担所在,但一个是必须的,负担在减轻,另一个也没有到了要压垮学生的程度。
在这一番的考察当中,我却发现一个事实:国外大学生的学习负担、压力要远大于国内的大学生,国外大学生在学习的投入上要远多于国内的大学生,我们的学生投入不够有各种各样的原因,但在这样一个时期,再多一些的投入是可以的,也是必要的。这也成了后来我坚定地在我的课堂中要求学生多投入,在课外学习的要求上提出更多要求的依据。事实证明,一旦学生在投入之后,学习找到感觉,他会自己更多投入,与此同时,人的整个精神面貌得以改善,课外的活动、其他素质的拓展也不会落下。
回到你的问题上来,那么多的课程,如何去学?其实这么多的课程,并不是密集在同一时间段内开出的。按照各课程的关系,每学期开多少门课,要用多少学时,估多少实验,学生应该在课外自己匹配多少学时,有几门课要考试,这在制定培养方案时都要考虑进去的。所以,你也不必慌乱,课程安排有节奏,你也找出你学习的节奏即可。每个学期最核心的三、四门课程,提高听讲的效率(预习、复习之类的手段根据自己的习惯定),及时地巩固,建议手边要有一两本其他版本的教科书做参考(我的学生中,能做到课后将讲过的教材上的相关内容看一下的同学都不算多,不知你的情况怎样)。对于需要做练习的课程,如数学、算法类的课程,要做练习题,对需要实践的,可能课程有实验,要认真做,根据自己的情况,再拓展一些实践。在大学的学习,一定要有自己个性的安排的。可以是和刚刚讲过的内容相关的小实验,也可以同步地完成一个和课程相关的“大”实践,例如学操作系统时,分析开源操作系统的源码,学编译系统时,做一个简单的编译系统等。由于各种原因,课程只解决基本问题,课外拓展对同学们而言是必要的。不在于一时投入了多少,而在于持续地、有节奏、有计划地执行,这要有一个良好的习惯。这样的安排,在我们正常的一天学习8-10小时是可以做到的。不至于像传说中的哈佛,图书馆是通宵开放的,不少人晚上在图书馆趴桌子上打个盹(这也是不健康的生活方式)。所以,对于你学数据库的感受,是不是该做的环节没有做,该有的实验没有体会进去的缘故。总之,学习需要投入,这点要保证,学习的方法、习惯要讲究,应该从这个自己的角度考虑问题,而不是看着貌似课程多了、难了,就想些客观的原因。
关于第二个问题。能在课外安排自己的学习,非常好的事情。如果说转,转到哪个方向是关键,只要是自己感兴趣的,就可以转,不要有其他顾虑。转了以后,现在已经做过的并不是浪费了时间,它给你多少体验,给了你多少放眼看周围世界的机会,这是在学习期间,尤其是低年级时学习的最宝贵的收获。你目前一锅烩的经历,是很好的经历,不必纠结。结合已经了解到的信息、兴趣、当前可以利用的条件,以及技术和市场的前景,或在现在的基础上深入,或转哪个方向,这应该由你回答,到了高年级,应该定下主攻方向。
祝你能抛开顾虑,放手为自己安排出有效的学习来。