色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么要學習計算機科學?計算機科學自學指南

Linux愛好者 ? 來源:lq ? 2018-12-28 17:40 ? 次閱讀

如果你是一名自學工程師或者是一名軟件集訓課程畢業的學生,有些計算機科學基礎課程是你必須要補齊的。幸好,你通過互聯網就能獲得世界頂級的CS(計算機科學)課程。

其實網上有很多學習資源但它們良莠不齊,你需要不是什么“200+免費在線課程”列表而是如下問題的答案:

你應該學習哪門課程?為什么?

每門課程最好的書籍或者視頻,講座是什么?

我寫這篇文章的目的就是嘗試對于這些問題給出的明確答案:

使用建議的書籍或者視頻講座來學習以下的九門科目,最好是書籍和講座都仔細的研究一下,可以不嚴格按照列出的順序來。每一門科目都需要花上100-200小時來研讀,然后在你的職業生涯中對于最熱愛的方向進行反復重溫。

為什么要學習計算機科學

有兩種軟件工程師:一種人對于電腦科學有很好的理解從而去從事挑戰性的、富有創造力的工作。另外一種人僅僅熟悉一些高級工具,對其原理持得過且過的態度。

兩者都叫做軟件工程師,而且兩者在早期的職業生涯中可能領著同樣的薪水。但是第一種工程師,不管他從事的是商業工作,還是突破性的開源工程,都會由于他的技術領導力或者杰出的個人貢獻一點一點成長成一名對于編程更加癡迷而且待遇更高的工程師。

第一種工程師可以通過常規手段或者在職業生涯中不斷學習來加深對于計算機科學的理解深度。第二種工程師通常停留在表面,學習具體的工具或者技巧而不是其中的基礎,當前流行什么技術,他們就僅僅撿起新的技能學習一下。

近些年來,越來越多的人進入軟件領域工作,但是本質上計算機科學的畢業生數量是沒有改變的。第二種工程師的供應過量開始導致他們的就業機會變少而且導致他們離企業中令人感覺充實的工作更遠。不管你是努力要成為第一種工程師或者僅僅是保險起見地想找到更多的工作,學習計算機科學是唯一一種可靠的途徑。

課程指南

編程

大多數大學的計算機編程課程通常以“入門類”計算機的課程開始。這些課程最好是不僅僅針對于初學者,而且對于第一次學習編程,基本概念和編程模型不是很熟悉的人也有所啟發的。

對于這種介紹的內容的我們給出的標準建議是經典的計算機程序的結構與解釋,在網絡上能找到很多這樣的資料,它們可能是電子書或者是MIT的一系列講座視頻。這些講座都很不錯,但是我們的視頻推薦的實際上是伯克利的一門課程:Brian Harvey 的 SICP講座,這個系列的課程比起MIT的講座更精煉而且對于入門者更具有針對性。

我們推薦觀看完至少前三章節的SICP(《計算機程序的構造和解釋》)并且做完相應訓練。額外地,可以在exercism進行一些編程訓練。

如果你覺得SICP太難,我們推薦《程序設計方法(中文版)|How to Design Programs》這本書。如果你覺得它太簡單,我們推薦《Concepts, Techniques, and Models of Computer Programming》這本書。

計算機體系結構

硬件是平臺 – Mike Acton(Insomniac Games的工程總監) (收看他在 CPP 大會上的演講)

https://www.youtube.com/watch?v=rX0ItVEVjHc

計算機結構–有的時候被稱為“計算機系統”或者“計算機組織”–是了解程序外表下計算機運行的第一步。根據我們的經驗,這是自學軟件工程師最容易忽略的地方。

《計算機系統要素》(The Elements of Computing Systems),也被稱為“從與非門到俄羅斯方塊”。這是一本讓你對于計算機中的每一個零件是怎么工作的有一個整體的理解的雄心勃勃的書。每個章節涉及到建立整體系統中一個小的部分,從寫基本的邏輯門到HDL,到CPU匯編語言,一直到完成一個俄羅斯方塊應用程序。

我們推薦閱讀書的前六章節并且完成相關的工程。這會提高你對于計算機結構和運行的軟件之間關系的理解。

這本書的前半部分(和它的全部工程)在Nand2Tetris網站上可以免費獲得。在Coursera課程網站上你也可以找到它們。

為了保證課程簡單并吸引人,Nand2Tetris 舍棄了深度。特別是現代計算機結構中兩個很重要的概念:流水線(pipelining)和內存層級(memory hierarchy),在書中都沒有提及。

當你覺得看Nand2Tetris已經很簡單了,我們下一個建議是Patterson和Hennessy合著的《計算機組成與設計硬件/軟件接口》(Computer Organization and Design)——一本杰出的現代經典書籍。不是書中所有的部分都很重要;我們建議跟隨Berkeley的CS61C 課程——(Great Ideas in Computer Architecture),作為特殊讀物。講座的筆記和實驗環境都是在線的,而且可以在在這個歸檔鏈接回看講座:

https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_

算法和數據結構

只有一個方法是我一直以來廣泛推薦的—編碼前首先要思考 — Richard Hamming

我們根據幾十年的通識來看,熟悉通用的算法和數據結構是計算機科學教育中最重要的方面之一。這是一個訓練一個人解決問題的通用能力的方式,而且這種能力還可以遷移到其他領域的學習。

這個領域有很多優秀的書籍,但是我們最喜歡的是Steven Skiena的《算法設計手冊》(The Algorithm Design Manual)。他顯然喜歡這東西而且也迫不及待地想幫助你學習數據結構和算法。這是令人耳目一新的變化,我們認為這本書相對于被更多人所推薦的Cormen, Leiserson, Rivest & Stein 或者 Sedgewick 的書來說更好。后兩本書有些太過于引經據典,對于想通過閱讀來解決問題的人來說并不是一個好的選擇。

對于那些更喜歡講座視頻的人來說,我們推薦Skiena的講座. 我們也喜歡Tim Roughgarden的課程,在斯坦福的MOOC平臺或者Coursera上面可以獲得。你喜歡 Skiena 還是 Roughgarden 的講課風格就是你的個人喜好問題了。

說到練習,我們傾向于讓學生在Leetcode上面解決問題。LeetCode上面的問題都比較有趣而且有答案和討論。這上面還可以通過解決各大軟件公司廣泛應用的技術問題來幫助你測試你的進步。我們建議解決你學習的時候解決大約隨機100道LeetCode上面的問題。

最后,我們強烈推薦《怎樣解題》這本書,它針對如何解題進行了精彩絕倫和獨特的講解,既適用于數學也適用于電腦科學。

計算機科學領域的數學

如果人們不認為數學是簡單的,那么他們一定沒有體會過人生的艱難 — John von Neumann

在某些方面,計算機科學是應用數學的一個擴展。雖然許多軟件工程師忽略了這一點,我們建議你去學習它。好好學習數學會給你比那些不學習它們的人巨大的競爭優勢。

和CS最相關的數學領域是“離散數學”,離散是連續對立面。是微積分之外的一系列的有趣的應用數學的主題。從大體上說,嘗試學會全部范圍的“離散數學”是沒有意義的。更現實一點的做法是對于邏輯學,組合學和概率學,集合論,圖論和一些數論告知密碼學有一個了解。對于計算機圖像學和機器學習來說,線性代數也是一門值得學習的課程。

我們建議從László Lovász的講座學起. 這一系列開始學習離散數學。Lovász 教授讓學習的內容變得直觀生動,比起拘謹的文字,這更利于你學習。

接下來,我們推薦《Mathematics for Computer Science》, 它是MIT同名課程的講義。講座課程的視頻也是免費的,而且是我們推薦的離散數學的視頻課程。

線性代數,我們建議從Essence of linear algebra系列開始學習,接著是Gilbert Strang的書籍和視頻。

操作系統

《操作系統概念》(Operating System Concepts)(恐龍書)和《現代操作系統》(Modern Operating Systems)是經典的操作系統的書籍。這兩本書的寫作方式都飽受爭議,而且為了鼓勵你去購買新版,這些長達1000頁的書每幾年就會添加一些內容。

《Operating Systems: Three Easy Pieces》這本書是一本比較好的可供選擇的線上免費讀物。我們特別喜歡書的結構和它經典的練習題。

讀完這本書,我們推薦你去探索一種特定的操作系統的設計方式,比如那些書名中有系統名字的書籍,比如 《Lion‘s commentary on Unix》、《The Design and Implementation of the FreeBSD Operating System》,還有Mac OS X Internals.

鞏固你對于操作系統的理解很好的方式是去讀一個小的內核并且添加功能。xv6 是一個不錯的選擇,它是 Unix V6 和 ANSI C 和 X86 的接口,MIT專門有一門課程就是講這個的。OSTEP(之前提到的)這本書有一個 XV6 的實驗附錄,里面都是充滿潛力項目的好點子。

計算機網絡

你不能夠通過凝視水晶球來預見未來。因特網未來會變成什么樣,取決于如今人類如何去塑造它 — Bob Kahn

考慮到很多軟件項目都是基于web服務器和客戶端的,計算機網絡變成計算機科學中一門有實用價值的學科。系統學習過該課程的自學學生發現他們終于理解了圍繞了伴隨它們很多年的術語,概念,協議等等。

關于這個主題我們最推薦的書是:《計算機網絡》(Computer Networking: A Top-Down Approach)。書中的小工程和實驗都很好,值得一做。我們非常喜歡它們提供的Wireshark labs。

對于那些喜歡視頻課程的人,我們推薦斯坦福MOOC平臺上的《Introduction to Computer Networking course》。

學習網絡的好處不僅僅在于做小的實驗而且對于工程來說也有很大的好處。可能涉及到的有:一個HTTP的服務器,一個UDP協議的聊天軟件,一個迷你的 TCP 協議棧,一個代理或者負載平衡器,還有分布式的哈希表等等。

數據庫

對于自學者來說,學習數據庫系統會比學習其他花費更多的時間。這是一個相對較新的(即1970年代后期)的研究領域。比起寫書,許多潛在的杰出教科書作者更愿意去加入或者創辦一家公司。

在這種情況下,我們建議自學者放棄教科書而去學習伯克利的Joe Hellerstein的數據庫課程,看完課程再去閱讀論文。

對于初學者有一篇論文比較推薦的是:《Architecture of a Database System》,它高屋建瓴地講解了關系數據庫管理系統是如果工作的這一問題。它會為你未來的學習提供一個有用的綱要。

《Readings in Database Systems》這本書,又被稱為數據庫紅皮書、是一本Peter Bailis、Joe Hellerstein和Michael Stonebraker編輯地論文集。對于那些理解了CS 186內容的人來說,紅皮書是你的不二之選。

如果你堅持要使用一本引導性的教科書,我們推薦Ramakrishnan 和Gehrke的《數據庫管理系統》(Database Management Systems),對于更優秀的學生,Jim Gray的傳統課程《Transaction Processing: Concepts and Techniques》值得一看,但是我們不建議把它當成入門書。

不編大量的代碼是不能很好的鞏固數據庫的理論的,CS 186的學生往Spark中添加功能,這是一個很有意義的工程。但是我們建議僅僅是從頭寫一個簡單的關系數據庫管理系統。功能可能不是很豐富,但是即使每一個部分都涉及到一些基本功能也很有啟發性。

最后,數據模型是一個數據庫使用中被忽略和沒有被重點學習的方面。我們對于這個課題建議的書籍是:《Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World》

語言和編譯器

Don’t be a boilerplate programmer. Instead, build tools for users and other programmers. Take historical note of textile and steel industries: do you want to build machines and tools, or do you want to operate those machines? — Ras Bodik at the start of his compilers course

大部分程序員學習如何使用一門編程語言,然而大部分的計算機科學家則學習這門語言本身。這給了計算機科學家比起程序員很明顯的優勢。他們的知識能夠更好的泛化,他們能比簡簡單單地掌握一門語言的更加深入和快速的理解一門新語言的操作。

經典的教科書《編譯原理 技術與工具》(Compilers: Principles, Techniques & Tools)通常又被稱為“龍書”。不幸的是,這本書并不適合自學者,它比較適合教師從中選出1-2個章節并在課堂上講授。這本書是有必要看的,你可以挑選里面的主題,最好再有個師傅指導你。

如果你選擇在自學中使用龍書,我們推薦你一系列門視頻講座,然后再沉浸在對于龍書的研究中。我們推薦的在線課程是:Alex Aiken 的講座,你可以在斯坦福大學的幕課平臺上觀看。

也有可以替代龍書的教材:Terence Parr寫的《編程語言實現模式》(Language Implementation Patterns),它更適合那些工作中使用類似特定領域語言的小眾語言的有經驗的編程者,它顯得更加實用。當然,為了達到這個目的它也刪去了一些有價值的理論。

對于工程實踐,我們推薦你寫一個編譯器,你可以選擇像COOL這種簡單的教學語言或者你感興趣的一門語言。如果你覺得太難,你可以參考Make a Lisp,你可以參考它作為開始。

分布式系統

計算機的數量增長了,它們的分布也更廣了。企業之前會購買越來越大型的主機,但是現在大家更傾向于在很多機器上分布式的運行多個小型的應用程序。分布式系統研究的就是這樣的技術,這一技術變得越來越重要了。

我們建議的自學教科書是 Maarten van Steen 和 Andrew Tanenbaum 的《Distributed Systems, 3rd Edition》。針對于之前的版本做了很大的改進,而且作者慷慨地把書放在了網上共享。由于分布式計算是一門變化很快的領域,所以沒有教科書可以很好的涵蓋所有的內容。但是Maarten van Steen的書是我們讀過的所有書中最好的書。

研究生在線課程MIT’s 6.824也是一個不錯的選擇,但可惜視頻中的音質不太好,而且不清楚這些視頻是不是都被授權過。

盡管有參考書或者其它的資源,但學習分布式系統是絕對要讀論文的。鏈接中有一個很好的清單,而且我們十分推薦你從Papers We Love上面下載論文到本地學習

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 互聯網
    +關注

    關注

    54

    文章

    11184

    瀏覽量

    103828
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93965
  • 計算機科學
    +關注

    關注

    1

    文章

    144

    瀏覽量

    11398

原文標題:計算機科學自學指南

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    工業中使用哪種計算機

    在工業環境中,工控機被廣泛使用。這些計算機的設計可承受極端溫度、灰塵和振動等惡劣條件。它們比標準消費類計算機更耐用、更可靠。工業計算機可控制機器、監控流程并實時收集數據。其堅固的結構和專業功能
    的頭像 發表于 11-29 14:07 ?223次閱讀
    工業中使用哪種<b class='flag-5'>計算機</b>?

    量子計算機與普通計算機工作原理的區別

    ? 本文介紹了量子計算機與普通計算機工作原理的區別。 量子計算是一個新興的研究領域,科學家們利用量子力學,制造出具有革命性能力的計算機。雖然
    的頭像 發表于 11-24 11:00 ?487次閱讀
    量子<b class='flag-5'>計算機</b>與普通<b class='flag-5'>計算機</b>工作原理的區別

    計算機接口位于什么之間

    計算機接口是計算機硬件和軟件之間、計算機與外部設備之間以及計算機各部件之間傳輸數據、控制信息和狀態信息的硬件設備和軟件程序。它在計算機系統中
    的頭像 發表于 10-14 14:02 ?545次閱讀

    計算機的內存容量有什么作用

    計算機的內存容量,作為一個核心概念,在計算機科學、信息技術以及日常使用中扮演著至關重要的角色。它不僅直接關系到計算機處理數據的能力,還影響著用戶體驗、系統性能以及多任務處理的效率。在深
    的頭像 發表于 09-10 14:47 ?1245次閱讀

    簡述計算機總線的分類

    計算機總線作為計算機系統中連接各個功能部件的公共通信干線,其結構和分類對于理解計算機硬件系統的工作原理至關重要。以下是對計算機總線結構和分類的詳細闡述,內容將涵蓋總線的基本概念、內部結
    的頭像 發表于 08-26 16:23 ?2552次閱讀

    晶體管計算機和電子管計算機有什么區別

    晶體管計算機和電子管計算機作為計算機發展史上的兩個重要階段,它們在多個方面存在顯著的區別。以下是對這兩類計算機在硬件、性能、應用以及技術發展等方面區別的詳細闡述。
    的頭像 發表于 08-23 15:28 ?2184次閱讀

    借助NVIDIA超級計算機加速量子計算發展

    科學期刊《自然》(Nature)本月早些時候發表了一項研究,通過使用 NVIDIA 驅動的超級計算機,驗證了量子計算的商業化途徑。
    的頭像 發表于 07-25 09:55 ?577次閱讀

    計算機視覺與人工智能的關系是什么

    引言 計算機視覺是一門研究如何使計算機能夠理解和解釋視覺信息的學科。它涉及到圖像處理、模式識別、機器學習等多個領域的知識。人工智能則是研究如何使計算機具有智能行為的學科,包括感知、
    的頭像 發表于 07-09 09:25 ?752次閱讀

    計算機視覺和圖像處理的區別和聯系

    計算機視覺和圖像處理是兩個密切相關但又有明顯區別的領域。 1. 基本概念 1.1 計算機視覺 計算機視覺是一門研究如何使計算機能夠理解和解釋視覺信息的
    的頭像 發表于 07-09 09:16 ?1450次閱讀

    深度學習計算機視覺領域的應用

    隨著人工智能技術的飛速發展,深度學習作為其中的核心技術之一,已經在計算機視覺領域取得了顯著的成果。計算機視覺,作為計算機科學的一個重要分支,
    的頭像 發表于 07-01 11:38 ?970次閱讀

    工業控制計算機與普通個人計算機相比有何區別?

    引言 隨著科技的不斷發展,計算機在各個領域的應用越來越廣泛。在眾多計算機類型中,工業控制計算機和普通個人計算機是兩種常見的計算機。盡管它們在
    的頭像 發表于 06-11 10:45 ?1075次閱讀

    計算機視覺的主要研究方向

    計算機視覺(Computer Vision, CV)作為人工智能領域的一個重要分支,致力于使計算機能夠像人眼一樣理解和解釋圖像和視頻中的信息。隨著深度學習、大數據等技術的快速發展,計算機
    的頭像 發表于 06-06 17:17 ?1113次閱讀

    工業計算機與普通計算機的區別

    在信息化和自動化日益發展的今天,計算機已經成為了我們日常生活和工作中不可或缺的工具。然而,在計算機領域中,工業計算機和普通計算機雖然都具備基本的計算
    的頭像 發表于 06-06 16:45 ?1603次閱讀

    【量子計算機重構未來 | 閱讀體驗】+量子計算機的原理究竟是什么以及有哪些應用

    本書內容從目錄可以看出本書主要是兩部分內容,一部分介紹量子計算機原理,一部分介紹其應用。 其實個人也是抱著對這兩個問題的興趣來看的。 究竟什么是量子計算機相信很多讀者都是抱著這個疑問
    發表于 03-11 12:50

    【量子計算機重構未來 | 閱讀體驗】+ 初識量子計算機

    欣喜收到《量子計算機——重構未來》一書,感謝電子發燒友論壇提供了一個讓我了解量子計算機的機會! 自己對電子計算機有點了解,但對量子計算機真是一無所知,只是聽說過量子糾纏、超快的運算速
    發表于 03-05 17:37
    主站蜘蛛池模板: 九九热这里只有国产精品 | 好男人的视频在线观看 | 久久精品亚洲AV高清网站性色 | 中文字幕午夜乱理片 | 午夜免费福利小电影 | 诱受H嗯啊巨肉各种play | 久久理论片迅播影院一级 | 亚洲色图激情小说 | 男人网站在线观看 | 无限资源在线观看完整版免费下载 | G0GO人体大尺香蕉 | 日本熟妇多毛XXXXX视频 | 亚洲精品蜜桃AV久久久 | 欧美性FREE玩弄少妇 | 国语自产二区高清国语自产拍 | 国产成人精品视频播放 | 快播dvd吧| 伊人久久综合 | 18岁男人女人插孔 | 性生生活大片又黄又 | 日韩精品亚洲专区在线电影不卡 | 老熟女毛茸茸浓毛 | 亚洲444777KKK在线观看 | 暖暖 免费 高清 日本视频大全 | 伊人色综合久久大香 | 肉肉高潮液体高干文H | 中文字幕在线不卡精品视频99 | 亚洲中久无码永久在线 | 亚洲色图在线观看视频 | 用快播看av的网站 | 十分钟免费观看高清视频大全 | 福利啪啪吧 | 吃奶吸咪咪动态图 | 伊人久久大香线蕉综合亚洲 | 免费视频xxx | 精品视频久久久久 | 国产精品久久久久久AV免费不卡 | 日日干夜夜艹 | 男人有噶坏 | 亚洲成A人片在线观看中文L | 亚洲AV国产精品无码精 |