cs-self-learning/en/CS学习规划/index.html

35 lines
119 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=en 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/en/CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/ rel=canonical><link href=../%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/ rel=prev><link href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/ rel=next><link rel=icon href=../../images/favicon.ico><meta name=generator content="mkdocs-1.6.0, mkdocs-material-9.5.2"><title>Guideline - csdiy.wiki</title><link rel=stylesheet href=../../assets/stylesheets/main.50c56a3b.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto+Slab:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto Slab";--md-code-font:"Roboto Mono"}</style><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script id=__analytics>function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-KJB4RXSKZG"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-KJB4RXSKZG",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-KJB4RXSKZG",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script><script>"undefined"!=typeof __md_analytics&&__md_analytics()</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=light-blue data-md-color-accent=deep-purple> <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=#a-reference-guide-for-cs-learning class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class="md-header md-header--shadow" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../ title=csdiy.wiki class="md-header__button md-logo" aria-label=csdiy.wiki 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> csdiy.wiki </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Guideline </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_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 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_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 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> <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <div class=md-header__option> <div class=md-select> <button class="md-header__button md-icon" aria-label="Select language"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"/></svg> </button> <div class=md-select__inner> <ul class=md-select__list> <li class=md-select__item> <a href=../../CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/ hreflang=zh class=md-select__link> 简体中文 </a> </li> <li class=md-select__item> <a href=./ hreflang=en class=md-select__link> English </a> </li> </ul> </div> </div> </div> <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=Search placeholder=Search 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" title=Share 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" title=Clear 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> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/pkuflyingpig/cs-self-learning/ title="Go to repository" 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"><!-- Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><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=csdiy.wiki class="md-nav__button md-logo" aria-label=csdiy.wiki 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> csdiy.wiki </label> <div class=md-nav__source> <a href=https://github.com/pkuflyingpig/cs-self-learning/ title="Go to repository" 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"><!-- Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><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> <a href=../ class=md-nav__link> <span class=md-ellipsis> Foreword </span> </a> </li> <li class=md-nav__item> <a href=../%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/ class=md-nav__link> <span class=md-ellipsis> How To Use The Book </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Guideline </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Guideline </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#essential-tools class=md-nav__link> <span class=md-ellipsis> Essential Tools </span> </a> </li> <li class=md-nav__item> <a href=#recommended-books class=md-nav__link> <span class=md-ellipsis> Recommended Books </span> </a> </li> <li class=md-nav__item> <a href=#environment-setup class=md-nav__link> <span class=md-ellipsis> Environment Setup </span> </a> <nav class=md-nav aria-label="Environment Setup"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#pc-environment-setup class=md-nav__link> <span class=md-ellipsis> PC Environment Setup </span> </a> </li> <li class=md-nav__item> <a href=#server-side-environment-setup class=md-nav__link> <span class=md-ellipsis> Server-Side Environment Setup </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#course-map class=md-nav__link> <span class=md-ellipsis> Course Map </span> </a> <nav class=md-nav aria-label="Course Map"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#mathematical-foundations class=md-nav__link> <span class=md-ellipsis> Mathematical Foundations </span> </a> <nav class=md-nav aria-label="Mathematical Foundations"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#calculus-and-linear-algebra class=md-nav__link> <span class=md-ellipsis> Calculus and Linear Algebra </span> </a> </li> <li class=md-nav__item> <a href=#introduction-to-information-theory class=md-nav__link> <span class=md-ellipsis> Introduction to Information Theory </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#advanced-mathematics class=md-nav__link> <span class=md-ellipsis> Advanced Mathematics </span> </a> <nav class=md-nav aria-label="Advanced Mathematics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#discrete-mathematics-and-probability-theory class=md-nav__link> <span class=md-ellipsis> Discrete Mathematics and Probability Theory </span> </a> </li> <li class=md-nav__item> <a href=#numerical-analysis class=md-nav__link> <span class=md-ellipsis> Numerical Analysis </span> </a> </li> <li class=md-nav__item> <a href=#differential-equations class=md-nav__link> <span class=md-ellipsis> Differential Equations </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#advanced-mathematical-topics class=md-nav__link> <span class=md-ellipsis> Advanced Mathematical Topics </span> </a> <nav class=md-nav aria-label="Advanced Mathematical Topics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#convex-optimization class=md-nav__link> <span class=md-ellipsis> Convex Optimization </span> </a> </li> <li class=md-nav__item> <a href=#information-theory class=md-nav__link> <span class=md-ellipsis> Information Theory </span> </a> </li> <li class=md-nav__item> <a href=#applied-statistics class=md-nav__link> <span class=md-ellipsis> Applied Statistics </span> </a> </li> <li class=md-nav__item> <a href=#elementary-number-theory class=md-nav__link> <span class=md-ellipsis> Elementary Number Theory </span> </a> </li> <li class=md-nav__item> <a href=#cryptography class=md-nav__link> <span class=md-ellipsis> Cryptography </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#programming-fundamentals class=md-nav__link> <span class=md-ellipsis> Programming Fundamentals </span> </a> <nav class=md-nav aria-label="Programming Fundamentals"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#general class=md-nav__link> <span class=md-ellipsis> General </span> </a> </li> <li class=md-nav__item> <a href=#java class=md-nav__link> <span class=md-ellipsis> Java </span> </a> </li> <li class=md-nav__item> <a href=#python class=md-nav__link> <span class=md-ellipsis> Python </span> </a> </li> <li class=md-nav__item> <a href=#c class=md-nav__link> <span class=md-ellipsis> C++ </span> </a> </li> <li class=md-nav__item> <a href=#rust class=md-nav__link> <span class=md-ellipsis> Rust </span> </a> </li> <li class=md-nav__item> <a href=#ocaml class=md-nav__link> <span class=md-ellipsis> OCaml </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#electronics-fundamentals class=md-nav__link> <span class=md-ellipsis> Electronics Fundamentals </span> </a> <nav class=md-nav aria-label="Electronics Fundamentals"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#basics-of-circuits class=md-nav__link> <span class=md-ellipsis> Basics of Circuits </span> </a> </li> <li class=md-nav__item> <a href=#signals-and-systems class=md-nav__link> <span class=md-ellipsis> Signals and Systems </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#data-structures-and-algorithms class=md-nav__link> <span class=md-ellipsis> Data Structures and Algorithms </span> </a> </li> <li class=md-nav__item> <a href=#software-engineering class=md-nav__link> <span class=md-ellipsis> Software Engineering </span> </a> <nav class=md-nav aria-label="Software Engineering"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#introductory-course class=md-nav__link> <span class=md-ellipsis> Introductory Course </span> </a> </li> <li class=md-nav__item> <a href=#professional-course class=md-nav__link> <span class=md-ellipsis> Professional Course </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#computer-architecture class=md-nav__link> <span class=md-ellipsis> Computer Architecture </span> </a> <nav class=md-nav aria-label="Computer Architecture"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#introductory-course_1 class=md-nav__link> <span class=md-ellipsis> Introductory Course </span> </a> </li> <li class=md-nav__item> <a href=#professional-course_1 class=md-nav__link> <span class=md-ellipsis> Professional Course </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#introduction-to-computer-systems class=md-nav__link> <span class=md-ellipsis> Introduction to Computer Systems </span> </a> </li> <li class=md-nav__item> <a href=#operating-systems class=md-nav__link> <span class=md-ellipsis> Operating Systems </span> </a> </li> <li class=md-nav__item> <a href=#parallel-and-distributed-systems class=md-nav__link> <span class=md-ellipsis> Parallel and Distributed Systems </span> </a> <nav class=md-nav aria-label="Parallel and Distributed Systems"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#parallel-computing class=md-nav__link> <span class=md-ellipsis> Parallel Computing </span> </a> </li> <li class=md-nav__item> <a href=#distributed-systems class=md-nav__link> <span class=md-ellipsis> Distributed Systems </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#system-security class=md-nav__link> <span class=md-ellipsis> System Security </span> </a> <nav class=md-nav aria-label="System Security"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#theoretical-courses class=md-nav__link> <span class=md-ellipsis> Theoretical Courses </span> </a> </li> <li class=md-nav__item> <a href=#practical-courses class=md-nav__link> <span class=md-ellipsis> Practical Courses </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#computer-networks class=md-nav__link> <span class=md-ellipsis> Computer Networks </span> </a> </li> <li class=md-nav__item> <a href=#database-systems class=md-nav__link> <span class=md-ellipsis> Database Systems </span> </a> </li> <li class=md-nav__item> <a href=#compiler-theory class=md-nav__link> <span class=md-ellipsis> Compiler Theory </span> </a> </li> <li class=md-nav__item> <a href=#web-development class=md-nav__link> <span class=md-ellipsis> Web Development </span> </a> <nav class=md-nav aria-label="Web Development"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#two-week-crash-course class=md-nav__link> <span class=md-ellipsis> Two-Week Crash Course </span> </a> </li> <li class=md-nav__item> <a href=#systematic-study-version class=md-nav__link> <span class=md-ellipsis> Systematic Study Version </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#computer-graphics class=md-nav__link> <span class=md-ellipsis> Computer Graphics </span> </a> </li> <li class=md-nav__item> <a href=#data-science class=md-nav__link> <span class=md-ellipsis> Data Science </span> </a> </li> <li class=md-nav__item> <a href=#artificial-intelligence class=md-nav__link> <span class=md-ellipsis> Artificial Intelligence </span> </a> </li> <li class=md-nav__item> <a href=#machine-learning class=md-nav__link> <span class=md-ellipsis> Machine Learning </span> </a> </li> <li class=md-nav__item> <a href=#deep-learning class=md-nav__link> <span class=md-ellipsis> Deep Learning </span> </a> </li> <li class=md-nav__item> <a href=#computer-vision class=md-nav__link> <span class=md-ellipsis> Computer Vision </span> </a> </li> <li class=md-nav__item> <a href=#natural-language-processing class=md-nav__link> <span class=md-ellipsis> Natural Language Processing </span> </a> </li> <li class=md-nav__item> <a href=#graph-neural-networks class=md-nav__link> <span class=md-ellipsis> Graph Neural Networks </span> </a> </li> <li class=md-nav__item> <a href=#reinforcement-learning class=md-nav__link> <span class=md-ellipsis> Reinforcement Learning </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#customize-your-course-map class=md-nav__link> <span class=md-ellipsis> Customize Your Course Map </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> Productivity Toolkit </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Productivity Toolkit </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> <span class=md-ellipsis> GFW </span> </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> <span class=md-ellipsis> Vim </span> </a> </li> <li class=md-nav__item> <a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Emacs/ class=md-nav__link> <span class=md-ellipsis> Emacs </span> </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> <span class=md-ellipsis> Git </span> </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> <span class=md-ellipsis> GitHub </span> </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> <span class=md-ellipsis> GNU Make </span> </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> <span class=md-ellipsis> CMake </span> </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> <span class=md-ellipsis> LaTeX </span> </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> <span class=md-ellipsis> Docker </span> </a> </li> <li class=md-nav__item> <a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Scoop/ class=md-nav__link> <span class=md-ellipsis> Scoop </span> </a> </li> <li class=md-nav__item> <a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/workflow/ class=md-nav__link> <span class=md-ellipsis> Notes Workflow </span> </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> <span class=md-ellipsis> Useful Tools </span> </a> </li> <li class=md-nav__item> <a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/ class=md-nav__link> <span class=md-ellipsis> Thesis Writing </span> </a> </li> <li class=md-nav__item> <a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E4%BF%A1%E6%81%AF%E6%A3%80%E7%B4%A2/ class=md-nav__link> <span class=md-ellipsis> Information Retrieval </span> </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> <span class=md-ellipsis> Book Recommendation </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_6> <label class=md-nav__link for=__nav_6 id=__nav_6_label tabindex=0> <span class=md-ellipsis> Fundamental Mathematics </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_6_label aria-expanded=false> <label class=md-nav__title for=__nav_6> <span class="md-nav__icon md-icon"></span> Fundamental Mathematics </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> <span class=md-ellipsis> MIT18.01/18.02: Calculus </span> </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> <span class=md-ellipsis> MIT18.06: Linear Algebra </span> </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> <span class=md-ellipsis> MIT6.050J: Information theory and Entropy </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7> <label class=md-nav__link for=__nav_7 id=__nav_7_label tabindex=0> <span class=md-ellipsis> Advanced Mathematics </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_7_label aria-expanded=false> <label class=md-nav__title for=__nav_7> <span class="md-nav__icon md-icon"></span> Advanced Mathematics </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> <span class=md-ellipsis> UCB CS70: discrete Math and probability theory </span> </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> <span class=md-ellipsis> UCB CS126: probability theory </span> </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> <span class=md-ellipsis> MIT 6.042J: Mathematics for Computer Science </span> </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> <span class=md-ellipsis> MIT18.330: Introduction to numerical analysis </span> </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> <span class=md-ellipsis> Standford EE364A: Convex Optimization </span> </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> <span class=md-ellipsis> The Information Theory, Pattern Recognition, and Neural Networks </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8> <label class=md-nav__link for=__nav_8 id=__nav_8_label tabindex=0> <span class=md-ellipsis> Fundamental Programming </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_8_label aria-expanded=false> <label class=md-nav__title for=__nav_8> <span class="md-nav__icon md-icon"></span> Fundamental Programming </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> <span class=md-ellipsis> MIT-Missing-Semester </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/DeCal/ class=md-nav__link> <span class=md-ellipsis> Sysadmin DeCal </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_3> <label class=md-nav__link for=__nav_8_3 id=__nav_8_3_label tabindex=0> <span class=md-ellipsis> Python Language </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_3_label aria-expanded=false> <label class=md-nav__title for=__nav_8_3> <span class="md-nav__icon md-icon"></span> Python Language </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/Python/CS61A/ class=md-nav__link> <span class=md-ellipsis> UCB CS61A: Structure and Interpretation of Computer Programs </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Python/CS50P/ class=md-nav__link> <span class=md-ellipsis> CS50P: CS50's Introduction to Programming with Python </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_4> <label class=md-nav__link for=__nav_8_4 id=__nav_8_4_label tabindex=0> <span class=md-ellipsis> C Language </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_4_label aria-expanded=false> <label class=md-nav__title for=__nav_8_4> <span class="md-nav__icon md-icon"></span> C Language </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/C/CS50/ class=md-nav__link> <span class=md-ellipsis> Harvard CS50: This is CS50x </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/C/Duke-Coursera-Intro-C/ class=md-nav__link> <span class=md-ellipsis> Duke University: Introductory C Programming Specialization </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_5> <label class=md-nav__link for=__nav_8_5 id=__nav_8_5_label tabindex=0> <span class=md-ellipsis> C++ Language </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_5_label aria-expanded=false> <label class=md-nav__title for=__nav_8_5> <span class="md-nav__icon md-icon"></span> C++ Language </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/cpp/AUT1400/ class=md-nav__link> <span class=md-ellipsis> AmirKabir University of Technology AP1400-2: Advanced Programming </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/cpp/CS106L/ class=md-nav__link> <span class=md-ellipsis> Stanford CS106L: Standard C++ Programming </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/cpp/CS106B_CS106X/ class=md-nav__link> <span class=md-ellipsis> Stanford CS106B/X </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_6> <label class=md-nav__link for=__nav_8_6 id=__nav_8_6_label tabindex=0> <span class=md-ellipsis> Java Language </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_6_label aria-expanded=false> <label class=md-nav__title for=__nav_8_6> <span class="md-nav__icon md-icon"></span> Java Language </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/Java/MIT%206.092/ class=md-nav__link> <span class=md-ellipsis> MIT 6.092: Introduction To Programming In Java </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_7> <label class=md-nav__link for=__nav_8_7 id=__nav_8_7_label tabindex=0> <span class=md-ellipsis> Rust Language </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_7_label aria-expanded=false> <label class=md-nav__title for=__nav_8_7> <span class="md-nav__icon md-icon"></span> Rust Language </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/Rust/CS110L/ class=md-nav__link> <span class=md-ellipsis> Stanford CS110L: Safety in Systems Programming </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/cs431/ class=md-nav__link> <span class=md-ellipsis> KAIST CS431: Concurrent Programming </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_8_8> <label class=md-nav__link for=__nav_8_8 id=__nav_8_8_label tabindex=0> <span class=md-ellipsis> Functional Programming </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_8_8_label aria-expanded=false> <label class=md-nav__title for=__nav_8_8> <span class="md-nav__icon md-icon"></span> Functional Programming </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/Functional/CS3110/ class=md-nav__link> <span class=md-ellipsis> Cornell CS3110: OCaml Programming Correct + Efficient + Beautiful </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Functional/Haskell-MOOC/ class=md-nav__link> <span class=md-ellipsis> Haskell MOOC </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_9> <label class=md-nav__link for=__nav_9 id=__nav_9_label tabindex=0> <span class=md-ellipsis> Fundamental Electronics </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_9_label aria-expanded=false> <label class=md-nav__title for=__nav_9> <span class="md-nav__icon md-icon"></span> Fundamental Electronics </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> <span class=md-ellipsis> EE16A&B: Designing Information Devices and Systems I&II </span> </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> <span class=md-ellipsis> UCB EE120 : Signal and Systems </span> </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> <span class=md-ellipsis> MIT 6.007 Signals and Systems </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_10> <label class=md-nav__link for=__nav_10 id=__nav_10_label tabindex=0> <span class=md-ellipsis> Data Structures and Algorithms </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_10_label aria-expanded=false> <label class=md-nav__title for=__nav_10> <span class="md-nav__icon md-icon"></span> Data Structures and Algorithms </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> <span class=md-ellipsis> UCB CS61B: Data Structures and Algorithms </span> </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> <span class=md-ellipsis> Coursera: Algorithms I & II </span> </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/6.006/ class=md-nav__link> <span class=md-ellipsis> MIT 6.006: Introduction to Algorithms </span> </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/6.046/ class=md-nav__link> <span class=md-ellipsis> MIT 6.046: Design and Analysis of Algorithms </span> </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> <span class=md-ellipsis> UCB CS170: Efficient Algorithms and Intractable Problems </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_11> <label class=md-nav__link for=__nav_11 id=__nav_11_label tabindex=0> <span class=md-ellipsis> Software Engineering </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_11_label aria-expanded=false> <label class=md-nav__title for=__nav_11> <span class="md-nav__icon md-icon"></span> Software Engineering </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> <span class=md-ellipsis> MIT 6.031: Software Construction </span> </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> <span class=md-ellipsis> UCB CS169: software engineering </span> </a> </li> <li class=md-nav__item> <a href=../%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/17803/ class=md-nav__link> <span class=md-ellipsis> CMU 17-803: Empirical Methods </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_12> <label class=md-nav__link for=__nav_12 id=__nav_12_label tabindex=0> <span class=md-ellipsis> Computer Systems Principles </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_12_label aria-expanded=false> <label class=md-nav__title for=__nav_12> <span class="md-nav__icon md-icon"></span> Computer Systems Principles </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%B3%BB%E7%BB%9F%E5%9F%BA%E7%A1%80/CSAPP/ class=md-nav__link> <span class=md-ellipsis> CMU 15-213: CSAPP </span> </a> </li> <li class=md-nav__item> <a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E5%9F%BA%E7%A1%80/CS110/ class=md-nav__link> <span class=md-ellipsis> Stanford CS110: Principles of Computer Systems </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_13> <label class=md-nav__link for=__nav_13 id=__nav_13_label tabindex=0> <span class=md-ellipsis> Computer Architecture </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_13_label aria-expanded=false> <label class=md-nav__title for=__nav_13> <span class="md-nav__icon md-icon"></span> Computer Architecture </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> <span class=md-ellipsis> Coursera: Nand2Tetris </span> </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> <span class=md-ellipsis> UCB CS61C: Great Ideas in Computer Architecture </span> </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> <span class=md-ellipsis> ETHz: Digital Design and Computer Architecture </span> </a> </li> <li class=md-nav__item> <a href=../%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CA/ class=md-nav__link> <span class=md-ellipsis> ETHz: Computer Architecture </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_14> <label class=md-nav__link for=__nav_14 id=__nav_14_label tabindex=0> <span class=md-ellipsis> Operating Systems </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_14_label aria-expanded=false> <label class=md-nav__title for=__nav_14> <span class="md-nav__icon md-icon"></span> Operating Systems </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> <span class=md-ellipsis> MIT 6.S081: Operating System Engineering </span> </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> <span class=md-ellipsis> UCB CS162: Operating System </span> </a> </li> <li class=md-nav__item> <a href=../%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/ class=md-nav__link> <span class=md-ellipsis> NJU OS: Operating System Design and Implementation </span> </a> </li> <li class=md-nav__item> <a href=../%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/HITOS/ class=md-nav__link> <span class=md-ellipsis> HIT OS: Operating System </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_15> <label class=md-nav__link for=__nav_15 id=__nav_15_label tabindex=0> <span class=md-ellipsis> Distributed Systems </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_15_label aria-expanded=false> <label class=md-nav__title for=__nav_15> <span class="md-nav__icon md-icon"></span> Distributed Systems </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> <span class=md-ellipsis> CMU 15-418/Stanford CS149: Parallel Computing </span> </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> <span class=md-ellipsis> MIT 6.824: Distributed System </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_16> <label class=md-nav__link for=__nav_16 id=__nav_16_label tabindex=0> <span class=md-ellipsis> Computer Security </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_16_label aria-expanded=false> <label class=md-nav__title for=__nav_16> <span class="md-nav__icon md-icon"></span> Computer Security </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> <span class=md-ellipsis> UCB CS161: Computer Security </span> </a> </li> <li class=md-nav__item> <a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.1600/ class=md-nav__link> <span class=md-ellipsis> MIT 6.1600: Foundations of Computer Security </span> </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> <span class=md-ellipsis> MIT 6.858: Computer System Security </span> </a> </li> <li class=md-nav__item> <a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CSE365/ class=md-nav__link> <span class=md-ellipsis> ASU CSE365: Introduction to Cybersecurity </span> </a> </li> <li class=md-nav__item> <a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CSE466/ class=md-nav__link> <span class=md-ellipsis> ASU CSE466: Computer Systems Security </span> </a> </li> <li class=md-nav__item> <a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/SEEDLabs/ class=md-nav__link> <span class=md-ellipsis> SU SEED Labs </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_17> <label class=md-nav__link for=__nav_17 id=__nav_17_label tabindex=0> <span class=md-ellipsis> Computer Networking </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_17_label aria-expanded=false> <label class=md-nav__title for=__nav_17> <span class="md-nav__icon md-icon"></span> Computer Networking </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_ustc/ class=md-nav__link> <span class=md-ellipsis> USTC Computer Networking:A Top-Down Approach </span> </a> </li> <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> <span class=md-ellipsis> Computer Networking: A Top-Down Approach </span> </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> <span class=md-ellipsis> Stanford CS144: Computer Network </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_18> <label class=md-nav__link for=__nav_18 id=__nav_18_label tabindex=0> <span class=md-ellipsis> Database Systems </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_18_label aria-expanded=false> <label class=md-nav__title for=__nav_18> <span class="md-nav__icon md-icon"></span> Database Systems </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> <span class=md-ellipsis> UCB CS186: Introduction to Database System </span> </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> <span class=md-ellipsis> CMU 15-445: Database Systems </span> </a> </li> <li class=md-nav__item> <a href=../%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/ class=md-nav__link> <span class=md-ellipsis> Caltech CS122: Database System Implementation </span> </a> </li> <li class=md-nav__item> <a href=../%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS346/ class=md-nav__link> <span class=md-ellipsis> Stanford CS346: Database System Implementation </span> </a> </li> <li class=md-nav__item> <a href=../%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15799/ class=md-nav__link> <span class=md-ellipsis> CMU 15-799: Special Topics in Database Systems </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_19> <label class=md-nav__link for=__nav_19 id=__nav_19_label tabindex=0> <span class=md-ellipsis> Compilers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_19_label aria-expanded=false> <label class=md-nav__title for=__nav_19> <span class="md-nav__icon md-icon"></span> Compilers </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/PKU-Compilers/ class=md-nav__link> <span class=md-ellipsis> PKU 编译原理实践 </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/ class=md-nav__link> <span class=md-ellipsis> Stanford CS143: Compilers </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/NJU-Compilers/ class=md-nav__link> <span class=md-ellipsis> NJU 编译原理 </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_20> <label class=md-nav__link for=__nav_20 id=__nav_20_label tabindex=0> <span class=md-ellipsis> Programming Language Design and Analysis </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_20_label aria-expanded=false> <label class=md-nav__title for=__nav_20> <span class="md-nav__icon md-icon"></span> Programming Language Design and Analysis </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%88%86%E6%9E%90/CS242/ class=md-nav__link> <span class=md-ellipsis> Stanford CS242: Programming Languages </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%88%86%E6%9E%90/NJU-SoftwareAnalysis/ class=md-nav__link> <span class=md-ellipsis> NJU Software Analysis </span> </a> </li> <li class=md-nav__item> <a href=../%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%88%86%E6%9E%90/PKU-SoftwareAnalysis/ class=md-nav__link> <span class=md-ellipsis> PKU Software Analysis </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_21> <label class=md-nav__link for=__nav_21 id=__nav_21_label tabindex=0> <span class=md-ellipsis> Computer Graphics </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_21_label aria-expanded=false> <label class=md-nav__title for=__nav_21> <span class="md-nav__icon md-icon"></span> Computer Graphics </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> <span class=md-ellipsis> GAMES101 </span> </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> <span class=md-ellipsis> GAMES202 </span> </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> <span class=md-ellipsis> GAMES103 </span> </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> <span class=md-ellipsis> Stanford CS148 </span> </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/15462/ class=md-nav__link> <span class=md-ellipsis> CMU 15-462 </span> </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/USTC%20ComputerGraphics/ class=md-nav__link> <span class=md-ellipsis> USTC CG </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_22> <label class=md-nav__link for=__nav_22 id=__nav_22_label tabindex=0> <span class=md-ellipsis> Web Development </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_22_label aria-expanded=false> <label class=md-nav__title for=__nav_22> <span class="md-nav__icon md-icon"></span> Web Development </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> <span class=md-ellipsis> MIT web development course </span> </a> </li> <li class=md-nav__item> <a href=../Web%E5%BC%80%E5%8F%91/CS142/ class=md-nav__link> <span class=md-ellipsis> Stanford CS142: Web Applications </span> </a> </li> <li class=md-nav__item> <a href=../Web%E5%BC%80%E5%8F%91/fullstackopen/ class=md-nav__link> <span class=md-ellipsis> University of Helsinki: Full Stack open 2022 </span> </a> </li> <li class=md-nav__item> <a href=../Web%E5%BC%80%E5%8F%91/CS571/ class=md-nav__link> <span class=md-ellipsis> CS571 Building UI (React & React Native) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_23> <label class=md-nav__link for=__nav_23 id=__nav_23_label tabindex=0> <span class=md-ellipsis> Data Science </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_23_label aria-expanded=false> <label class=md-nav__title for=__nav_23> <span class="md-nav__icon md-icon"></span> Data Science </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> <span class=md-ellipsis> UCB Data100: Principles and Techniques of Data Science </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_24> <label class=md-nav__link for=__nav_24 id=__nav_24_label tabindex=0> <span class=md-ellipsis> Artificial Intelligence </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_24_label aria-expanded=false> <label class=md-nav__title for=__nav_24> <span class="md-nav__icon md-icon"></span> Artificial Intelligence </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> <span class=md-ellipsis> Harvard CS50's Introduction to AI with Python </span> </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> <span class=md-ellipsis> UCB CS188: Introduction to Artificial Intelligence </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_25> <label class=md-nav__link for=__nav_25 id=__nav_25_label tabindex=0> <span class=md-ellipsis> Machine Learning </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_25_label aria-expanded=false> <label class=md-nav__title for=__nav_25> <span class="md-nav__icon md-icon"></span> Machine Learning </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> <span class=md-ellipsis> Coursera: Machine Learning </span> </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> <span class=md-ellipsis> Stanford CS229: Machine Learning </span> </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> <span class=md-ellipsis> UCB CS189: Introduction to Machine Learning </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_26> <label class=md-nav__link for=__nav_26 id=__nav_26_label tabindex=0> <span class=md-ellipsis> Machine Learning Systems </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_26_label aria-expanded=false> <label class=md-nav__title for=__nav_26> <span class="md-nav__icon md-icon"></span> Machine Learning Systems </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%E7%B3%BB%E7%BB%9F/AICS/ class=md-nav__link> <span class=md-ellipsis> Intelligent Computing Systems </span> </a> </li> <li class=md-nav__item> <a href=../%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/ class=md-nav__link> <span class=md-ellipsis> CMU 10-414/714: Deep Learning Systems </span> </a> </li> <li class=md-nav__item> <a href=../%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/ class=md-nav__link> <span class=md-ellipsis> Machine Learning Compilation </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_27> <label class=md-nav__link for=__nav_27 id=__nav_27_label tabindex=0> <span class=md-ellipsis> Deep Learning </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_27_label aria-expanded=false> <label class=md-nav__title for=__nav_27> <span class="md-nav__icon md-icon"></span> Deep Learning </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/EECS498-007/ class=md-nav__link> <span class=md-ellipsis> UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision </span> </a> </li> <li class=md-nav__item> <a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/ class=md-nav__link> <span class=md-ellipsis> Coursera: Deep Learning </span> </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> <span class=md-ellipsis> NTU Machine Learning </span> </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> <span class=md-ellipsis> Stanford CS231n: CNN for Visual Recognition </span> </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> <span class=md-ellipsis> Stanford CS224n: Natural Language Processing </span> </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> <span class=md-ellipsis> Stanford CS224w: Machine Learning with Graphs </span> </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> <span class=md-ellipsis> UCB CS285: Deep Reinforcement Learning </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_28> <label class=md-nav__link for=__nav_28 id=__nav_28_label tabindex=0> <span class=md-ellipsis> Advanced Machine Learning </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_28_label aria-expanded=false> <label class=md-nav__title for=__nav_28> <span class="md-nav__icon md-icon"></span> Advanced Machine Learning </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> <span class=md-ellipsis> Roadmap </span> </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> <span class=md-ellipsis> CMU 10-708: Probabilistic Graphical Models </span> </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> <span class=md-ellipsis> Columbia STAT 8201: Deep Generative Models </span> </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> <span class=md-ellipsis> U Toronto STA 4273 Winter 2021: Minimizing Expectations </span> </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> <span class=md-ellipsis> Stanford STATS214 / CS229M: Machine Learning Theory </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../%E5%90%8E%E8%AE%B0/ class=md-nav__link> <span class=md-ellipsis> Postscript </span> </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="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#essential-tools class=md-nav__link> <span class=md-ellipsis> Essential Tools </span> </a> </li> <li class=md-nav__item> <a href=#recommended-books class=md-nav__link> <span class=md-ellipsis> Recommended Books </span> </a> </li> <li class=md-nav__item> <a href=#environment-setup class=md-nav__link> <span class=md-ellipsis> Environment Setup </span> </a> <nav class=md-nav aria-label="Environment Setup"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#pc-environment-setup class=md-nav__link> <span class=md-ellipsis> PC Environment Setup </span> </a> </li> <li class=md-nav__item> <a href=#server-side-environment-setup class=md-nav__link> <span class=md-ellipsis> Server-Side Environment Setup </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#course-map class=md-nav__link> <span class=md-ellipsis> Course Map </span> </a> <nav class=md-nav aria-label="Course Map"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#mathematical-foundations class=md-nav__link> <span class=md-ellipsis> Mathematical Foundations </span> </a> <nav class=md-nav aria-label="Mathematical Foundations"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#calculus-and-linear-algebra class=md-nav__link> <span class=md-ellipsis> Calculus and Linear Algebra </span> </a> </li> <li class=md-nav__item> <a href=#introduction-to-information-theory class=md-nav__link> <span class=md-ellipsis> Introduction to Information Theory </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#advanced-mathematics class=md-nav__link> <span class=md-ellipsis> Advanced Mathematics </span> </a> <nav class=md-nav aria-label="Advanced Mathematics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#discrete-mathematics-and-probability-theory class=md-nav__link> <span class=md-ellipsis> Discrete Mathematics and Probability Theory </span> </a> </li> <li class=md-nav__item> <a href=#numerical-analysis class=md-nav__link> <span class=md-ellipsis> Numerical Analysis </span> </a> </li> <li class=md-nav__item> <a href=#differential-equations class=md-nav__link> <span class=md-ellipsis> Differential Equations </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#advanced-mathematical-topics class=md-nav__link> <span class=md-ellipsis> Advanced Mathematical Topics </span> </a> <nav class=md-nav aria-label="Advanced Mathematical Topics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#convex-optimization class=md-nav__link> <span class=md-ellipsis> Convex Optimization </span> </a> </li> <li class=md-nav__item> <a href=#information-theory class=md-nav__link> <span class=md-ellipsis> Information Theory </span> </a> </li> <li class=md-nav__item> <a href=#applied-statistics class=md-nav__link> <span class=md-ellipsis> Applied Statistics </span> </a> </li> <li class=md-nav__item> <a href=#elementary-number-theory class=md-nav__link> <span class=md-ellipsis> Elementary Number Theory </span> </a> </li> <li class=md-nav__item> <a href=#cryptography class=md-nav__link> <span class=md-ellipsis> Cryptography </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#programming-fundamentals class=md-nav__link> <span class=md-ellipsis> Programming Fundamentals </span> </a> <nav class=md-nav aria-label="Programming Fundamentals"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#general class=md-nav__link> <span class=md-ellipsis> General </span> </a> </li> <li class=md-nav__item> <a href=#java class=md-nav__link> <span class=md-ellipsis> Java </span> </a> </li> <li class=md-nav__item> <a href=#python class=md-nav__link> <span class=md-ellipsis> Python </span> </a> </li> <li class=md-nav__item> <a href=#c class=md-nav__link> <span class=md-ellipsis> C++ </span> </a> </li> <li class=md-nav__item> <a href=#rust class=md-nav__link> <span class=md-ellipsis> Rust </span> </a> </li> <li class=md-nav__item> <a href=#ocaml class=md-nav__link> <span class=md-ellipsis> OCaml </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#electronics-fundamentals class=md-nav__link> <span class=md-ellipsis> Electronics Fundamentals </span> </a> <nav class=md-nav aria-label="Electronics Fundamentals"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#basics-of-circuits class=md-nav__link> <span class=md-ellipsis> Basics of Circuits </span> </a> </li> <li class=md-nav__item> <a href=#signals-and-systems class=md-nav__link> <span class=md-ellipsis> Signals and Systems </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#data-structures-and-algorithms class=md-nav__link> <span class=md-ellipsis> Data Structures and Algorithms </span> </a> </li> <li class=md-nav__item> <a href=#software-engineering class=md-nav__link> <span class=md-ellipsis> Software Engineering </span> </a> <nav class=md-nav aria-label="Software Engineering"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#introductory-course class=md-nav__link> <span class=md-ellipsis> Introductory Course </span> </a> </li> <li class=md-nav__item> <a href=#professional-course class=md-nav__link> <span class=md-ellipsis> Professional Course </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#computer-architecture class=md-nav__link> <span class=md-ellipsis> Computer Architecture </span> </a> <nav class=md-nav aria-label="Computer Architecture"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#introductory-course_1 class=md-nav__link> <span class=md-ellipsis> Introductory Course </span> </a> </li> <li class=md-nav__item> <a href=#professional-course_1 class=md-nav__link> <span class=md-ellipsis> Professional Course </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#introduction-to-computer-systems class=md-nav__link> <span class=md-ellipsis> Introduction to Computer Systems </span> </a> </li> <li class=md-nav__item> <a href=#operating-systems class=md-nav__link> <span class=md-ellipsis> Operating Systems </span> </a> </li> <li class=md-nav__item> <a href=#parallel-and-distributed-systems class=md-nav__link> <span class=md-ellipsis> Parallel and Distributed Systems </span> </a> <nav class=md-nav aria-label="Parallel and Distributed Systems"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#parallel-computing class=md-nav__link> <span class=md-ellipsis> Parallel Computing </span> </a> </li> <li class=md-nav__item> <a href=#distributed-systems class=md-nav__link> <span class=md-ellipsis> Distributed Systems </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#system-security class=md-nav__link> <span class=md-ellipsis> System Security </span> </a> <nav class=md-nav aria-label="System Security"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#theoretical-courses class=md-nav__link> <span class=md-ellipsis> Theoretical Courses </span> </a> </li> <li class=md-nav__item> <a href=#practical-courses class=md-nav__link> <span class=md-ellipsis> Practical Courses </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#computer-networks class=md-nav__link> <span class=md-ellipsis> Computer Networks </span> </a> </li> <li class=md-nav__item> <a href=#database-systems class=md-nav__link> <span class=md-ellipsis> Database Systems </span> </a> </li> <li class=md-nav__item> <a href=#compiler-theory class=md-nav__link> <span class=md-ellipsis> Compiler Theory </span> </a> </li> <li class=md-nav__item> <a href=#web-development class=md-nav__link> <span class=md-ellipsis> Web Development </span> </a> <nav class=md-nav aria-label="Web Development"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#two-week-crash-course class=md-nav__link> <span class=md-ellipsis> Two-Week Crash Course </span> </a> </li> <li class=md-nav__item> <a href=#systematic-study-version class=md-nav__link> <span class=md-ellipsis> Systematic Study Version </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#computer-graphics class=md-nav__link> <span class=md-ellipsis> Computer Graphics </span> </a> </li> <li class=md-nav__item> <a href=#data-science class=md-nav__link> <span class=md-ellipsis> Data Science </span> </a> </li> <li class=md-nav__item> <a href=#artificial-intelligence class=md-nav__link> <span class=md-ellipsis> Artificial Intelligence </span> </a> </li> <li class=md-nav__item> <a href=#machine-learning class=md-nav__link> <span class=md-ellipsis> Machine Learning </span> </a> </li> <li class=md-nav__item> <a href=#deep-learning class=md-nav__link> <span class=md-ellipsis> Deep Learning </span> </a> </li> <li class=md-nav__item> <a href=#computer-vision class=md-nav__link> <span class=md-ellipsis> Computer Vision </span> </a> </li> <li class=md-nav__item> <a href=#natural-language-processing class=md-nav__link> <span class=md-ellipsis> Natural Language Processing </span> </a> </li> <li class=md-nav__item> <a href=#graph-neural-networks class=md-nav__link> <span class=md-ellipsis> Graph Neural Networks </span> </a> </li> <li class=md-nav__item> <a href=#reinforcement-learning class=md-nav__link> <span class=md-ellipsis> Reinforcement Learning </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#customize-your-course-map class=md-nav__link> <span class=md-ellipsis> Customize Your Course Map </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1 id=a-reference-guide-for-cs-learning>A Reference Guide for CS Learning</h1> <p>The field of computer science is vast and complex, with a seemingly endless sea of knowledge. Each specialized area can lead to limitless learning if pursued deeply. Therefore, a clear and definite study plan is very important. I've taken some detours in my years of self-study and finally distilled the following content for your reference.</p> <p>Before you start learning, I highly recommend a popular science video series for beginners: <a href=https://www.bilibili.com/video/BV1EW411u7th>Crash Course: Computer Science</a>. In just 8 hours, it vividly and comprehensively covers various aspects of computer science: the history of computers, how computers operate, the important modules that make up a computer, key ideas in computer science, and so on. As its slogan says, <em>Computers are not magic!</em> I hope that after watching this video, everyone will have a holistic perception of computer science and embark on the detailed and in-depth learning content below with interest.</p> <h2 id=essential-tools>Essential Tools</h2> <blockquote> <p>As the saying goes: sharpening your axe will not delay your job of chopping wood. If you are a pure beginner in the world of computers, learning some tools will make you more efficient.</p> </blockquote> <p><strong>Learn to ask questions</strong>: You might be surprised that asking questions is the first one listed? I think in the open-source community, learning to ask questions is a very important ability. It involves two aspects. First, it indirectly cultivates your ability to solve problems independently, as the cycle of forming a question, describing it, getting answers from others, and then understanding the response is quite long. If you expect others to remotely assist you with every trivial issue, then the world of computers might not suit you. Second, if after trying, you still can't solve a problem, you can seek help from the open-source community. But at that point, how to concisely explain your situation and goal to others becomes particularly important. I recommend reading the article <a href=https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md>How To Ask Questions The Smart Way</a>, which not only increases the probability and efficiency of solving your problems but also keeps those who provide answers in the open-source community in a good mood.</p> <p><strong>Learn to be a hacker</strong>: <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/ >MIT-Missing-Semester</a> covers many useful tools for a hacker and provides detailed usage instructions. I strongly recommend beginners to study this course. However, one thing to note is that the course occasionally refers to terms related to the development process. Therefore, it is recommended to study it at least after completing an introductory computer science course.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/ >GFW</a></strong>: For well-known reasons, sites like Google and GitHub are not accessible in mainland China. However, in many cases, Google and StackOverflow can solve 99% of the problems encountered during development. Therefore, learning to use a VPN is almost an essential skill for a mainland CSer. (Considering legal issues, the methods provided in this book are only applicable to users with a Peking University email address).</p> <p><strong>Command Line</strong>: Proficiency in using the command line is often overlooked or considered difficult to master, but in reality, it greatly enhances your flexibility and productivity as an engineer. <a href=https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md>The Art of Command Line</a> is a classic tutorial that started as a question on Quora, but with the contribution of many experts, it has become a top GitHub project with over 100,000 stars, translated into dozens of languages. The tutorial is not long, and I highly recommend everyone to read it repeatedly and internalize it through practice. Also, mastering shell script programming should not be overlooked, and you can refer to this <a href=https://www.shellscript.sh/ >tutorial</a>.</p> <p><strong>IDE (Integrated Development Environment)</strong>: Simply put, it's where you write your code. The importance of an IDE for a programmer goes without saying, but many IDEs are designed for large-scale projects and are quite bulky and overly feature-rich. Nowadays, some lightweight text editors with rich plugin ecosystems can basically meet the needs of daily lightweight programming. My personal favorites are VS Code and Sublime (the former has a very simple plugin configuration, while the latter is a bit more complex but aesthetically pleasing). Of course, for large projects, I would still use slightly heavier IDEs, such as Pycharm (Python), IDEA (Java), etc. (Disclaimer: all IDEs are the best in the world).</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/ >Vim</a></strong>: A command-line editor. Vim has a somewhat steep learning curve, but mastering it, I think, is very necessary because it will greatly improve your development efficiency. Most modern IDEs also support Vim plugins, allowing you to retain the coolness of a geek while enjoying a modern development environment.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Emacs/ >Emacs</a></strong>: A classic editor that stands alongside Vim, with equally high development efficiency and more powerful expandability. It can be configured as a lightweight editor or expanded into a custom IDE, and even more sophisticated tricks.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/ >Git</a></strong>: A version control tool for your project. Git, created by the father of Linux, Linus, is definitely one of the must-have tools for every CS student.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/ >GitHub</a></strong>: A code hosting platform based on Git. The world's largest open-source community and a gathering place for CS experts.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/ >GNU Make</a></strong>: An engineering build tool. Proficiency in GNU Make will help you develop a habit of modularizing your code and familiarize you with the compilation and linking processes of large projects.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/ >CMake</a></strong>: A more powerful build tool than GNU Make, recommended for study after mastering GNU Make.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/ >LaTex</a></strong>: <del>Pretentious</del> Paper typesetting tool.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/ >Docker</a></strong>: A lighter-weight software packaging and deployment tool compared to virtual machines.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/ >Practical Toolkit</a></strong>: In addition to the tools mentioned above that are frequently used in development, I have also collected many practical and interesting free tools, such as download tools, design tools, learning websites, etc.</p> <p><strong><a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/ >Thesis</a></strong>: Tutorial for writing graduation thesis in Word.</p> <h2 id=recommended-books>Recommended Books</h2> <blockquote> <p>I believe a good textbook should be people-oriented, rather than a display of technical jargon. It's certainly important to tell readers "what it is," but a better approach would be for the author to integrate decades of experience in the field into the book and narratively convey to the reader "why it is" and what should be done in the future.</p> </blockquote> <p><a href=../%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/ >Link here</a></p> <h2 id=environment-setup>Environment Setup</h2> <blockquote> <p>What you think of as development — coding frantically in an IDE for hours.</p> <p>Actual development — setting up the environment for several days without starting to code.</p> </blockquote> <h3 id=pc-environment-setup>PC Environment Setup</h3> <p>If you are a Mac user, you're in luck, as this <a href=https://sourabhbajaj.com/mac-setup/ >guide</a> will walk you through setting up the entire development environment. If you are a Windows user, thanks to the efforts of the open-source community, you can enjoy a similar experience with <a href=../%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Scoop/ >Scoop</a>.</p> <p>Additionally, you can refer to an <a href=https://taylover2016.github.io/%E6%96%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%89%8B%E6%8C%87%E5%8D%97%EF%BC%88%E6%96%B0%E6%89%8B%E5%90%91%EF%BC%89/index.html>environment setup guide</a> inspired by <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/ >6.NULL MIT-Missing-Semester</a>, focusing on terminal beautification. It also includes common software sources (such as GitHub, Anaconda, PyPI) for acceleration and replacement, as well as some IDE configuration and activation tutorials.</p> <h3 id=server-side-environment-setup>Server-Side Environment Setup</h3> <p>Server-side operation and maintenance require basic use of Linux (or other Unix-like systems) and fundamental concepts like processes, devices, networks, etc. Beginners can refer to the <a href=https://101.lug.ustc.edu.cn/ >Linux 101</a> online notes compiled by the Linux User Association of the University of Science and Technology of China. If you want to delve deeper into system operation and maintenance, you can refer to the <a href=https://stevens.netmeister.org/615/ >Aspects of System Administration</a> course.</p> <p>Additionally, if you need to learn a specific concept or tool, I recommend a great GitHub project, <a href=https://github.com/Tikam02/DevOps-Guide>DevOps-Guide</a>, which covers a lot of foundational knowledge and tutorials in the administration field, such as Docker, Kubernetes, Linux, CI-CD, GitHub Actions, and more.</p> <h2 id=course-map>Course Map</h2> <blockquote> <p>As mentioned at the beginning of this chapter, this course map is merely a <strong>reference guide</strong> for course planning, from my perspective as an undergraduate nearing graduation. I am acutely aware that I neither have the right nor the capability to preach to others about “how one should learn”. Therefore, if you find any issues with the course categorization and selection below, I fully accept and deeply apologize for them. You can tailor your own course map in the next section <a href=#yourmap>Customize Your Own Course Map</a>.</p> </blockquote> <p>Apart from courses labeled as <em>basic</em> or <em>introductory</em>, there is no explicit sequence in the following categories. As long as you meet the prerequisites for a course, you are free to choose any course according to your needs and interests.</p> <h3 id=mathematical-foundations>Mathematical Foundations</h3> <h4 id=calculus-and-linear-algebra>Calculus and Linear Algebra</h4> <p>As a freshman, mastering calculus and linear algebra is as important as learning to code. This point has been reiterated countless times by predecessors, but I feel compelled to emphasize it again: mastering calculus and linear algebra is really important! You might complain that these subjects are forgotten after exams, but I believe that indicates a lack of deep understanding of their essence. If you find the content taught in class to be obscure, consider referring to MITs <a href=../%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/ >Calculus Course</a> and <a href=../%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/ >18.06: Linear Algebra</a> course notes. For me, they greatly deepened my understanding of the essence of calculus and linear algebra. Also, I highly recommend the maths YouTuber <a href=https://www.youtube.com/c/3blue1brown><strong>3Blue1Brown</strong></a>, whose channel features videos explaining the core of mathematics with vivid animations, offering both depth and breadth of high quality.</p> <h4 id=introduction-to-information-theory>Introduction to Information Theory</h4> <p>For computer science students, gaining some foundational knowledge in information theory early on is beneficial. However, most information theory courses are targeted towards senior or even graduate students, making them quite inaccessible to beginners. MITs <a href=../%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/ >6.050J: Information theory and Entropy</a> is tailored for freshmen, with almost no prerequisites, covering coding, compression, communication, information entropy, and more, which is very interesting.</p> <h3 id=advanced-mathematics>Advanced Mathematics</h3> <h4 id=discrete-mathematics-and-probability-theory>Discrete Mathematics and Probability Theory</h4> <p>Set theory, graph theory, and probability theory are essential tools for algorithm derivation and proof, as well as foundations for more advanced mathematical courses. However, the teaching of these subjects often falls into a rut of being overly theoretical and formalistic, turning classes into mere recitations of theorems and conclusions without helping students grasp the essence of these theories. If theory teaching can be interspersed with examples of algorithm application, students can expand their algorithm knowledge while appreciating the power and charm of theory.</p> <p><a href=../%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/ >UCB CS70: Discrete Math and Probability Theory</a> and <a href=../%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/ >UCB CS126: Probability Theory</a> are UC Berkeleys probability courses. The former covers the basics of discrete mathematics and probability theory, while the latter delves into stochastic processes and more advanced theoretical content. Both emphasize the integration of theory and practice and feature abundant examples of algorithm application, with the latter including numerous Python programming assignments to apply probability theory to real-world problems.</p> <h4 id=numerical-analysis>Numerical Analysis</h4> <p>For computer science students, developing computational thinking is crucial. Modeling and discretizing real-world problems, and simulating and analyzing them on computers, are vital skills. Recently, the <a href=https://julialang.org/ >Julia</a> programming language, developed by MIT, has become popular in the field of numerical computation with its C-like speed and Python-friendly syntax. Many MIT mathematics courses have started using Julia as a teaching tool, presenting complex mathematical theories through clear and intuitive code.</p> <p><a href=https://computationalthinking.mit.edu/Spring21/ >ComputationalThinking</a> is an introductory course in computational thinking offered by MIT. All course materials are open source and accessible on the course website. Using the Julia programming language, the course covers image processing, social science and data science, and climatology modeling, helping students understand algorithms, mathematical modeling, data analysis, interactive design, and graph presentation. The course content, though not difficult, profoundly impressed me with the idea that the allure of science lies not in obscure theories or jargon but in presenting complex concepts through vivid examples and concise, deep language.</p> <p>After completing this experience course, if youre still eager for more, consider MITs <a href=../%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/ >18.330: Introduction to Numerical Analysis</a>. This course also uses Julia for programming assignments but is more challenging and in-depth. It covers floating-point encoding, root finding, linear systems, differential equations, and more, with the main goal of using discrete computer representations to estimate and approximate continuous mathematical concepts. The course instructor has also written an accompanying open-source textbook, <a href=https://fncbook.github.io/fnc/frontmatter.html>Fundamentals of Numerical Computation</a>, which includes abundant Julia code examples and rigorous formula derivations.</p> <p>If youre still not satisfied, MITs graduate course in numerical analysis, <a href=https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm>18.335: Introduction to Numerical Methods</a>, is also available for reference.</p> <h4 id=differential-equations>Differential Equations</h4> <p>Wouldn't it be cool if the motion and development of everything in the world could be described and depicted with equations? Although differential equations are not a mandatory part of any CS curriculum, I believe mastering them provides a new perspective to view the world.</p> <p>Since differential equations often involve complex variable functions, you can refer to <a href=https://ocw.mit.edu/courses/mathematics/18-04-complex-variables-with-applications-spring-2018/ >MIT18.04: Complex Variables Functions</a> course notes to fill in prerequisite knowledge.</p> <p><a href=https://ocw.mit.edu/courses/mathematics/18-03sc-differential-equations-fall-2011/unit-i-first-order-differential-equations/ >MIT18.03: Differential Equations</a> mainly covers the solution of ordinary differential equations, and on this basis, <a href=https://ocw.mit.edu/courses/mathematics/18-152-introduction-to-partial-differential-equations-fall-2011/index.htm>MIT18.152: Partial Differential Equations</a> dives into the modeling and solving of partial differential equations. With the powerful tool of differential equations, you will gain enhanced capabilities in modeling real-world problems and intuitively grasping the essence among various noisy variables.</p> <h3 id=advanced-mathematical-topics>Advanced Mathematical Topics</h3> <p>As a computer science student, I often hear arguments about the uselessness of mathematics. While I neither agree nor have the authority to oppose such views, if everything is forcibly categorized as useful or useless, it indeed becomes quite dull. Therefore, the following advanced mathematics courses, aimed at senior and even graduate students, are available for those interested.</p> <h4 id=convex-optimization>Convex Optimization</h4> <p><a href=../%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/ >Standford EE364A: Convex Optimization</a></p> <h4 id=information-theory>Information Theory</h4> <p><a href=https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-441-information-theory-spring-2016/syllabus/ >MIT6.441: Information Theory</a></p> <h4 id=applied-statistics>Applied Statistics</h4> <p><a href=https://ocw.mit.edu/courses/mathematics/18-443-statistics-for-applications-spring-2015/index.htm>MIT18.650: Statistics for Applications</a></p> <h4 id=elementary-number-theory>Elementary Number Theory</h4> <p><a href=https://ocw.mit.edu/courses/mathematics/18-781-theory-of-numbers-spring-2012/index.htm>MIT18.781: Theory of Numbers</a></p> <h4 id=cryptography>Cryptography</h4> <p><a href=http://crypto.stanford.edu/~dabo/cs255/ >Standford CS255: Cryptography</a></p> <h3 id=programming-fundamentals>Programming Fundamentals</h3> <blockquote> <p>Languages are tools, and you choose the right tool for the right job. Since there's no universally perfect tool, there's no universally perfect language.</p> </blockquote> <h4 id=general>General</h4> <ul> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/ >MIT-Missing-Semester</a></li> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/C/CS50/ >Harvard CS50: This is CS50x</a></li> </ul> <h4 id=java>Java</h4> <ul> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Java/MIT%206.092/ >MIT 6.092: Introduction To Programming In Java</a></li> </ul> <h4 id=python>Python</h4> <ul> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Python/CS50P/ >CS50P: CS50's Introduction to Programming with Python</a></li> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Python/CS61A/ >UCB CS61A: Structure and Interpretation of Computer Programs</a></li> </ul> <h4 id=c>C++</h4> <ul> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/cpp/CS106B_CS106X/ >Stanford CS106B/X: Programming Abstractions</a></li> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/cpp/CS106L/ >Stanford CS106L: Standard C++ Programming</a></li> </ul> <h4 id=rust>Rust</h4> <ul> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/CS110L/ >Stanford CS110L: Safety in Systems Programming</a></li> </ul> <h4 id=ocaml>OCaml</h4> <ul> <li><a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Functional/CS3110/ >Cornell CS3110: OCaml Programming Correct + Efficient + Beautiful</a></li> </ul> <h3 id=electronics-fundamentals>Electronics Fundamentals</h3> <h4 id=basics-of-circuits>Basics of Circuits</h4> <p>For computer science students, understanding basic circuit knowledge and experiencing the entire pipeline from sensor data collection to data analysis and algorithm prediction can be very helpful for future learning and developing computational thinking. <a href=../%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/ >EE16A&amp;B: Designing Information Devices and Systems I&amp;II</a> at UC Berkeley are introductory courses for freshmen in electrical engineering. EE16A focuses on collecting and analyzing data from the real environment through circuits, while EE16B focuses on analyzing these collected data to make predictive actions.</p> <h4 id=signals-and-systems>Signals and Systems</h4> <p>Signals and Systems is a course I find very worthwhile. Initially, I studied it out of curiosity about Fourier Transform, but after completing it, I was amazed at how Fourier Transform provided a new perspective to view the world, just like differential equations, immersing you in the elegance and magic of precisely depicting the world with mathematics.</p> <p><a href=https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-003-signals-and-systems-fall-2011/lecture-videos/lecture-1-signals-and-systems/ >MIT 6.003: Signal and Systems</a> provides all course recordings, written assignments, and answers. You can also check out this course's <a href=../%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/ >ancient version</a>.</p> <p><a href=../%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/ >UCB EE120: Signal and Systems</a> has very well-written notes on Fourier Transform and provides many interesting Python programming assignments to practically apply the theories and algorithms of signals and systems.</p> <h3 id=data-structures-and-algorithms>Data Structures and Algorithms</h3> <p>Algorithms are the core of computer science and the foundation for almost all professional courses. How to abstract real-world problems into algorithmic problems mathematically and solve them under time and memory constraints using appropriate data structures is the eternal theme of algorithm courses. If you are fed up with your teacher's rote teaching, I highly recommend UC Berkeley's <a href=../%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/ >UCB CS61B: Data Structures and Algorithms</a> and Princeton's <a href=../%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/ >Coursera: Algorithms I &amp; II</a>. Both courses are taught in a deep yet simple manner and have rich and interesting programming experiments to integrate theory with knowledge.</p> <p>Both of these courses are based on Java. If you prefer C/C++, you can refer to Stanford's data structure and basic algorithm course <a href=../%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/cpp/CS106B_CS106X/ >Stanford CS106B/X: Programming Abstractions</a>. For those who prefer Python, you can learn MIT's introductory algorithm course <a href=../%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/6.006/ >MIT 6.006: Introduction to Algorithms</a>.</p> <p>For those interested in more advanced algorithms and NP problems, consider UC Berkeley's course on algorithm design and analysis <a href=../%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/ >UCB CS170: Efficient Algorithms and Intractable Problems</a> or MIT's advanced algorithms course <a href=../%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/6.046/ >MIT 6.046: Design and Analysis of Algorithms</a>.</p> <h3 id=software-engineering>Software Engineering</h3> <h4 id=introductory-course>Introductory Course</h4> <p>There is a fundamental difference between “working” code and high-quality industrial code. Therefore, I highly recommend senior students to take <a href=../%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/ >MIT 6.031: Software Construction</a>. Based on Java, this course teaches how to write high-quality code that is <strong>bug-resistant, clear, and easy to maintain and modify</strong> with rich and detailed reading materials and well-designed programming exercises. From macro data structure design to minor details like how to write comments, following these details and experiences summarized by predecessors can greatly benefit your future programming career.</p> <h4 id=professional-course>Professional Course</h4> <p>Of course, if you want to systematically take a software engineering course, I recommend UC Berkeleys <a href=../%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/ >UCB CS169: Software Engineering</a>. However, unlike most software engineering courses, this course does not involve the traditional <strong>design and document</strong> model that emphasizes various class diagrams, flowcharts, and document design. Instead, it adopts the <strong>Agile Development</strong> model, which has become popular in recent years, featuring small team rapid iterations and the <strong>Software as a Service</strong> model using cloud platforms.</p> <h3 id=computer-architecture>Computer Architecture</h3> <h4 id=introductory-course_1>Introductory Course</h4> <p>Since childhood, I've always heard that the world of computers is made of 0s and 1s, which I didn't understand but was deeply impressed by. If you also have this curiosity, consider spending one to two months learning the barrier-free computer course <a href=../%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/ >Coursera: Nand2Tetris</a>. This comprehensive course starts from 0s and 1s, allowing you to build a computer by hand and run a Tetris game on it. It covers compilation, virtual machines, assembly, architecture, digital circuits, logic gates, etc., from top to bottom, from software to hardware. Its difficulty is carefully designed to omit many complex details of modern computers, extracting the most core essence, aiming to make it understandable to everyone. In lower levels, establishing a bird's-eye view of the entire computer system is very beneficial.</p> <h4 id=professional-course_1>Professional Course</h4> <p>Of course, if you want to delve into the complex details of modern computer architecture, you still need to take a university-level course <a href=../%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/ >UCB CS61C: Great Ideas in Computer Architecture</a>. This course emphasizes practice, and you will hand-write assembly to construct neural networks in projects, build a CPU from scratch, and more, all of which will give you a deeper understanding of computer architecture, beyond the monotony of "fetch, decode, execute, memory access, write back."</p> <h3 id=introduction-to-computer-systems>Introduction to Computer Systems</h3> <p>Computer systems are a vast and profound topic. Before delving into a specific area, having a macro conceptual understanding of each field and some general design principles will reinforce core and even philosophical concepts in your subsequent in-depth study, rather than being shackled by complex internal details and various tricks. In my opinion, the key to learning systems is to grasp these core concepts to design and implement your own systems.</p> <p><a href=http://web.mit.edu/6.033/www/ >MIT6.033: System Engineering</a> is MIT's introductory course to systems, covering topics like operating systems, networks, distributed systems, and system security. In addition to the theory, this course also teaches some writing and expression skills, helping you learn how to design, introduce, and analyze your own systems. The accompanying textbook <em>Principles of Computer System Design: An Introduction</em> is also very well written and recommended for reading.</p> <p><a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E5%9F%BA%E7%A1%80/CSAPP/ >CMU 15-213: Introduction to Computer System</a> is CMUs introductory systems course, covering architecture, operating systems, linking, parallelism, networks, etc., with both breadth and depth. The accompanying textbook <em>Computer Systems: A Programmer's Perspective</em> is also of very high quality and strongly recommended for reading.</p> <h3 id=operating-systems>Operating Systems</h3> <blockquote> <p>Theres nothing like writing your own kernel to deepen your understanding of operating systems.</p> </blockquote> <p>Operating systems provide a set of elegant abstractions to virtualize various complex underlying hardware, providing rich functional support for all application software. Understanding the design principles and internal mechanisms of operating systems is greatly beneficial for a programmer who is not satisfied with just being a coder. Out of love for operating systems, I have taken many operating system courses in different colleges, each with its own focus and merits. You can choose based on your interests.</p> <p><a href=../%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/ >MIT 6.S081: Operating System Engineering</a>, offered by the famous PDOS lab at MIT, features 11 projects that modify an elegantly implemented Unix-like operating system xv6. This course made me realize that systems is not about reading PPTs; it's about writing tens of thousands of lines of code.</p> <p><a href=../%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/ >UCB CS162: Operating System</a>, UC Berkeleys operating system course, uses the same Project as Stanford — an educational operating system, Pintos. As the teaching assistant for Peking Universitys 2022 and 2023 Spring Semester Operating Systems Course, I introduced and improved this Project. The course resources are fully open-sourced, with details on <a href=https://pku-os.github.io>the course website</a>.</p> <p><a href=../%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/ >NJU: Operating System Design and Implementation</a>, offered by Professor Yanyan Jiang at Nanjing University, provides an in-depth and accessible explanation of various operating system concepts, combining a unique system perspective with rich code examples. All course content is in Chinese, making it very convenient for students.</p> <p><a href=../%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/HITOS/ >HIT OS: Operating System</a>, taught by Professor Zhijun Li at Harbin Institute of Technology, is a Chinese course on operating systems. Based on the Linux 0.11 source code, the course places great emphasis on code practice, explaining the intricacies of operating systems from the student's perspective.</p> <h3 id=parallel-and-distributed-systems>Parallel and Distributed Systems</h3> <p>In recent years, the most common phrase heard in CS lectures is "Moore's Law is coming to an end." As single-core capabilities reach their limits, multi-core and many-core architectures are becoming increasingly important. The changes in hardware necessitate adaptations and changes in the upper-level programming logic. Writing parallel programs has nearly become a mandatory skill for programmers to fully utilize hardware performance. Meanwhile, the rise of deep learning has brought unprecedented demands on computing power and storage, making the deployment and optimization of large-scale clusters a hot topic.</p> <h4 id=parallel-computing>Parallel Computing</h4> <p><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/ >CMU 15-418/Stanford CS149: Parallel Computing</a></p> <h4 id=distributed-systems>Distributed Systems</h4> <p><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/ >MIT 6.824: Distributed System</a></p> <h3 id=system-security>System Security</h3> <p>Whether you chose computer science because of a youthful dream of becoming a hacker, the reality is that becoming a hacker is a long and difficult journey.</p> <h4 id=theoretical-courses>Theoretical Courses</h4> <p><a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/ >UCB CS161: Computer Security</a> at UC Berkeley covers stack attacks, cryptography, website security, network security, and more.</p> <p><a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CSE365/ >ASU CSE365: Introduction to Cybersecurity</a> at Arizona State University focuses mainly on injections, assembly, and cryptography.</p> <p><a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CSE466/ >ASU CSE466: Computer Systems Security</a> at Arizona State University covers a wide range of topics in system security. It has a high barrier to entry, requiring familiarity with Linux, C, and Python.</p> <p><a href=../%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/SEEDLabs/ >SU SEED Labs</a> at Syracuse University, supported by a $1.3 million grant from the NSF, has developed hands-on experimental exercises (called SEED Labs) for cybersecurity education. The course emphasizes both theoretical teaching and practical exercises, including detailed open-source lectures, video tutorials, textbooks (printed in multiple languages), and a ready-to-use virtual machine and Docker-based attack-defense environment. This project is currently used by 1,050 institutions worldwide and covers a wide range of topics in computer and information security, including software security, network security, web security, operating system security, and mobile app security.</p> <h4 id=practical-courses>Practical Courses</h4> <p>After mastering this theoretical knowledge, it's essential to cultivate and hone these "hacker skills" in practice. <a href=https://ctf-wiki.org/ >CTF competitions</a> are a popular way to comprehensively test your understanding and application of computer knowledge in various fields. Peking University also successfully held the <a href=https://geekgame.pku.edu.cn/ >0th and 1st editions</a>, encouraging participation to improve skills through practice. Here are some resources I use for learning (and relaxing):</p> <ul> <li><a href=https://ctf-wiki.org/ >CTF-wiki</a></li> <li><a href=https://ctf101.org/ >CTF-101</a></li> <li><a href=https://ctf.hacker101.com/ >Hacker-101</a></li> </ul> <h3 id=computer-networks>Computer Networks</h3> <blockquote> <p>Theres nothing like writing your own TCP/IP protocol stack to deepen your understanding of computer networks.</p> </blockquote> <p>The renowned <a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/ >Stanford CS144: Computer Network</a> includes 8 projects that guide you in implementing the entire TCP/IP protocol stack.</p> <p>If you're just looking to understand computer networks theoretically, I recommend the famous networking textbook "A Top-Down Approach" and its accompanying learning resources <a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/ >Computer Networking: A Top-Down Approach</a>.</p> <h3 id=database-systems>Database Systems</h3> <blockquote> <p>Theres nothing like building your own relational database to deepen your understanding of database systems.</p> </blockquote> <p>CMU's famous database course <a href=../%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/ >CMU 15-445: Introduction to Database System</a> guides you through 4 projects to add various functionalities to the educational relational database <a href=https://github.com/cmu-db/bustub>bustub</a>. The experimental evaluation framework is also open-source, making it very suitable for self-learning. The course experiments also use many new features of C++11, offering a great opportunity to strengthen C++ coding skills.</p> <p>Berkeley, as the birthplace of the famous open-source database PostgreSQL, has its own course <a href=../%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/ >UCB CS186: Introduction to Database System</a> where you will implement a relational database in Java that supports SQL concurrent queries, B+ tree indexing, and fault recovery.</p> <h3 id=compiler-theory>Compiler Theory</h3> <blockquote> <p>Theres nothing like writing your own compiler to deepen your understanding of compilers.</p> </blockquote> <p><a href=../%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/ >Stanford CS143: Compilers</a> guides you through the process of writing a compiler.</p> <h3 id=web-development>Web Development</h3> <p>Front-end development is often overlooked in computer science curricula, but mastering these skills has many benefits, such as building your personal website or creating an impressive presentation website for your course projects.</p> <h4 id=two-week-crash-course>Two-Week Crash Course</h4> <p><a href=../Web%E5%BC%80%E5%8F%91/mitweb/ >MIT web development course</a></p> <h4 id=systematic-study-version>Systematic Study Version</h4> <p><a href=../Web%E5%BC%80%E5%8F%91/CS142/ >Stanford CS142: Web Applications</a></p> <h3 id=computer-graphics>Computer Graphics</h3> <ul> <li><a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/ >Stanford CS148</a></li> <li><a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/ >Games101</a></li> <li><a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/ >Games103</a></li> <li><a href=../%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/ >Games202</a></li> </ul> <h3 id=data-science>Data Science</h3> <p>Data science, machine learning, and deep learning are closely related, with a focus on practical application. Berkeley's <a href=../%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/ >UCB Data100: Principles and Techniques of Data Science</a> lets you master various data analysis tools and algorithms through extensive programming exercises. The course guides you through extracting desired results from massive datasets and making predictions about future data or user behavior. For those looking to learn industrial-level data mining and analysis techniques, Stanford's big data mining course <a href=https://web.stanford.edu/class/cs246/ >CS246: Mining Massive Data Sets</a> is an option.</p> <h3 id=artificial-intelligence>Artificial Intelligence</h3> <p>Artificial intelligence has been one of the hottest fields in computer science over the past decade. If you're not content with just hearing about AI advancements in the media and want to delve into the subject, I highly recommend Harvard's renowned CS50 series AI course <a href=../%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/ >Harvard CS50: Introduction to AI with Python</a>. The course is concise and covers several major branches of traditional AI, supplemented with rich and interesting Python programming exercises to reinforce your understanding of AI algorithms. However, the content is somewhat simplified for online learners and doesn't delve into deep mathematical theories. For a more systematic and in-depth study, consider an undergraduate-level course like Berkeley's <a href=../%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/ >UCB CS188: Introduction to Artificial Intelligence</a>. This course's projects feature the classic game "Pac-Man," allowing you to use AI algorithms to play the game, which is very fun.</p> <h3 id=machine-learning>Machine Learning</h3> <p>The most significant recent progress in the field of machine learning is the emergence of deep learning, a branch based on deep neural networks. However, many algorithms based on statistical learning are still widely used in data analysis. If you're new to machine learning and don't want to get bogged down in complex mathematical proofs, start with Andrew Ng's (Enda Wu) <a href=../%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/ >Coursera: Machine Learning</a>. This course is well-known in the field of machine learning, and Enda Wu, with his profound theoretical knowledge and excellent presentation skills, makes many complex algorithms accessible and practical. The accompanying assignments are also of high quality, helping you get started quickly.</p> <p>However, completing this course will only give you a general understanding of the field of machine learning. To truly understand the mathematical principles behind these "magical" algorithms or to engage in related research, you need a more "mathematical" course, such as <a href=../%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/ >Stanford CS229: Machine Learning</a> or <a href=../%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/ >UCB CS189: Introduction to Machine Learning</a>.</p> <h3 id=deep-learning>Deep Learning</h3> <p>The popularity of AlphaGo a few years ago brought deep learning to the public eye, leading many universities to establish related majors. Many other areas of computer science also use deep learning technology for research, so regardless of your field, you will likely encounter some needs related to neural networks and deep learning. For a quick introduction, I again recommend Andrew Ng's (Enda Wu) <a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/ >Coursera: Deep Learning</a>, a top-rated course on Coursera. Additionally, if you find English-language courses challenging, consider Professor Hongyi Li's course <a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/ >National Taiwan University: Machine Learning</a>. Although titled "Machine Learning," this course covers almost all areas of deep learning and is very comprehensive, making it suitable for getting a broad overview of the field. The professor is also very humorous, with frequent witty remarks in class.</p> <p>Due to the rapid development of deep learning, there are now many research branches. For further in-depth study, consider the following representative courses:</p> <h3 id=computer-vision>Computer Vision</h3> <ul> <li><a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/EECS498-007/ >UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision</a></li> <li><a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/ >Stanford CS231n: CNN for Visual Recognition</a></li> </ul> <h3 id=natural-language-processing>Natural Language Processing</h3> <ul> <li><a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/ >Stanford CS224n: Natural Language Processing</a></li> </ul> <h3 id=graph-neural-networks>Graph Neural Networks</h3> <ul> <li><a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/ >Stanford CS224w: Machine Learning with Graphs</a></li> </ul> <h3 id=reinforcement-learning>Reinforcement Learning</h3> <ul> <li><a href=../%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/ >UCB CS285: Deep Reinforcement Learning</a></li> </ul> <h2 id=customize-your-course-map>Customize Your Course Map</h2> <blockquote> <p>Better to teach fishing than to give fish.</p> </blockquote> <p>The course map above inevitably carries strong personal preferences and may not suit everyone. It is more intended to serve as a starting point for exploration. If you want to select your own areas of interest for study, you can refer to the following resources:</p> <ul> <li><a href=https://ocw.mit.edu/ >MIT OpenCourseWare</a>: MIT's open-sharing project for course resources, featuring thousands of courses from various disciplines, including computer science courses numbered 6.xxx.</li> <li><a href=http://student.mit.edu/catalog/m6a.html>MIT CS Course List</a>: List of CS courses at MIT.</li> <li><a href=https://hkn.eecs.berkeley.edu/courseguides>UC Berkeley EECS Course Map</a>: UC Berkeley's EECS curriculum plan, presenting the categories and prerequisites of various courses in a course map format, most of which are included in this book.</li> <li><a href=https://www2.eecs.berkeley.edu/Courses/CS/ >UC Berkeley CS Course List</a>: List of CS courses at UC Berkeley.</li> <li><a href=https://blog.csdn.net/qq_41220023/article/details/81976967>Stanford CS Course List</a>: List of CS courses at Stanford.</li> </ul> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">May 8, 2024</span> </span> </aside> <!-- Insert generated snippet here --> <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_protanopia data-lang=zh-CN data-loading=lazy crossorigin=anonymous async>
</script> <!-- Synchronize Giscus theme with palette --> <script>
var giscus = document.querySelector("script[src*=giscus]")
// Set palette on initial load
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate"
? "dark_protanopia"
: "light_protanopia"
// Instruct Giscus to set theme
giscus.setAttribute("data-theme", theme)
}
// Register event handlers after documented loaded
document.addEventListener("DOMContentLoaded", function() {
var ref = document.querySelector("[data-md-component=palette]")
ref.addEventListener("change", function() {
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate"
? "dark_protanopia"
: "light_protanopia"
// Instruct Giscus to change theme
var frame = document.querySelector(".giscus-frame")
frame.contentWindow.postMessage(
{ giscus: { setConfig: { theme } } },
"https://giscus.app"
)
}
})
})
</script> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top 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 </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-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-social> <a href=https://github.com/pkuflyingpig/cs-self-learning/ target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><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.f886a092.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src=../../assets/javascripts/bundle.d7c377c4.min.js></script> </body> </html>