代码之家  ›  专栏  ›  技术社区  ›  Kyle Cronin

我应该读什么书才能获得计算机科学的本科教育[[关闭]

  •  35
  • Kyle Cronin  · 技术社区  · 16 年前

    我一直是一个非常独立的学习者,从维基百科和各种各样的书中收集我能收集到的东西。然而,我担心我可能会因为无意中遗漏了主题和概念而使我的自我教育产生偏见。我的目标是自学相当于一流大学的计算机科学学士学位(不管是哪所大学)。

    为此,我购买并开始阅读一些学术教科书:

    以及我在贝斯特州立大学(best state university)的一所平庸学校上课时留下的几本教科书:

    • 有没有比这里列出的书更严谨、更透彻(甚至更容易阅读)的书?
    • 有没有浪费我时间的书?
    • 我应该按什么顺序读这些书?
    • 麻省理工学院或斯坦福大学(或加州大学商学院或芝加哥大学…)的本科生学到了什么,我可能会错过?

    软件工程书籍是受欢迎的,但在学术研究的背景下只请。我知道完整的代码和实用的程序员,但我正在寻找一个更理论的方法。谢谢!

    22 回复  |  直到 11 年前
        1
  •  13
  •   Vinko Vrsalovic    16 年前

    我看到最大的两个疏漏:

    对于操作系统,我更喜欢Tanenbaum而不是Silberschatz,但两者都很好:

    至于顺序,那要看你的兴趣了。先决条件不多,编译器的自动机是最明显的先决条件。先读自动机的书,然后读龙的书。

    我不知道你有多少本书,但我知道的那些书足够好,这可能意味着其他的书也不错。

    你少了一些 logic discrete math 书也是。

    别忘了一些 database theory

        2
  •  12
  •   therealhoff    16 年前

    我发现最好的方法就是选择你最喜欢的大学,访问他们的网站,查看学位课程。许多大的学校每门课程都有必读读物。麻省理工学院的开放课程软件就是一个很好的例子。

        4
  •  6
  •   William Leara    16 年前

    麻省理工学院几年前推出了他们的“开放课件”项目。他们把书/家庭作业/讲座放到网上,这样你就可以跟着麻省理工学院的课程走了:

    http://web.mit.edu/catalogue/degre.engin.ch6.shtml

        5
  •  4
  •   Norman Ramsey    16 年前

    这本书真的很好 或者只是 现场最好的

    例如,在 编译器 Programming Language Pragmatics 这本书虽然有点杂乱无章,但读起来很可爱(我从来没有教过它,所以我说不出学生是怎么想的。)我不知道有一本关于autodidact编译器构造的好书,尽管你可能会看看Cooper和Torczon的 Engineering a Compiler

        6
  •  3
  •   Graeme Perrow    16 年前

    对不起,你不能用读一本书或几本书来代替四年的大学生活,不管这些书有多好。如果可以,为什么会有人上大学?

        7
  •  3
  •   John D. Cook    16 年前

    首先,我不担心。但是如果你想要一本书来学习一些抽象的CS思想,我推荐你 The Turing Omnibus Theoretical Introduction to Programming

    如果我决定雇佣两个程序员,两个都没有太多经验,但一个有CS学位,另一个没有,我会雇佣那个有CS学位的。但是当你比较两个有着十几年经验的程序员时,学位并不重要。

        8
  •  3
  •   MahlerFive    16 年前

    • 统计
    • 线性代数
    • 计算机图形学
    • 科学计算
    • 计算机网络
    • 软件工程

    一些可能被认为更“可选”的主题可能是:

    • 图像/图案处理
    • 生物信息学
    • 互联网计算
    • 经典物理学
        9
  •  3
  •   Gilad Naor    16 年前

    The Elements of Computing Systems

    这本书带你从硬件设计的基础一直到用面向对象语言编写程序。使用模拟器,你可以建立一个完整的计算机。然后编写一个汇编程序、一个操作系统、一个编译器(用于编译为在虚拟机上运行的面向对象语言),然后用该语言编写一个游戏。

    您可以查看一些示例章节,也可以使用模拟器 here .

    强烈推荐! (即使是CS毕业生)

        10
  •  2
  •   Ben Hoffstein    16 年前

    我想你可以把其他大部分的书拿来参考,好好吸收 Programming Pearls 全部。这样做会让你比我见过的90%的程序员都优秀。

        11
  •  2
  •   J.J.    16 年前
    • 离散数学I&二(我的私人
    • 物理I(密苏里州)
    • 统计学I
    • (信息技术)
    • 系统分析与设计(软件) 商业工程

    • 网络(教学网络) 算法,位模式处理 网络数据)。

      一些 需要理解的东西 要求

    阅读这些主题的书籍并不意味着你了解它们。在数学上做数学,在代码上编码,等等,这些都能帮助你理解,并显示出你最终了解了这门学科。

        12
  •  1
  •   Pablo Marambio    16 年前

    我不知道在美国是怎么回事,但在我的国家,我们学习离散数学和图论入门,然后才学习形式语言和自动机。

    Computer Networks ?

        13
  •  1
  •   moonshadow    16 年前

    在做任何事情之前,先读一读 Computer Science: a Modern Introduction . 这将给你一个很好的基础,并概述有追求的主题。

    Introduction to Algorithms 非常好。对于函数式编程的介绍,我建议您 ML for the working programmer .

    区分计算机科学家和程序员的领域:离散数学基础,VLSI和系统架构的基本理解,密码学和安全基础的理解,可计算性理论的理解,信息理论的理解。

        14
  •  1
  •   user9282    16 年前

        15
  •  1
  •   Dima    16 年前

    这张单子不错。这两个主题我肯定会加入到混合是离散数学和网络。您可能感兴趣的其他主题包括编译器、计算机图形学、分布式操作系统。人工智能还有一些很酷的子领域,比如计算机视觉和机器学习。为了处理所有这些,你肯定需要线性代数和概率。

    不言而喻,光靠读书是不可能真正掌握计算机科学的。要真正理解每一个主题,你必须在其中做项目。我还建议看一下麻省理工学院的开放式课件,教授们在那里发布教学大纲、课堂讲稿和作业。

        16
  •  1
  •   Ryan Guest    16 年前

    您还应该有一本关于通用数据库的书,而不必深入了解Oracle、MySQL、sqlserver等的细节。

    Database Systems: The Complete Book

        17
  •  1
  •   cjs    16 年前

    Concepts, Techniques and Models of Computer Programming 似乎有我见过的各种高级语言编程风格和技术的最广泛的概述。

        18
  •  0
  •   Scottm    16 年前

    网页设计知识在就业方面也非常有用。

    我不明白你为什么要自己动手。即使是一所“充其量也很平庸”的大学,也能教给你比你自己好得多的技能。这一切都是为了会见那些在计算机行业有实际工作经验的人。

    决定你成绩的不是大学而是你付出的努力。

    我的回答也许对你没有帮助,因为我不知道你从哪里来。在我居住的苏格兰,我可以免费上大学,但对你来说可能不是这样。

        19
  •  0
  •   Robert Robert    16 年前

    File Structures: An object oriented approach with C++

    很多关于块设备和文件结构的好信息你在你列出的书中都找不到。因为人们不喜欢他的代码示例,它在Amazon上得到了一些评论,但这本书的重点是教授概念,而不是给出剪切粘贴的代码示例。

    还要确保有一本关于编译器的书

        20
  •  0
  •   hiena    16 年前
        21
  •  0
  •   Mark Carpenter    16 年前

    “四人帮” Design Patterns book . 我在大学上的设计模式课程可能是我上过的最有益的课程。