關於自學計算機專業課程的一點體會
前言
作為一個計算機專業的大學生,深感學校課堂試教育的局限性,從而在大學中的許多課程基本都靠自學。因此對自學計算機專業的課程做以總結。
其實在實際開發中,並不能完全用到那些枯燥抽象的計算機專業課。所以為什麼還要去學它們呢?原因只有一個,讓你在計算機行業能有更長遠的發展,以防止程序員只能吃青春飯的現象。這些專業理論課就如同武俠小說中的內功,而編程語言框架等則都屬於外功招式。試想,一個徒有花拳繡腿的人怎麼可能與一個擁有深厚內功的人抗衡呢。
經過對比,可以發現各個大學計算機專業的核心課程高度一致,這是國際計算機學會 ACM(Association for Computing Machinery) 和 IEEE-CS 聯合工作組發布的 CS2013(計算機科學課程指南2013) 報告,提出的計算機科學知識體的概念。該報告給出了關於計算機科學的十八個知識領域。
而ACM又將對這些知識的掌握程度分為以下三級:
那麼在業餘時間自學計算機專業課程是否可能?完全可以!計算機專業是人類歷史上第一個可以在互聯網上學到到幾乎所有專業知識的專業,在互聯網,可以聽到從本科到研究生層次,從國內重點大學到國外知名高校的幾乎所有的課程,除了一些硬體課程需要必備的設備之外,其他課程只需要一台能上網的電腦就完全足夠了。
學習路線
關於初學者第一門編程語言,比較常見的有這幾種:
這些編程語言的均可以通過書籍與視頻結合的學習方法。關於學習的書籍和視頻網上已經有很多了,這裡就不做贅述。
計算機專業必須掌握的四門數學課程,包括高等數學、離散數學、線性代數、概率論與數理統計。為什麼要學數學?因為具備基本的數學能力是對所有計算機專業人員的基本要求。在實際開發項目中,對程序員的數學功底要求其實並不高,很多框架的底層都有強大的演算法作為支撐,但初級程序員並不需要完全理解這些演算法。對於初級程序員來說,僅僅需要有高中的數學基礎加上一些數據結構的知識就行了。但對於中高級程序員來說,則必須基本良好的數學功底,尤其是需要使用一些特定技術進行開發,建模或者設計相關演算法,例如現今比較流行的人工智慧,它的實現就需要強大的AI演算法——這意味的技術水平的提高,學習領域的深入,所需要的數學功底也是逐漸提高的。
本人以前覺得只要掌握大學中所學的數學就足夠了,然而在深入學習中卻發現大學中所學的數學基礎課程還遠遠不夠用於開發,例如我在學習unity的過程中,經常碰到三維向量,歐拉角與四元數等等,為了理解這些東西,我重新回過頭來學習了一遍計算機圖形學中的3D數學。
國內的大部分數學教材,往往只講相關的法則定理證明等等理論知識,而不會涉及到其發展歷史和具體應用,不強調解決特定問題的思路,文字枯燥,並不適合自學。還有些教材往往寫的過於簡練,比如經常出現「由此可見」,「由此可得」等詞語,本人在自學的過程中對這些詞眼極為頭疼,於是便放棄了使用國內的教材。
參考書籍推薦:
作為大學生,以上科目可以先完整的看一遍教學視頻,配合參考書籍和學校的教程進一步學習,重點還是在學習的過程中多去實踐。在學習理論科目的同時,我們可以學習一些相關的實用技術,如各種流行的開發框架和工具等來加深理解。
後記
上面的課程有些我已經學完了,而有些還在學習過程中。
我喜歡去總結我所經歷的事物,即使人生發生的種種只是過眼雲煙,但我還是希望一些有意義的事能永遠留下。
以上。
※大寒過了幾天,最後的涼涼也結束了
※學問需日日踐行,不會一蹴而就
TAG:全球大搜羅 |