美文网首页自我提升程序猿的自我修养充电站
如何系统地学习计算机理论知识(一)

如何系统地学习计算机理论知识(一)

作者: 辉子学长 | 来源:发表于2016-11-09 14:43 被阅读5553次

    近毕业,内心难免浮躁。作为一个即将进入 CS 行业百万大军中的一员,如果说没有打算在技术领域有所建树的想法是骗人的。无论是理论研究还是工程开发,新兴技术日新月异、层出不穷,难免让人眼花缭乱,学习时亦心猿意马,心里总觉得XX更有前景,于是趋之若鹜。

    但是,技术是学不完的,比如前些年很火的 ROR 知识体系:

    Rails_Competencies.png

    再如前端:2016 年做前端开发是什么体验?

    如果仅仅跟着新的 API 和库作者的脚步学习,永远只能被牵着鼻子走,更何况大部分框架和思想早已存在,新出的库不过是从一种语言转到另一种语言,也就是所谓的炒冷饭,本质上并没有变。CS 基础越扎实的人,越能够快速吸收掌握新的知识与技术。

    那应该如何系统地学习计算机理论知识呢?我觉得虽然互联网上资源极为丰富,但良莠不齐,要学就应该把最好的挑出来学。根据QS 大学排名U.S. News排名,计算机专业 Top5 的学校分别是 MIT,UCB,Stanford,Harvard 和 CMU,因此,如果要巩固基础,最应该了解的就是这5所大学 CS 专业的培养计划和课程大纲。

    由于这几个学校的本科培养都大同小异,所以我特意分门别类,删繁就简,尽可能挑出课程视频开放的一些科目(大赞伯克利,大部分课程在 YouTube 上可以观看),整理出一份系统的计算机理论知识资料(默认已具备微积分、线性代数、概率论和离散数学等基础数学知识),总结成以下三类:

    入门(Introduction)

    1. CS50(Harvard,Introduction to CS)
    2. CS61A(SICP)CS106B(Programming Abstractions)
    3. CS61B(Data Structures)CS161(Data Structures and Algorithms)
    4. CS61C(Great Ideas in Computer Architecture)CS107(Computer Organization and Systems)
    5. CS110(Principles of Computer Systems)

    核心(Core)

    1. 操作系统

    2. CS140(OS and System Programming)

    3. CS240(Advanced Topics in Operating Systems)

    4. CS149(Parallel Computing)

    5. 数据库

    6. CS145(Introduction to Databases)

    7. CS245(Database System Principles)

    8. 网络

    9. CS144(Introduction to Networking)

    10. CS244(Advanced Topics in Networking)

    11. 编译器

    12. CS143(Compilers)

    13. CS243(Program Analysis and Optimizations)

    选修(Electives)

    1. 计算机图形学

    2. CS131(Computer Vision)

    3. CS148(Introduction to Computer Graphics and Imaging)

    4. Web编程
      CS142(Web Applications)

    5. 人工智能
      CS221(AI)

    6. 机器学习
      CS229(Machine Learning)

    Google 这些课程去到课程主页上把 lecture、assignment 等要点都过一遍,脑海中有了这些知识的框架,再观看视频、完成作业和项目,一步步自然可以将 CS 理论知识系统化。下一篇文章将继续讨论计算机理论知识的掌握该循序渐进读哪些专业书籍。

    相关文章

      网友评论

      • SnailTyan:整理的不错
      • CooperNiu:一直想总结梳理一下我们专业的体系结构,今日得见,真是相见恨晚呐
      • anascetic:是不是先找好兴趣点,比如大数据之类的,然后在深入研究的过程中再补习一下相关的计算机知识会更好呢?这样就能在实践中学习,效率会不会高些?
        anascetic:@辉子札记 嗯嗯,你这个也可以拿来做知识补充的,就是有些多,看花眼了(笑)
        辉子学长:@anascetic 对 项目驱动的学习确实效率高,但是不是很系统,我写的这篇本身也是针对那些已经有了一定基础但想更加系统地巩固知识技能树的学习者
      • 3085ba51ad91:只想说英语不好
        3085ba51ad91:努力啊,加紧学习
        辉子学长:@SoulEater丶李柘熠 既然都已经知道自己的弱项所在,何不努力弥补?
      • fb18057119e4:很适合现在准备转专业的我
        辉子学长:@新越同学 加油:heart:
      • 2453cf172ab4:列的有点多了。话说,你的建议是都学吗?还是说一个专题学你列出来的一个?
      • JAVA初级工程师:给你点赞
        辉子学长:@JAVA初级工程师 谢谢
      • 97def623fcfa:已收藏~
        辉子学长:@Mr_Niu 谢谢
      • 898a3d82054b:厉害:+1::+1:
        辉子学长:@salangheivy 感谢
      • 刚刚悟道:厉害
        辉子学长:@刚刚悟道 感谢:heart:
      • 浮生岁月良书益友:谢谢
        辉子学长:@smilevivid 能帮助你就好~
      • 不超过三种颜色:太好了 对于我等非科班 很有用
        辉子学长:@不超过三种颜色 嗯嗯,非科班更需要一个系统的学习方案,才不会半路跑偏
      • Tenny超超:很有用呀~写的真好
        期待新文章😄😄
        Tenny超超: @辉子札记 嗯嗯,好的☺
        辉子学长:@Tenny超超 谢谢,下一篇会探讨 CS 专业学生该读的一些专业书籍
      • Venlce:很有用啊!
        辉子学长:@Venlce 谢谢:relaxed:
      • ebb18120b756:不错的
        辉子学长:@一个符号 谢谢:heart:
      • Hey贝塔:好文
        辉子学长:@Hey贝塔 没关系,互联网时代学校的局限性已经越来越小啦
        Hey贝塔:@辉子札记 我就是计算机系的,我们渣渣学校,课程太垃圾了
        辉子学长:@Hey贝塔 感谢:heart:
      • MEKONGKONG:学习了!
        辉子学长:@MEKONGKONG 好好学习,天天向上:wink:
      • 低吟浅唱1990:没看见有视频啊
        辉子学长:@低吟浅唱1990 这都是课程主页,视频很多在 YouTube 上有的
      • b0dc1c4eec57:未来的计算机可能不需要人工操作,用声控可能成为未来计算机的主流。
        b0dc1c4eec57:谷歌现在已经将语音纳入了智能系统
        辉子学长:@天然 那要看人工智能的发展状况,声控理论上也属于一种人工操作
      • 610b6c2c5a23:英文版的是最好的。
        辉子学长:@启蒙时代 在目前 CS 领域确实是这样的
      • 砺豪:不过这些视频都是全英文的,那么多,看得够累的,你英语很好吗:sweat:
        辉子学长:@两津勘 其实学英语本质上就是用来用的,只要迈出第一步去听去看,CS 课程并不那么难听懂
        78983551cc90: @辉子札记 看的懂这视频也不是基础了吧
        辉子学长:@砺豪 一课一课的看,英文基础一定要早点打牢的
      • 砺豪:大爱啊,我也在找,推荐一门课,MIT的6.824分布式系统课程
      • c8f7d6b271ec:我也想成为大🐮。。。正在努力中
        辉子学长:@燃烧吧饭桶 加油共勉!
      • 非墨Zero:作者的思维导图用的什么工具?
        打纸牌的驼鹿:百度脑图 Xmind 也不错
        非墨Zero: @辉子札记 好的,thx
        辉子学长:@非子墨1988 MindNode,挺好用的

      本文标题:如何系统地学习计算机理论知识(一)

      本文链接:https://www.haomeiwen.com/subject/dxttpttx.html