丁丁 发表于 2011-7-1 16:40:12

大学计算机课程学习路线

如果你是一个计算机相关专业大学低年级学生,那么这篇文章就是为你写的。 我之前曾经发过一篇博文《大学计算机专业那些课》来谈论大学中各门课程的意义和重要性。那是针对更宽泛的范围来说的,这篇文章则更加精要和简约。因为这里研究的仅仅是核心计算机课程,更重要的是,这里要说的是这些课程之间的关系,以及它到底讲得是些什 么东西。我想这些课程最终是要组成一个体系的。


请注意我这里所说的是通常情况下的核心课程,每个学校在课程设置是可能是存在差异 的,但总体上框架应该是不变的。

最开始的第一门课应该是“C 语言程序设计”,这基本上属于你日后一切学习的开始, 简单说这门课程的主要目的和内容就是介绍一种计算机语言的语法内容,至于怎么学好它, 之前的文章都谈过了,这里就不罗嗦了。

之后的课程会分为三条线,第一条线的第一门课程是“数据结构与算法”。这很简单, 一些有了语言基础之后,为了更好的使用语言去解决问题,就必须学习结构知识和算法。至 于怎么学好它,之前的文章也谈过了——请注意,如何学都不是本文的重点。本文的重点在 于告诉你你将来都会学些什么以及该学些什么。

“数据结构与算法”的后续课程是什么?答案应该是《编译原理》。很奇怪吧?课程就 是这样设计的,其实这个路线也不是我发明的,国外大学的 CS Course 的体系也是这么设计 的。编译原理说白了就是介绍编译器如何工作的,是让计算机理解计算机语言的一种方法和 理论。这个工作过程之中蕴含了大量的算法,而且是非常复杂的算法,很多人甚至认为编译 原理是计算机专业本科阶段最难的一门课程。主要就是因为这里面的算法太复杂,当然也会 用到很多结构,树可能是用得最多的。当然,这就是相当于是数据结构与算法课程的一个后 续性课程,类似一道附加题。最近听一个学生说有些学校本科已经取消这门课了,我想应该 是较少一部分学校的做法吧。不过,中国的学习并不太重视这门课倒是真的。一般课程设置 就是一个学期左右的课时。但是一般的国外学校这门课都要学上 1 年,甚至两年之久。这条 线路到编译这里就应该是终点了。


下面我们来谈谈大学计算机课程学习的第二条路线。

在你具有了一定 C 语言基础之后,除了前面讲的第一条路线以外,你已经可以开始下 面这条路线的学习了。

为了更好地探究计算机系统的研究机制,在学习了 C 语言之后,下面一门需要学习的 课程是“汇编语言和微机接口技术”,这门课程包含两部分的内容,一部分就是汇编语言, 汇编是一种更底层的语言(相对于 C 而言),说白了它就是一种“用助记符描述的机器语言”。 很多人刚学汇编的时候都觉得很复杂,因为它跟硬件紧密相关,就是那些个寄存器也够初学 者糊涂一阵子的。这门课程的另外一部分内容是微机接口技术,目前国内高校这部分内容都

是基于 80X86 系列芯片的。已经可以看到这门课其实涉及到了很多硬件的知识,其实还不
止,关于 I/O 控制,寄存器,中断,这门课里都有体现的。

接下来要学习的内容就是《计算机组成原理与体系结构》。其实我特别奇怪,我在写学 习路线 1(也就是前一篇文章)的时候,有读者认为在学习 C 语言之前,或者在学习其他专 业课程之前,最先要学的就是这个东西。我不知道大家是不是觉得大学第一门专业课就是这 个,我觉得这么想的人是不且实际,信口开河的。这门课程还是比较深的一门课程,在汇编 和接口之后安排这门课程是比较的。不过国外的一些先进的计算机教育体系确实也有在较开 始的时候开设一门概论课来作为导引,有时候叫 Computer System Introduction,有时候叫 Computer Culture,其实内容差不多,但作为计算机专业课程的导引课程,这些课程的设置 里面已经设计到组原和 OS 的初步内容了。但这和 Computer Structrue & Architecture 还是有 区别的。

接下来的一门课程是《计算机操作系统》,如果外行听起来可能觉得这个课应该是学如 何使用操作系统的吧,就像“WindowsXP 速成”?非也!这门课程是讲 OS 是如何设计的, 或者说是如何实现一个 O S(当然做要比说起来难多了)。之所以这门课程被安排在组原之后 , 那是因为这反映了一种自底向上的学习路线。操作系统当然是在计算机系统之上来搭建的。 向调度啊、虚拟内存啊这些问题都是由操作系统来控制的。我最近所写的《代码揭秘》基本 上是属于这条路线上的内容的,不同的是我采用了一种更贴合读者理解方式的描述,因为在 讲述这些原理之前,我都是采用 C 语言实例来作为引子的。有空也推荐大家看看,应该学 校里的图书馆是可以借到的。前一阵子一位四川大学的计算机青年教师给我写信谈起我这本 书时,我才知道高校的图书馆里原理已经可以借到了。以上就是大学计算机课程学习的第 2 条路线,下面我们来讲最后一条路线。


最后一条路线属于应用型的,也就是说当你学完了基本的原理之后,一方面为了日后更 好的工作,另一方面如果从事研究工作也可择其一而继续深入探究,那么最好总之要上升到 一定应用层面的东西。

在你有了一定的 C 基础之后,学校可能会开一些面向对象程序设计方面的课程,可能 是 C++或者 Java,因为面向对象的语言在实际开发中正广泛的被使用。无论是 C++还是 Java, 跟 C 来说本质上都是语言,只不过他们多了一些 OOP 方面的特性。如何学好它们,我前面 的文章中已经谈过,这里就不多言了。

接下来的一门课程应该是“数据库系统”,这门课不是教你怎么使用 SQL SERVER 或者 DB2 的,学校里的课程远没这么前沿。数据库系统这门课依然偏重更多理论,尽管数据库 相比于组原和 OS 来说已经是上层建筑了。这门课讲的多是些数据库系统设计方面的原则, 例如如何解决关系问题或者 SQL 语言等等。

再之后可能会学的课程是“计算机网络”,这门课里会更加系统的向你介绍网络方面的 知识,TCP、UDP,HTTP 这些名词会粉末登场。注意这门课一般不是教授你如何布网的, 例如如何配置路由器这种东西一般是 CCNA 里面的内容了。这门课里讲的更多的是上层原 理与协议。

以上就是一般的大学计算机课程学习的几条路线。他们彼此联系,共同作用。注意我这


里讲的内容不是给你推荐学习方向,而是告诉你大学里会学什么,之间联系如何。从之前的
文章评论里不难看出,有的同学好像根本没理解文章的意思,说自己好像更适合哪条路线的 样子,其实适不适合哪条线的问题根本不存在,这些东西你都得学,既然学就要学好。本身 就是一个体系的,怎么能做瞎子摸象的事情呢?现在 CSDN 学生大本营搞得不错,资源很 多,访问量很大,但也能客观的看出浏览的人真的是分好多等的,有的是谦逊而好学的,有 的则是蜻蜓点水的过客。浮躁之气甚嚣尘上,胸中无物自然谈吐轻浮,看什么都不求甚解, 浅尝辄止,多少有些自以为是、妄自尊大了。这也是我在此开博四个月余来的感受吧。希望 大家都能保持一颗平常心,戒骄戒躁,平和的埋头学习吧。


无极空间 发表于 2011-7-4 21:04:56

axxxxx 发表于 2011-10-28 03:16:30

:lol:lol不错.....

jackyxch 发表于 2011-10-28 11:49:19

顶 收藏一个

阿飞 发表于 2011-11-20 23:30:24

有时间要好好看看LZ的空间

发表于 2011-12-17 22:07:05

顶个,让我这个大一计算系新生对前途有点清晰了

划过天空的猪 发表于 2011-12-17 22:09:02

顶个,让我这个大一计算系新生对前途有点清晰了
{:1_1:}

k、k。 发表于 2012-2-9 17:47:50

{:7_148:}蛮不错啊

℡老婆大人。 发表于 2012-2-17 17:48:06

是啊!切记切记!

夜鸽 发表于 2012-3-23 23:08:17

太好太好。。。。。

killkk 发表于 2012-3-24 03:03:10

说得真好,支持一下。

追忆_、流年 发表于 2012-3-24 14:56:48

赞一个,早点看到了就好了

追忆_、流年 发表于 2012-3-24 14:57:03

赞一个,早点看到了就好了!

MITGDN 发表于 2012-4-11 15:50:43

支持,鼎力支持,谢谢分享。

追忆_、流年 发表于 2012-4-11 18:46:53

赞一个 楼主的帖子怎么样?赶紧试试这里的快速回复给楼主点评论吧

追忆_、流年 发表于 2012-4-11 19:36:45

大学计算机专业那些课 没看到啊丁丁姐!!!

欲速则不达 发表于 2012-4-11 19:56:05

不错呀,我也正愁这方面的导向,学了C语言和汇编,但不知接着学什么,这下好了,有了目标了

幕府幽魂 发表于 2012-4-12 00:05:50

我突然发觉我现在的路完全符合第2条路。。。。目前正在看计算机组成原理。。。。完了应该是OS了

矛灬盾 发表于 2012-4-12 00:51:05

非计算机专业本科生飘过。。
{:1_1:}

爆米花先森丶 发表于 2012-4-12 02:58:45

#include <stdio.h>void main() {    int i,sum=0;    i=1;    do    {            sum=sum+i;      i++;         }while(i<=100);   prinf("%d\n",sum);   }
页: [1] 2 3 4 5
查看完整版本: 大学计算机课程学习路线