一個不是很瞭解CS(計算機科學)的人,該從哪裡開始自學CS?

趙曉


首先你要清楚,計算機科學是一個十分龐大,分支眾多的學科,想要學下去一定要有著十分濃烈的興趣,過於目的化的去學習反而效果不佳,計算機科學寬泛的來講由硬件和軟件兩部分構成,學習的路徑通常我比較建議先學習硬件,對硬件有些大致的瞭解之後,再去學習軟件,因為軟件是基於硬件來實現的。

【學習階段,過程】而對於硬件的學習,起初你可以培養自己的興趣,可以抓自己的電腦“開刀”,去了解自己的電腦的“內臟”“器官”都是什麼,將這些都搞清楚了,基本上是入門了,因為你自己的電腦就是計算機中設備的通用模板,隨後你去了解手機,路由器等等的會發現和你的電腦結構有些的相似。

隨後可以去了解一些軟件的知識,這個沒有什麼捷徑,就是不斷的去百度,不斷的去了解一些概念,才能夠在心裡有個大致的雛形,往後有能力的可以嘗試學習C語言編程,這對於編程是個很好的入門。

完成以上對於計算機體系的大致瞭解之後,就可以隨之深入學習了,這裡通常要學習操作系統,系統是計算機的腦子,學了這個你就更加的理解,這些稀奇古怪的硬件都是怎麼被連接組合起來的。

通常大學的CS課程安排規劃是,大學計算機基礎——C語言編程——操作系統——數字邏輯電路,模擬電路——數據庫設計等等,以上可能不同學校有先後,但大致都是按照一個逐步深入的過程,其中有了基礎知識之後,便是硬件和軟件穿插著深入學習。

【學習方法】而學習方法,最重要的就是百度,你可以看一些在線入門教程,書籍之類的,但光憑藉那些事不夠的,一定要邊學邊百度,百度自己不理解的地方。如果是大學專業,那就跟隨著培養計劃好好打好基礎,好好學習就是捷徑。有一定的基礎之後就是實踐了,鼓搗自己電腦的階段了,可以是編程,也可以去焊板子(單片機等)。

之前有很長一段時間你可能學習了之後很懵懂,感覺不知道在學些什麼,但學到了一定的階段之後,你會發現看的通透了起來,所有的內容都好像連接起來了,之前不理解的地方也自然而然的理解了,相信到時候你就會沉醉於計算機的魅力。

加油,祝你成功!


小吉小笨雞


哪個行業的平均工資最高?

計算機。

國家統計局的數據顯示,2016 年信息傳輸、軟件和信息技術服務業年平均工資為 122478 元,首超金融行業,並於 2017 年再次奪魁。

在互聯網和人工智能浪潮的推動下,一大批年輕人選擇了 CS(計算機科學) 專業,這裡面還包括各種轉專業的學生。

此前營長也給大家推薦過很多學習資源,但是大多都是單個資源,比較零散。其實,很多讀者需要的是建議,而不僅僅是資源。

特別是對於自學的小夥伴來說,為什麼要學習 CS?應該學習什麼?如何選擇教材或者視頻課程?都是讓人困擾的問題。

現在,營長特意為這些小夥伴準備了一套大餐,希望能幫你釐清方向,消除困惑。

為什麼要學好 CS?

首先,為什麼要學習 CS?

我們知道,任何行業的從業人員的專業水平都是參差不齊的。有人將軟件工程師也分成了兩類:一類是對 CS 這門學科理解透徹,可以勝任各種挑戰性和創新性的工作;另一類則僅僅是對一些高級工具比較熟悉而已。

雖然兩者都自稱為軟件工程師,而且一開始的起薪都差不多,但是第一類工程師顯然有更大的發展空間。

比如 WhatsApp 一天要處理 420 億條信息(2016 年 2 月),但當時 WhatsApp 只有 57 名工程師,要完成這個挑戰靠第二種類型的工程師是不太可能的。

因此,如果你想成為第一種類型的軟件工程師,踏踏實實學好 CS 才是正途。

怎樣學好 CS?

在回答了為什麼要學習 CS 這個問題之後,接下來要怎麼學?

其實 CS 不只是編程,還涉及到很多知識。本文將重點介紹編程、計算機架構、算法和數據結構、數學、操作系統、計算機網絡、數據庫、計算機語言和編譯器、以及分佈式系統。接下來我們一一分析。

編程

大多數的 CS 本科課程都是從介紹計算機編程開始的。營長推薦 Structure and Interpretation of Computer Programs 這本書。

視頻則推薦伯克利大學 Brian Harvey 的 SICP 課程。建議至少學完 SICP 的前三章,並把練習題做完。如果你覺得 SICP 的課程太難,可以選擇 How to Design Programs。



影視頻剪輯短視頻製作


結合我的個人經歷,提一下建議,供參考。

1. 選擇一門編程語言,迅速上手。

如果一開始就看一堆理論知識,很快就會感覺到厭煩,影響對CS的學習興趣。學習一門編程語言,邊學習,邊動手實踐,可以實時看到自己的產出,有助於保持學習積極性。

我是高中才接觸的編程語言,當時是高中的興趣小組,老師教的是Pascal,一種非常古老的語言。也就是從那時起,覺得計算機如此有意思,原來除了Word和PowerPoint以外,還可以寫程序。

上大學前,知道自己被錄取的是CS方向的專業,就在暑假買了一本C語言的書自學,算是開始系統學習一門編程語言,有了一定的編程技術。當時壓根不知道什麼是CS,只以為編程就是CS。到了大學,期末第一門考試是計算機導論,這門課一行代碼都沒寫過,我只得了七十多分,到現在我還沒弄清楚為什麼只得了這麼點兒分。(還好那個學期通過後面的課程把平均成績還是提到了班級第一。)後來大學課程裡還陸續學習了Java、C++、C#語言,不過應用不多,只是在課程Project裡進行簡單使用。

到了研究生階段主要是使用C++,在工程項目及科研實驗代碼中都得到了實踐機會,也瞭解到,編程語言除了基礎的語法外,還有各種高級特性需要學習,有各種庫可以使用,工程配置也有很大的學問。

工作以後,沒有太多寫代碼的機會,我利用業餘時間看了看Python,並且利用Python學習量化交易。我把學習過程記錄在了頭條號的系列文章裡。(https://www.toutiao.com/i6787638553221267975/)

這裡還是推薦選一門類似於Python這樣的腳本語言,便於快速上手。

2. 選擇一個方向,深入研究。

CS的方面太多太多,計算機圖形、圖像處理、自然語言處理、語音識別、大數據等等等等。在對編程有了一定的瞭解後,可以選擇一個自己感興趣的方向或者需要用到的方向,去研究這個方向成熟的第三方庫,去研究這個方向背後的數學、物理等知識。

這時候,可以根據自己選擇的庫的語言,來切換自己的編程語言。學習了一門編程語言後,再切換到另外一門語言就比較容易了。

研究生階段,我的研究方向是計算機圖形學,選擇這個方向也是自己的興趣在於此,成果可以通過圖形圖像進行直觀展示。研究計算機圖形學,就需要學習OpenGL、OpenCV、CUDA等等庫或者框架,還需要學習三維空間變換等數據知識,學習流體力學等物理知識。

方向選擇首要還是按需,有工作推著走,前進得總是會快一些。如果沒有工作壓力,可以按照自己的興趣進行選擇,實現什麼功能能滿足自身的成就感,也是學習前進的有效動力。

3. 查漏補缺,不斷學習

CS涉及的內容太多,學習一些基礎知識,有助於我們對上層應用有進一步的深入理解和認知。

查漏補缺的過程,可以去了解一些基礎CS知識。可以參考考研科目學科專業基礎綜合所包含的四個課程:數據結構、操作系統、計算機組成原理、計算機網絡。

算法,是技術類崗位必考的內容,只能看書、刷題慢慢積累了。

CS技術更新迭代快,要保持不斷學習,避免被時代淘汰。


我最近在做

Code.org

的少兒編程教育視頻(

https://www.ixigua.com/pseries/6803971330308833806_6793624102478283276

),在錄製課程的視頻中,自己也對什麼是算法、什麼是程序等知識有了一個重新梳理的過程。我覺得瀏覽一下

Code.org

還是有很大幫助的,可以瞭解一下國外的教育是如何進行計算機科學啟蒙的。

以上就是我的建議,供參考。

如果您喜歡我的回答,歡迎您留言、點贊、關注,謝謝!


碼農甲


首先掌握一門語言,知道計算機語言大概是如何編寫的。

其次,瞭解計算機的基本原理和操作系統原理,這會讓你從底層掌握計算機運行的過程以及所涉及的各類經典問題。如同步,鎖,線程,進程,內存,文件IO等。

同步的,你可以開始數據結構與算法的學習,操作系統的知識點中會涉及數據結構和算法的部分內容,但還需系統學習,掌握不同數據結構的特點和應用場景,算法層面需要熟悉常見算法的使用場景,對於cs來說更重要的是算法的複雜度分析,這會讓你充分了解不同算法的優劣,以及如何設計出更高效的算法。

然後,是網絡和數據庫,這兩塊也是重頭,裡面的概念有很多,網絡中各層協議規範,數據庫的關係代數理論等。

如果對語言本身深入瞭解,那編譯原理是必須要學的。

對cs來說,更多是掌握基礎理論,而不是具體實現工具。當然,編碼能力還是需要很強的。[贊]


分享到:


相關文章: