计算机专业的学生必须掌握的五门课程

摘要:
如果你想在计算机科学的道路上走得更远,这三门课是必须的。尽管《算法导论》的一些章节中掺杂了很多令人讨厌的“数学”,但它本质上可以引导你欣赏这门非常必要和有趣的课程。具体数学无疑是计算机科学的数学基础之一。中国计算机科学跟不上外国的原因之一是我一直认为这是数学方面的差距。


参考或原文 www.zhihu.com 

计算机专业概念有点大。就计算机科学与技术专业而言,以下这些是必修的:


1、计算机组成原理(包括先修课程“数字逻辑与数字系统”,简称“数电”):这是一门硬件基础课,学完后你能清楚的知道如何从用最简单的数字元件,像搭积木一样构成整个计算机系统,那就算及格了。

2、线性代数,概率论和离散数学:要知道,凡是能称之为“科学”的专业,就必须有一定的数学功底,否则难以称作“科学”。这三门课我觉得是本科时期最重要的三门数学课,比高等数学重要。如果你想在计算机科学的道路上走远点,那这三门可是必修的。

3、MIT开设的《Introduction To algorithm》,中文版叫《算法导论》:我觉得应该学习它而不是国内习惯开设的《数据结构》。数据结构仅仅是算法的一部分,国内的数据结构课程回避了很多本质的东西,仅仅是对一些常见的数据结构的罗列,学起来总有些不痛不痒的感觉。《Introduction To algorithm》虽然有些章节夹杂着很多很让人讨厌的“数学”,但却能从本质上带你领略这门十分必要而且有趣儿的课。

4、操作系统与编译原理:操作系统可以说是《算法导论》的实验课,最好能在学习期间自己实现一个小型的操作系统,或者操作系统各分系统的Demo。编译原理可能是普遍本科生觉得难的一门课,但是作为软件科学家,这是基础中的基础,学完之后所有的语言在你看来应该没有太大的区别,这么课应该是离散数学+算法导论的实验课。最好能在学习期间自己实现一个小型的编译器,语言最好是自创。

5、掌握一门常用的编程语言和编程技术:能了解你用过的所有的程序内部大致是怎样的,能用你熟悉的语言编写大部分的程序,至少不能是对任何一个程序满头雾水。

以上这些不难做到,我觉得是基础中的基础,我偏激的以为,不能掌握他们就不应该获得学位。

简而言之:

  1. 数学课 (概率,统计,微积分等等)
  2. 语言课(java,c++等)
  3. 数据结构和算法
  4. 计算机网络
  5. 操作系统和编译原理

其实只要算法和数学牛,可以吃遍硅谷大多数的IT公司。

具体书籍

  1. Concrete Mathematics  具体数学,绝对是计算机科学的数学基础“之一”,国内的计算机科学跟不上国外的一大原因,我始终认为是数学上的差距。
  2. Introduction to Algorithms 算法导论,所有的程序都需要算法作为基础,所以算法是不得不学的。
  3. Introduction to Computer Science and Programming 整体的介绍了计算机,同时也让学生了解CS能干嘛,自己该干嘛。
  4. Operating System Engineering 操作系统的重要性不言而喻,同时也介绍了编译器。
  5. Network 网络编程,中国 大学的本科生们有多少能熟练于网络编程。当今又有多少程序不需要考虑到网络。

有时候问自己几个问题:

  • 当你学完各种数学、原理、算法之后,你能用这些知识解决什么问题?
  • 你能开发出什么应用或系统吗?你具备多强的开发能力?
  • 是更多人对这个专业更感兴趣了,还是心生厌倦、恐惧、甚至放弃了?
  • 大学毕业到现在,还有多少知识你还记着?有多少还在用?

其实能解决问题的课程才是最重要的。

免责声明:文章转载自《计算机专业的学生必须掌握的五门课程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何学好游戏编程?[译]学好数学能让程序员的水平更高下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

XP 优化(不可全信,但比较方便我这种优化菜鸟)转载 规格严格

XP系统优化,开机进程只有15个! 关闭服务的方法:我的电脑-控制面板-管理工具-服务。 如果调整后电脑出了问题,重新开启那个服务就可以了。 设定时右击一个服务,可以选择关闭,手动,还是自动(自动为跟Windows一起启动)。手动为需要时它自行启动。禁止为永远不启动。 以下是每个服务的详细说明。注意:红色标记的均可以大胆的关闭。只要开头带*的服务不要关闭!!...

jmeter分布式压测(多台电脑一起压测)

(1)在Windows下运行 操作步骤: 1) 有多台电脑,每台电脑上都有jmeter,而且这几台电脑都互相能ping通。 2) 在我的电脑的jmeter的配置文件bin目录下的jmeter.properties里面添加其他电脑的ip。 3) 在其他人的电脑上要启动jmeter-server.bat: 如果有参数化文件,那么要在其他人的电脑的同样...

LoadRunner12.53录制手机应用

1打开LR12.53选择File-newscriptandsolution; 2选择录制协议输入脚本名称和位置点击create; 3点击设置录制选项; 4设置代理及端口; 5点击开始录制启用代理; 6手机连接wifi并和电脑处于同一局域网设置代理及端口; 7禁用电脑端VMware及VirtualBox等虚拟网卡; 8操作手机端开始录制,观察事件显...

数学-基本积分公式

$int kdx = kx + C $ 特别地$int 0dx = C $ $int x^{mu}dx = frac{x^{ mu +1}}{ mu+1} + C$ $int frac{1}{x}dx = lnleft | x ight | + C$ $int a^xdx = frac{a^x}{lna} + C$ 特别地 $int e^xd...

关于adb devices连不上手机的几种情况

启动adb 1.打开cmd首次使用adb devices,出现下面这两句,就是正在启动adb服务 C:Usersadmin>adb devices List of devices attached * daemon not running. starting it * daemon started successfully * 2.然后第二次继续输...

EasyBCD硬盘安装 Ubuntu+Win7 双系统及卸载

周末的时候无聊,装了个双系统,参照博客,亲测可行 Win7+Ubuntu11.10(EasyBCD硬盘安装) 1)首先还是分区,在计算机上右键--管理--磁盘管理 装Ubuntu分配的硬盘大小最好是(20G以上)不要太小,这里请注意,ubuntu和windows文件系统完全不同,所以我们划好要给ubuntu的分区后,删除卷。到时候,安装好的ubuntu的分区...