2009.12.17
转自 左飞
如果你是一名本科在校生的话,下面这些内容可能对你大有裨益。这些内容主要评论了一下大学本科计算机专业的那些必修课,给大家提些学习上的建议。
    其实每门课程都是有其存在的意义的,我这里所评论的课程价值是以你未来从事编程相关工作为前提来谈的,如果你连这个都无法理解,我劝你也甭浪费时间继续往下看了。
   
    1、大学物理、大学物理实验——纯属浪费时间啊,物理知识高深莫测,对于推动世界发展至关重要,但是如果未来不从事物理研究和教学工作,整天研究些大学物理有啥用呢,中学物理很多东西都和日常生活息息相关,属于常识性东西。大学物理里都是啥?用高数那些东西研究抽象的电磁学,量子力学。而且那个东西非常耗时费力。
    2、电工实习——电工实习其实也没啥用,不过那个的确提有意思,相信很多人都焊过收音机,小电视之类的吧。
    3、思修(有时也叫德育)、马哲、邓论等——思修我觉得可能最没用吧,道德水平怎么能够是靠上课考试教化而来的呢。政治类的东西要是考研可能还有点用,不过中国学生都超级反感这些东西,一般没几个把它们认真当门课来学的。即使是打算考研的,也完全是靠最后报辅导班或者最后狂背而已。这里看你怎么看了。
    4、程序设计类课程,包括C语言、C++或者Java——当然每个学校开的课不一样,有的可能还学VB呢。这些当然有用了,以后工作就靠它们了,不会语言怎么编程呢?
    5、计算机科学类的三大核心课程“数据结构”、“操作系统”、“组成原理”——超级有用啊,不得不学好才行。数据结构的意义和学习方法先前的文章我已经谈过了,这里就不多说了。操作系统和组成原理关系到你对计算机理解到什么程度,尤其做一些底层开发更是不可或缺的知识。将来是当软件民工还是当研发人员就看它们了。不过目前国内的教材真烂啊,大都晦涩难懂。我还是推荐几本参考书吧,仅为参考书——操作系统方面,国人写了一本类似叫做《自己编写一个操作系统 Orange》的书,具体书名已经记不太清楚了,反正就是讲作者自己编写了一个操作系统的全过程。组成原理,我推荐哈工大唐朔飞教授编写的教材,清晰易懂,实为典范。Willam Starling的那本超级名作也不错,现在已经出到第7版了吧,不过感觉那么厚一本不是所有地方你得需要看,呵呵。
    6、计算机网络、数据库原理、编译原理、汇编语言等——有用,但又不像前面那些课程那么有用。而且很多本科生都认为编译和汇编都是大学里最难的课程,无异于天书。这也跟方向有关啊,如果你将来从事网络类工作,那当然学好网络很关键啦。如果做嵌入式开发,不懂汇编肯定也不行。我的意见是别把它们想得太复杂,别被它们给唬住了,只要用心,这些东西并不难,只是很麻烦而已。
    7、数学类课程——微积分、线性代数、概率与统计等,数学是理工科的基础,没有数学哪来的计算机。而且考研也都是必考的,所有它自然有他的作用。不过如果你就想当个程序员或许它们的作用就容易被淡化了。一些专门的方向对数学要求很高,比如做图形图像方面开发的,整天玩的就是数学。但是如果你只是做一个大规模软件工厂中的一个组装者,只是开发一些应用系统,那么数学的作用对你影响并不大。这个就看你自己的未来的方向了。只是在找工作的时候,一个数学超牛的人应该找不过一个C++超牛的人,呵呵,不过我这么说可不是说数学没用啊,还是那句话,这跟你个人志向有关。
   最后补充一下,“离散数学”不不太适合归为我所讲到这一类。离散数学其实应该是数据结构的一门准备课程,数据结构最开始的名字就叫做离散数据结构是从离散数学里衍生出来的课程。加之离散也并不复杂,所以就当是长见识了,好好听课就OK了。
    8、外语——这门课很特殊,反正就是有用,学好了就业好、工资高,好处多多。