怎样学习CS(Computer Science)

3 提交 / 0个新回复
最新回复
怎样学习CS(Computer Science)

如果你是有志于学习计算机科学专业的一名学生,或者你从事其它行业,但准备转行到这个领域,那么恭喜你,你非常幸运;互联网对你有帮助的信息随手可得。计算机科学是一门范围很广,并且正在不断扩大的学科;一旦你有能力胜任中等规模的编程项目,就会发现对你来说有很多课题可以做。不过你真的知道需要学习什么,不需要学习什么吗? 

良好的基础对你而言至关重要。如果你想成为一名研究人员,那就需要比作一名程序员了解更多的理论知识。不管怎样,一些基本的技能对从事这个领域的每个人来说都是有帮助的。 

学习多种编程语言 

无论在计算机科学领域选择哪个方向,你都离不开编写计算机程序的技能。并非所有语言都差不多,其中多数语言具有某些长处。你需要学习一种类似C或C++的系统语言。这将给你带来几个好处:首先,你会理解内存分配;其次,你会了解许多有关系统设计的知识;最后,你将有办法与其它程序更容易的进行通讯。如果你正在学习C语言,那么它能帮助你更好的理解这篇文章中的细节。 

此外你还可以学习一门更灵活的语言,用来应付日常工作,像类似Perl或者Ruby这类脚本语言会帮助你创建一些有趣的程序,还可以快速的测试你的想法。 

最重,一旦你精通一到两门语言,就可以扩展一下视野,接触像Scheme,ML或者Haskell一类的函数语言。这将加深你对编程语言的理解,并且进一步开阔你的视野。 

学习新语言的时候,有一个记忆的窍门,因为几乎所有的语言都有相同的处理方式——你能用一种语言做到的事情哟拗不过其他语言也可以做到——不过某些语言可能比其他的做起来更容易。比如,你会发现对于从文本文件中读数据这类功能来说,Perl是一种非常好的选择。如果你想要写一个AI引擎,那么Scheme可能会作的比其他语言更好。 

学习设计 

对于一名软件工程师或学者来说,你需要根据某些模型或者其他诸如此类的东西编写计算机程序。那么早早掌握良好的设计原则将让你受益匪浅。要记住关键是在确定解决方案之前牢牢把握程序的设计目标,这会避免今后你不必要的修改。在设计之初,你没必要进行详细的前端设计(界面),否则今后你的项目会失去很多灵活性。 

当然,在你还不清楚哪些编码比较容易,以及哪些编码比较困难的情况下,一些有关总体的设计必须要严格。保持一些刚性的设计目标对于模块化设计来说及其困难。一个办法是观察模块的强度,这会让你及早的把一些坏的方法排除掉,而用好的方法代替。但是如果你很清楚怎么做是好的方法,那么模块化设计对你没有帮助,因为这项工作需要太多精力,这对你没好处。 

学习设计的一个好方法是联系编写一些大众化的系统项目,比如试着编写一个解释器或者网站服务器。这些项目的好处是有很多类似的程序,你完全可以拿来与根据你的设计原形编写的程序进行对照。无论如何,你都要落实你的设计或者至少是部分设计,否则你永远不会知道你的设计方法有哪些缺陷。运行中出现的一些缺陷会让你学到更多。 

学习基本的算法和数据结构 

计算机科学是一门语言的学科,它有各种各样的重要算法和数据结构。每个人都有必要了解什么是二叉树,因为你可能每时每刻都用到它们。二分搜索算法,图形搜索算法,排序算法,以及基于树的搜索算法比如极大极小树,这些基本的算法或许也是重要的基础。有大量这类算法和它们的变体,人们一般会以为随便哪一位计算机科学家都了解它们是如何工作的。 

学习基本的理论 

有几件事情是你必须做到的:你要清楚怎样用不同的进制表示一个数,还要知道如何用布尔逻辑计算布尔表达式。在许多情况下这两样工具已经被证明是非常有用的,特别是你阅读别人的代码或优化自己程序的时候。(布尔逻辑对你规划条件语句的结构特别有用。) 

更重要的是,你要在各种计算机潮流中保持正确的判断力。特别是,算法效率和大0符号能帮助你真正的理解你的想法。了解这些主题将让你清楚为什么在动手之前要拿出很长时间来确定计划和算法,以及怎样精确的实现它们。它也会让你尽早了解选择哪一种算法对你的程序更有利。 

最后,要知道计算机并非是万能的;你关掉电源它就什么都做不了。不过有时候它会诱惑你去写一段程序,仅此而已。译者:CommonData