如果想系統地學習計算機專業課程,看斯坦福大學計算機科學類公開課可以嗎?具體學習的順序應該是怎樣的?
本人是非計算機學院的學生,想好好學下計算機類課程,而現在也有斯坦福公開課這個很好的平台,想通過其進行學習,希望得到指導
如果是想以專業學生的方式學習,光看在線課程是不夠的,因為在線課程基本上只有講義,而計算機有是一個特別需要實際操作的專業,看看視頻完全不解決問題。很多課程在線下有學校為課程開發的作業,比如本科時候有一節入門的計算機系統課,一學期一共有6次作業,每個都是有助教寫好的作業框架,然後學生完成。這些練習其實是相當主要的內容,以至於很多課程把期末打分全都基於作業完成度。不過很多人不是CS科班也一樣可以寫好程序。所以不知道樓主是像學寫程序,還是真的想把計算機當成一個學科來學習。
簡單介紹一下科班CS的體系,一般都是按這個流程走的。我沒有引用具體課程的名字,因為每個學校的叫法都不太一樣,但是內容大同小異。以下只提到了計算機的專業課,但是一般學校都是要求同時修一些其他專業的課程,包括數學,科學和寫作一類。
大一
基本編程課:講一講變數,條件判斷,循環,數組,排序一類的基礎內容,作為完全沒編程基礎的人上的。這類課程一般會通過一些有趣的實際問題來激發學生的興趣。函數編程課程:讓學生熟悉函數式編程並能證明一些相關屬性。大二
系統編程入門:介紹一些比較底層的系統原理,比如內存,緩存,位運算,程序優化,多線程等等。屬於CS的一道坎,過了你就可以繼續學CS了,過不了還是洗洗睡吧。
計算和數學理論課:內容很雜的數學加理論課,包括排列組合,自動機,加密,多項式,概率,圖論等等。數據結構和演算法:講一些常用的數據結構和演算法。大三
高級演算法課:也是講演算法,但是會涉及到很多演算法分析的內容。操作系統:操作系統的原理和實現,一般會實際實現一個操作系統,內容涉及虛擬內存,驅動,進程調度等等。
邏輯課:程序語言相關的理論課。這個階段就有大量選修課可以上,包括計算機圖形,程序語言,系統,機器學習,自然語言,機器人,視覺,網路等等。
大四
繼續選修。每節課基一般都有大量的作業作為練習,因為實際操作非常非常重要。
以上是CS科班的課程,但是如果樓主是想學寫程序,遠不用這麼費勁。CS很多課程的設計其實是在讓學生修鍊內功,以至於可以處理大量不同類型的問題,並且畢業後有良好的繼續學習的基礎。如果樓主想純實用的話,可以先從自己要解決的問題入手學習,完全不用理會科班的體系。首先,得會一項編程語言 最好是c其次,可以就演算法、操作系統、計算機網路、資料庫等深入學習,最好有不錯的數學功底
複次,深入學習演算法,做點ACM題目,刷點TC、codeforce絕對是有益無害
最後,能跟著牛人學習一月大於你一年的摸索目前網上的各大公開課平台的課程都是非常零散的,不成體系的。
就個人興趣而言的學習可以差不多滿足,但想要系統的學習基本沒戲。
目前網路上也有一些粗糙的所謂的課程體系,但基本上只是幾門課程凌亂的堆疊罷了。導致這個現象大概有如下的幾個原因:
1、沒有一個統一的課程開發團隊
目前網路上的公開課基本上是以個人,或者學校的某個教研室為單位開發的,注重的是課程的特色,而不是系統的培養。基本上是誰有什麼拿什麼,而不會考慮別人缺什麼我來補什麼。可以說這些課程開發團隊是站在自身的利益角度出發去開發課程的,而不是站在學習者的角度去開發課程的,而且彼此之間是競爭關係,而不是合作關係。
2、在家自學要比在校學習更困難,網路公開課的開發者要有比擬世界一流大學教授的實力,並且還需要投入更多的精力才行。
因為自學有一個很重要的問題在於不知道學到什麼程度。因此自學的課程目標導向要非常明確,需要明確到什麼程度?要打破單門課程的局限性。此門課程的哪些知識點是作為其他哪些課程哪些知識點的基礎,內在的關聯是如何的。只有如此明確了學習路徑之後,學生才能在獨自學習的情況下克服重重障礙學習下去。而現在網路上的公開課可以說基本是沒有明確目標的,一套課程放上來,學生根本不知道我需要通過這門課程學到什麼東西。更不要說課程之間的關聯,遞進了。3、網路上這些公開課的提供者的目的不是為了便於學習者學習一切圍繞利益!斯坦福的課程我也看過了,很多關鍵信息是需要StudentID登錄才能看的。說白了想白看,沒門。mit 的公開課還是比較有水平的,可以看看
如果你只是想學編程,找個公開課聽聽,然後多練習就好了。
推薦閱讀:
※為什麼很多理工科出身的優秀的學生最終選擇做諮詢或金融?工作幾年後對當時的選擇是否感到一絲遺憾?
※用kali入門linux是一種什麼體驗?
※電腦怎樣執行編程語言的?
※學計算機科學與技術電腦需要裝什麼東西?
※知乎上面有哪些計算機科學與軟體工程方面值得一看的問答?
TAG:開放課程 | 計算機科學 | 網易公開課 | 優達學城Udacity | Coursera |