cs-self-learning/index.html

2 lines
51 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=zh class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content=CS自学指南><meta name=author content=PKUFlyingPig><link href=https://csdiy.wiki/ rel=canonical><link rel=icon href=assets/images/favicon.png><meta name=generator content="mkdocs-1.3.0, mkdocs-material-7.3.6"><title>CS自学指南</title><link rel=stylesheet href=assets/stylesheets/main.a57b2b03.min.css><link rel=stylesheet href=assets/stylesheets/palette.3f5d1f46.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback"><style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=light-blue data-md-color-accent=deep-purple> <script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script> <script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#_1 class=md-skip> 跳转至 </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=. title=CS自学指南 class="md-header__button md-logo" aria-label=CS自学指南 data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> CS自学指南 </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> 前言 </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=light-blue data-md-color-accent=deep-purple aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=cyan data-md-color-accent=deep-purple aria-label="Switch to light mode" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31z"/></svg> </label> </form> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=搜索 placeholder=搜索 autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg> </label> <nav class=md-search__options aria-label=Search> <a href=javascript:void(0) class="md-search__icon md-icon" aria-label=Share data-clipboard data-clipboard-text data-md-component=search-share tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08z"/></svg> </a> <button type=reset class="md-search__icon md-icon" aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> 正在初始化搜索引擎 </div> <ol class=md-search-result__list></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/pkuflyingpig/cs-self-learning/ title=前往仓库 class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> </div> <div class=md-source__repository> cs-self-learning </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=. title=CS自学指南 class="md-nav__button md-logo" aria-label=CS自学指南 data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg> </a> CS自学指南 </label> <div class=md-nav__source> <a href=https://github.com/pkuflyingpig/cs-self-learning/ title=前往仓库 class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> </div> <div class=md-source__repository> cs-self-learning </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" data-md-toggle=toc type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> 前言 <span class="md-nav__icon md-icon"></span> </label> <a href=. class="md-nav__link md-nav__link--active"> 前言 </a> <nav class="md-nav md-nav--secondary" aria-label=目录> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> 目录 </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#cs61a class=md-nav__link> 梦开始的地方 —— CS61A </a> </li> <li class=md-nav__item> <a href=#_2 class=md-nav__link> 为什么写这本书 </a> </li> <li class=md-nav__item> <a href=#_3 class=md-nav__link> 自学的好处 </a> </li> <li class=md-nav__item> <a href=#_4 class=md-nav__link> 自学的坏处 </a> </li> <li class=md-nav__item> <a href=#_5 class=md-nav__link> 这本书适合谁 </a> </li> <li class=md-nav__item> <a href=#_6 class=md-nav__link> 特别鸣谢 </a> </li> <li class=md-nav__item> <a href=#_7 class=md-nav__link> 你也想加入到贡献者的行列 </a> </li> <li class=md-nav__item> <a href=#_8 class=md-nav__link> 关于交流群的建立 </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/ class=md-nav__link> 一个仅供参考的CS学习规划 </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_3 type=checkbox id=__nav_3> <label class=md-nav__link for=__nav_3> 必学工具 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=必学工具 data-md-level=1> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> 必学工具 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/ class=md-nav__link> 翻墙 </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/ class=md-nav__link> Vim </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/ class=md-nav__link> Git </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/ class=md-nav__link> GitHub </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/ class=md-nav__link> GNU Make </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/ class=md-nav__link> CMake </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/ class=md-nav__link> LaTeX </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/ class=md-nav__link> Docker </a> </li> <li class=md-nav__item> <a href=%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/ class=md-nav__link> 实用工具箱 </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/ class=md-nav__link> 好书推荐 </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_5 type=checkbox id=__nav_5> <label class=md-nav__link for=__nav_5> 数学基础 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=数学基础 data-md-level=1> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> 数学基础 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/ class=md-nav__link> MIT18.01/18.02: Calculus </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/ class=md-nav__link> MIT18.06: Linear Algebra </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/ class=md-nav__link> MIT6.050J: Information theory and Entropy </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_6 type=checkbox id=__nav_6> <label class=md-nav__link for=__nav_6> 数学进阶 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=数学进阶 data-md-level=1> <label class=md-nav__title for=__nav_6> <span class="md-nav__icon md-icon"></span> 数学进阶 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/ class=md-nav__link> UCB CS70: discrete Math and probability theory </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/ class=md-nav__link> UCB CS126: probability theory </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/ class=md-nav__link> MIT 6.042J: Mathematics for Computer Science </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/ class=md-nav__link> MIT18.330: Introduction to numerical analysis </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/ class=md-nav__link> Standford EE364A: Convex Optimization </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/ class=md-nav__link> The Information Theory, Patter Recognition, and Neural Networks </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_7 type=checkbox id=__nav_7> <label class=md-nav__link for=__nav_7> 编程入门 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=编程入门 data-md-level=1> <label class=md-nav__title for=__nav_7> <span class="md-nav__icon md-icon"></span> 编程入门 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/ class=md-nav__link> MIT-Missing-Semester </a> </li> <li class=md-nav__item> <a href=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/ class=md-nav__link> Harvard CS50: This is CS50x </a> </li> <li class=md-nav__item> <a href=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/ class=md-nav__link> UCB CS61A: Structure and Interpretation of Computer Programs </a> </li> <li class=md-nav__item> <a href=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/ class=md-nav__link> Duke University: Introductory C Programming Specialization </a> </li> <li class=md-nav__item> <a href=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/ class=md-nav__link> Stanford CS106L: Standard C++ Programming </a> </li> <li class=md-nav__item> <a href=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/ class=md-nav__link> Stanford CS110L: Safety in Systems Programming </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_8 type=checkbox id=__nav_8> <label class=md-nav__link for=__nav_8> 电子基础 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=电子基础 data-md-level=1> <label class=md-nav__title for=__nav_8> <span class="md-nav__icon md-icon"></span> 电子基础 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/ class=md-nav__link> EE16A&B: Designing Information Devices and Systems I&II </a> </li> <li class=md-nav__item> <a href=%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/ class=md-nav__link> UCB EE120 : Signal and Systems </a> </li> <li class=md-nav__item> <a href=%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/ class=md-nav__link> MIT 6.007 Signals and Systems </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_9 type=checkbox id=__nav_9> <label class=md-nav__link for=__nav_9> 数据结构与算法 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=数据结构与算法 data-md-level=1> <label class=md-nav__title for=__nav_9> <span class="md-nav__icon md-icon"></span> 数据结构与算法 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/ class=md-nav__link> UCB CS61B: Data Structures and Algorithms </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/ class=md-nav__link> Coursera: Algorithms I & II </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS106B_CS106X/ class=md-nav__link> Stanford CS106B/X </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/ class=md-nav__link> UCB CS170: Efficient Algorithms and Intractable Problems </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_10 type=checkbox id=__nav_10> <label class=md-nav__link for=__nav_10> 软件工程 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=软件工程 data-md-level=1> <label class=md-nav__title for=__nav_10> <span class="md-nav__icon md-icon"></span> 软件工程 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/ class=md-nav__link> MIT 6.031: Software Construction </a> </li> <li class=md-nav__item> <a href=%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/ class=md-nav__link> UCB CS169: software engineering </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_11 type=checkbox id=__nav_11> <label class=md-nav__link for=__nav_11> 体系结构 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=体系结构 data-md-level=1> <label class=md-nav__title for=__nav_11> <span class="md-nav__icon md-icon"></span> 体系结构 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/ class=md-nav__link> Coursera: Nand2Tetris </a> </li> <li class=md-nav__item> <a href=%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/ class=md-nav__link> Digital Design and Computer Architecture </a> </li> <li class=md-nav__item> <a href=%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/ class=md-nav__link> UCB CS61C: Great Ideas in Computer Architecture </a> </li> <li class=md-nav__item> <a href=%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/ class=md-nav__link> CMU 15-213: CSAPP </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_12 type=checkbox id=__nav_12> <label class=md-nav__link for=__nav_12> 操作系统 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=操作系统 data-md-level=1> <label class=md-nav__title for=__nav_12> <span class="md-nav__icon md-icon"></span> 操作系统 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/ class=md-nav__link> MIT 6.S081: Operating System Engineering </a> </li> <li class=md-nav__item> <a href=%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/ class=md-nav__link> UCB CS162: Operating System </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_13 type=checkbox id=__nav_13> <label class=md-nav__link for=__nav_13> 并行与分布式系统 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=并行与分布式系统 data-md-level=1> <label class=md-nav__title for=__nav_13> <span class="md-nav__icon md-icon"></span> 并行与分布式系统 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/ class=md-nav__link> CMU 15-418/Stanford CS149: Parallel Computing </a> </li> <li class=md-nav__item> <a href=%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/ class=md-nav__link> MIT 6.824: Distributed System </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_14 type=checkbox id=__nav_14> <label class=md-nav__link for=__nav_14> 计算机系统安全 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=计算机系统安全 data-md-level=1> <label class=md-nav__title for=__nav_14> <span class="md-nav__icon md-icon"></span> 计算机系统安全 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/ class=md-nav__link> UCB CS161: Computer Security </a> </li> <li class=md-nav__item> <a href=%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/ class=md-nav__link> MIT 6.858: Computer System Security </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_15 type=checkbox id=__nav_15> <label class=md-nav__link for=__nav_15> 计算机网络 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=计算机网络 data-md-level=1> <label class=md-nav__title for=__nav_15> <span class="md-nav__icon md-icon"></span> 计算机网络 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/ class=md-nav__link> Computer Networking: A Top-Down Approach </a> </li> <li class=md-nav__item> <a href=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/ class=md-nav__link> Stanford CS144: Computer Network </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_16 type=checkbox id=__nav_16> <label class=md-nav__link for=__nav_16> 数据库系统 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=数据库系统 data-md-level=1> <label class=md-nav__title for=__nav_16> <span class="md-nav__icon md-icon"></span> 数据库系统 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/ class=md-nav__link> UCB CS186: Introduction to Database System </a> </li> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/ class=md-nav__link> CMU 15-445: Database Systems </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_17 type=checkbox id=__nav_17> <label class=md-nav__link for=__nav_17> 编译原理 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=编译原理 data-md-level=1> <label class=md-nav__title for=__nav_17> <span class="md-nav__icon md-icon"></span> 编译原理 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/ class=md-nav__link> Stanford CS143: Compilers </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_18 type=checkbox id=__nav_18> <label class=md-nav__link for=__nav_18> 计算机图形学 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=计算机图形学 data-md-level=1> <label class=md-nav__title for=__nav_18> <span class="md-nav__icon md-icon"></span> 计算机图形学 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/ class=md-nav__link> GAMES101 </a> </li> <li class=md-nav__item> <a href=%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/ class=md-nav__link> GAMES202 </a> </li> <li class=md-nav__item> <a href=%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/ class=md-nav__link> GAMES103 </a> </li> <li class=md-nav__item> <a href=%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/ class=md-nav__link> Stanford CS148 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_19 type=checkbox id=__nav_19> <label class=md-nav__link for=__nav_19> Web开发 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Web开发 data-md-level=1> <label class=md-nav__title for=__nav_19> <span class="md-nav__icon md-icon"></span> Web开发 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=Web%E5%BC%80%E5%8F%91/mitweb/ class=md-nav__link> MIT web development course </a> </li> <li class=md-nav__item> <a href=Web%E5%BC%80%E5%8F%91/CS142/ class=md-nav__link> Stanford CS142: Web Applications </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_20 type=checkbox id=__nav_20> <label class=md-nav__link for=__nav_20> 数据科学 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=数据科学 data-md-level=1> <label class=md-nav__title for=__nav_20> <span class="md-nav__icon md-icon"></span> 数据科学 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/ class=md-nav__link> UCB Data100: Principles and Techniques of Data Science </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_21 type=checkbox id=__nav_21> <label class=md-nav__link for=__nav_21> 人工智能 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=人工智能 data-md-level=1> <label class=md-nav__title for=__nav_21> <span class="md-nav__icon md-icon"></span> 人工智能 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/ class=md-nav__link> Harvard CS50's Introduction to AI with Python </a> </li> <li class=md-nav__item> <a href=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/ class=md-nav__link> UCB CS188: Introduction to Artificial Intelligence </a> </li> <li class=md-nav__item> <a href=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/ class=md-nav__link> 智能计算系统 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_22 type=checkbox id=__nav_22> <label class=md-nav__link for=__nav_22> 机器学习 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=机器学习 data-md-level=1> <label class=md-nav__title for=__nav_22> <span class="md-nav__icon md-icon"></span> 机器学习 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/ class=md-nav__link> Coursera: Machine Learning </a> </li> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/ class=md-nav__link> Stanford CS229: Machine Learning </a> </li> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/ class=md-nav__link> UCB CS189: Introduction to Machine Learning </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_23 type=checkbox id=__nav_23> <label class=md-nav__link for=__nav_23> 深度学习 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=深度学习 data-md-level=1> <label class=md-nav__title for=__nav_23> <span class="md-nav__icon md-icon"></span> 深度学习 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/ class=md-nav__link> Coursera: Deep Learning </a> </li> <li class=md-nav__item> <a href=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/ class=md-nav__link> 台湾国立大学:李宏毅机器学习 </a> </li> <li class=md-nav__item> <a href=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/ class=md-nav__link> Stanford CS231n: CNN for Visual Recognition </a> </li> <li class=md-nav__item> <a href=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/ class=md-nav__link> Stanford CS224n: Natural Language Processing </a> </li> <li class=md-nav__item> <a href=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/ class=md-nav__link> Stanford CS224w: Machine Learning with Graphs </a> </li> <li class=md-nav__item> <a href=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/ class=md-nav__link> UCB CS285: Deep Reinforcement Learning </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_24 type=checkbox id=__nav_24> <label class=md-nav__link for=__nav_24> 机器学习进阶 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=机器学习进阶 data-md-level=1> <label class=md-nav__title for=__nav_24> <span class="md-nav__icon md-icon"></span> 机器学习进阶 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/ class=md-nav__link> 进阶路线图 </a> </li> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/ class=md-nav__link> CMU 10-708: Probabilistic Graphical Models </a> </li> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/ class=md-nav__link> Columbia STAT 8201: Deep Generative Models </a> </li> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/ class=md-nav__link> U Toronto STA 4273 Winter 2021: Minimizing Expectations </a> </li> <li class=md-nav__item> <a href=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/ class=md-nav__link> Stanford STATS214 / CS229M: Machine Learning Theory </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=%E5%90%8E%E8%AE%B0/ class=md-nav__link> 后记 </a> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label=目录> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> 目录 </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#cs61a class=md-nav__link> 梦开始的地方 —— CS61A </a> </li> <li class=md-nav__item> <a href=#_2 class=md-nav__link> 为什么写这本书 </a> </li> <li class=md-nav__item> <a href=#_3 class=md-nav__link> 自学的好处 </a> </li> <li class=md-nav__item> <a href=#_4 class=md-nav__link> 自学的坏处 </a> </li> <li class=md-nav__item> <a href=#_5 class=md-nav__link> 这本书适合谁 </a> </li> <li class=md-nav__item> <a href=#_6 class=md-nav__link> 特别鸣谢 </a> </li> <li class=md-nav__item> <a href=#_7 class=md-nav__link> 你也想加入到贡献者的行列 </a> </li> <li class=md-nav__item> <a href=#_8 class=md-nav__link> 关于交流群的建立 </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href=https://github.com/pkuflyingpig/cs-self-learning/edit/master/docs/index.md title=编辑此页 class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg> </a> <h1 id=_1>前言</h1> <p><strong>更新:本书最新网址 <a href=https://csdiy.wiki>csdiy.wiki</a>,欢迎大家访问 </strong></p> <p>这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。</p> <p>这同时也是一份献给北大信科学弟学妹们的礼物。如果这本书能对你们的信科生涯有哪怕一丝一毫的帮助,都是对我极大的鼓励和慰藉。</p> <p>本书目前规划了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 <a href=mailto:zhongyinmin@pku.edu.cn>zhongyinmin@pku.edu.cn</a> 或者在 issue 里提问)</p> <ul> <li>必学工具IDE, 翻墙, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, 实用工具 ...</li> <li><strong>国外高质量 CS 课程汇总</strong>:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。</li> <li>环境配置Linux 基础,<code>bash</code>环境变量Anaconda ...</li> <li>经典书籍推荐:看过 CSAPP 这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。</li> </ul> <h2 id=cs61a>梦开始的地方 —— CS61A</h2> <p>大一入学时我是一个对计算机一无所知的小白,装了几十个 G 的 Visual Studio 天天和 OJ 你死我活。凭着高中的数学底子我数学课学得还不错,但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的 IDE新建一个我也不知道具体是干啥的命令行项目然后就是 <code>cin</code>, <code>cout</code>, <code>for</code> 循环,然后 CE, RE, WA 循环。当时的我就处在一种拼命想学好但不知道怎么学,课上认真听讲但题还不会做,课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概论大作业的源代码 —— 一个 1200 行的 C++ 文件,没有头文件、没有类、没有封装、没有 unit test、没有 Makefile、没有 Git唯一的优点是它确实能跑缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机因为童年对于极客的所有想象已经被我第一个学期的体验彻底粉碎了。</p> <p>这一切的转机发生在我大一的寒假,我心血来潮想学习 Python。无意间看到知乎有人推荐了 CS61A 这门课,说是 UC Berkeley 的大一入门课程,讲的就是 Python。我永远不会忘记那一天打开 <a href=https://cs61a.org/ >CS61A</a> 课程网站的那个瞬间,就像哥伦布发现了新大陆一样,我开启了新世界的大门。</p> <p>我一口气 3 个星期上完了这门课,它让我第一次感觉到原来 CS 可以学得如此充实而有趣,原来这世上竟有如此精华的课程。</p> <p>为避免有崇洋媚外之嫌,我单纯从一个学生的视角来讲讲自学 CS61A 的体验:</p> <ul> <li> <p>独立搭建的课程网站: 一个网站将所有课程资源整合一体,条理分明的课程 schedule、所有 slides, hw, discussion 的文件链接、详细明确的课程给分说明、历年的考试题与答案。这样一个网站抛开美观程度不谈,既方便学生,也让资源公正透明。</p> </li> <li> <p>课程教授亲自编写的教材CS61A 这门课的开课老师将MIT的经典教材 <em>Structure and Interpretation of Computer Programs</em> (SICP) 用Python这门语言进行改编原教材基于 Scheme 语言),保证了课堂内容与教材内容的一致性,同时补充了更多细节,可以说诚意满满。而且全书开源,可以直接线上阅读。</p> </li> <li> <p>丰富到让人眼花缭乱的课程作业14 个 lab 巩固随堂知识点10 个 homework还有 4 个代码量均上千行的 project。与大家熟悉的 OJ 和 Word 文档式的作业不同,所有作业均有完善的代码框架,保姆级的作业说明。每个 Project 都有详尽的 handout 文档、全自动的评分脚本。CS61A 甚至专门开发了一个<a href=https://okpy.org/ >自动化的作业提交评分系统</a>(据说还发了论文)。当然,有人会说“一个 project 几千行代码大部分都是助教帮你写好的,你还能学到啥?”。此言差矣,作为一个刚刚接触计算机,连安装 Python 都磕磕绊绊的小白来说,这样完善的代码框架既可以让你专注于巩固课堂上学习到的核心知识点,又能有“我才学了一个月就能做一个小游戏了!”的成就感,还能有机会阅读学习别人高质量的代码,从而为自己所用。我觉得在低年级,这种代码框架可以说百利而无一害。唯一的害也许是苦了老师和助教,因为开发这样的作业可想而知需要相当的时间投入。</p> </li> <li> <p>每周 Discussion 讨论课,助教会讲解知识难点和考试例题:类似于北京大学 ICS 的小班研讨,但习题全部用 LaTeX 撰写,相当规范且会明确给出 solution。</p> </li> </ul> <p>这样的课程,你完全不需要任何计算机的基础,你只需要努力、认真、花时间就够了。此前那种有劲没处使的感觉,那种付出再多时间却得不到回报的感觉,从此烟消云散。这太适合我了,我从此爱上了自学。</p> <p>试想如果有人能把艰深的知识点嚼碎嚼烂,用生动直白的方式呈现给你,还有那么多听起来就很 fancy种类繁多的 project 来巩固你的理论知识,你会觉得他们真的是在倾尽全力想方设法地让你完全掌握这门课,你会觉得不学好它简直是对这些课程建设者的侮辱。</p> <p>如果你觉得我在夸大其词,那么不妨从 <a href=https://cs61a.org/ >CS61A</a> 开始,因为它是我的梦开始的地方。</p> <h2 id=_2>为什么写这本书</h2> <p>在我2020年秋季学期担任《深入理解计算机系统》CSAPP这门课的助教时我已经自学一年多了。这一年多来我无比享受这种自学模式为了分享这种快乐我为自己的小班同学做过一个 <a href=https://github.com/PKUFlyingPig/Self-learning-Computer-Science>CS自学资料整理仓库</a>。当时纯粹是心血来潮,因为我也不敢公然鼓励大家翘课自学。</p> <p>但随着又一年时间的维护,这个仓库的内容已经相当丰富,基本覆盖了计科、智能系、软工系的绝大多数课程,我也为每个课程都建了各自的 GitHub 仓库,汇总我用到的自学资料以及作业实现。</p> <p>直到大四开始凑学分毕业的时候,我打开自己的培养方案,我发现它已经是我这个自学仓库的子集了,而这距离我开始自学也才两年半而已。于是,一个大胆的想法在我脑海中浮现:也许,我可以打造一个自学式的培养方案,把我这三年自学经历中遇到的坑、走过的路记录下来,以期能为后来的学弟学妹们贡献自己的一份微薄之力。</p> <p>如果大家可以在三年不到的时间里就能建立起整座CS的基础大厦能有相对扎实的数学功底和代码能力经历过数十个千行代码量的 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、自然语言处理、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web开发、云服务、超算等等方面均有涉猎。我想你将有足够的底气和自信选择自己感兴趣的方向无论是就业还是科研你都将有相当的竞争力。</p> <p>因为我坚信,既然你能坚持听我 BB 到这里,你一定不缺学好 CS 的能力,你只是没有一个好的老师,给你讲一门好的课程。而我,将力图根据我三年的体验,为你挑选这样的课程。</p> <h2 id=_3>自学的好处</h2> <p>对我来说,自学最大的好处就在于可以完全根据自己的进度来调整学习速度。对于一些疑难知识点,我可以反复回看视频,在网上谷歌相关的内容,上 StackOverflow 提问题,直到完全将它弄明白。而对于自己掌握得相对较快的内容,则可以两倍速甚至三倍速略过。</p> <p>自学的另一大好处就是博采众长。计算机系的几大核心课程:体系、网络、操统、编译,每一门我基本都上过不同大学的课程,不同的教材、不同的知识点侧重、不同的 project 将会极大丰富你的视野,也会让你理解错误的一些内容得到及时纠正。</p> <p>自学的第三个好处是时间自由,具体原因省略。</p> <h2 id=_4>自学的坏处</h2> <p>当然,作为 CS 自学主义的忠实拥趸,我不得不承认自学也有它的坏处。</p> <p>第一就是交流沟通的不便。我其实是一个很热衷于提问的人,对于所有没有弄明白的点,我都喜欢穷追到底。但当你面对着屏幕听到老师讲了一个你没明白的知识点的时候,你无法顺着网线到另一端向老师问个明白。我努力通过独立思考和善用 Google 来缓解这一点,但是,如果能有几个志同道合的伙伴结伴自学,那将是极好的。关于交流群的建立,大家可以参考仓库 <code>README</code> 中的教程。</p> <p>第二就是这些自学的课程基本都是英文的。从视频到slides到作业全是英文所以有一定的门槛。不过我觉得这个挑战如果你克服了的话对你是极为有利的。因为在当下虽然我很不情愿但也不得不承认在计算机领域很多优质的文档、论坛、网站都是全英文的。养成英文阅读的习惯在赤旗插遍世界之前还是有一定好处的狗头保命</p> <p>第三,也是我觉得最困难的一点,就是自律。因为没有 DDL 有时候真的是一件可怕的事情,特别是随着学习的深入,国外的很多课程是相当虐的。你得有足够的驱动力强迫自己静下心来,阅读几十页的 Project Handout理解上千行的代码框架忍受数个小时的 debug 时光。而这一切,没有学分,没有绩点,没有老师,没有同学,只有一个信念 —— 你在变强。</p> <h2 id=_5>这本书适合谁</h2> <p>正如我在前言里说的,任何有志于自学计算机的朋友都可以参考这本书。如果你已经有了一定的计算机基础,只是对某个特定的领域感兴趣,可以选择性地挑选你感兴趣的内容进行学习。当然,如果你是一个像我当年一样对计算机一无所知的小白,初入大学的校门,我希望这本书能成为你的攻略,让你花最少的时间掌握你所需要的知识和能力。某种程度上,这本书更像是一个根据我的体验来排序的课程搜索引擎,帮助大家足不出户,体验世界顶级名校的计算机优质课程。</p> <p>当然,作为一个还未毕业的本科生,我深感自己没有能力也没有权利去宣扬一种学习方式,我只是希望这份资料能让那些同样有自学之心和毅力朋友可以少走些弯路,收获更丰富、更多样、更满足的学习体验。</p> <h2 id=_6>特别鸣谢</h2> <p>在这里我怀着崇敬之心真诚地感谢所有将课程资源无偿开源的各位教授们。这些课程倾注了他们数十年教学生涯的积淀和心血他们却选择无私地让所有人享受到如此高质量的CS教育。没有他们我的大学生活不会这样充实而快乐。很多教授在我给他们发了感谢邮件之后甚至会回复上百字的长文真的让我无比感动。他们也时刻激励着我做一件事就得用心做好无论是科研还是为人。</p> <h2 id=_7>你也想加入到贡献者的行列</h2> <p>一个人的力量终究是有限的,这本书也是我在繁重的科研之余熬夜抽空写出来的,难免有不够完善之处。另外,由于个人做的是系统方向,很多课程侧重系统领域,对于数学、理论计算机、高级算法相关的内容则相对少些。如果有大佬想在其他领域分享自己的自学经历与资源,可以直接在项目中发起 Pull Request也欢迎和我邮件联系<a href=mailto:zhongyinmin@pku.edu.cn>zhongyinmin@pku.edu.cn</a>)。</p> <h2 id=_8>关于交流群的建立</h2> <p>方法参见仓库的 <code>README.md</code></p> <hr> <div class=md-source-date> <small> 最后更新: <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">May 6, 2022</span> </small> </div> <script src=https://giscus.app/client.js data-repo=PKUFlyingPig/cs-self-learning data-repo-id=R_kgDOGP67ng data-category=Announcements data-category-id=DIC_kwDOGP67ns4COM9Q data-mapping=title data-reactions-enabled=1 data-emit-metadata=0 data-input-position=top data-theme=light data-lang=zh-CN data-loading=lazy crossorigin=anonymous async>
</script> </article> </div> </div> <a href=# class="md-top md-icon" data-md-component=top data-md-state=hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg> Back to top </a> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/ class="md-footer__link md-footer__link--next" aria-label="下一页: 一个仅供参考的CS学习规划" rel=next> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> 下一页 </span> 一个仅供参考的CS学习规划 </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-footer-copyright> <div class=md-footer-copyright__highlight> Copyright &copy; 2021-present <a href=https://github.com/PKUFlyingPig target=_blank rel="noopener noreferrer">PKUFlyingPig</a> </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-footer-social> <a href=https://github.com/pkuflyingpig/cs-self-learning/ target=_blank rel=noopener title=github.com class=md-footer-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": ".", "features": ["header.autohide", "navigation.tracking", "navigation.top", "search.highlight", "search.share", "search.suggest", "content.code.annotate"], "search": "assets/javascripts/workers/search.fcfe8b6d.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\uff0c\\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "version": null}</script> <script src=assets/javascripts/bundle.b1047164.min.js></script> </body> </html>