本人為 計算機學院 物聯網專業 大二學生,大一已學的專業課程有C語言,數據結構。現在正在上java 課。過段時間web前端和單片機將開課。

已決定跨考,但是也想好好學習自己的專業課,不為考試分數,只為實際應用,希望打下比較好的基礎。

雖然是物聯網專業,但是感覺我們計算機院的所有專業區別不是很大,以後的就業方向莫過於軟體啊啥的,具體的我不是特別清楚。

請本專業(本科為計算機院)的前輩說一下哪些課程比較實用有必要認真學。

我目前已經接觸了三門專業課了,說一下我的大體感覺:

C語言: 老師只教到函數那一章,那個時候我也不想好好學,所以也沒繼續往後學。個人感覺挺討厭C語言的,因為它認平台,一模一樣的代碼在這兒能運行,複製粘貼到別處就不能運行了,這個就很煩。

數據結構: 是我最討厭的吧,C語言老師和數據結構老師沒協調好,C語言後幾章節沒講的恰恰是數據結構要用的,所以上課聽不懂,上機實驗的要求高,再加上老感覺這門課的理論太多,不想學。

java: C語言中我最討厭的東西剛好就是java優化的地方,所以還是挺喜歡java的。願意在這方面花精力。

請不要說每一科都很重要,都要好好學,因為平時有點忙,空閑時間很少,所以我只能認真學幾門最重要的,打打基礎,萬一以後想走這條路了(當然可能性不大),但是也不能學了這個專業四年,到最後連工程都寫不出來啊。


排名第一的是數據結構。只要你畢業干本專業的技術類工作,這門課就100%會用得上。基礎中的基礎。100%的內容都需要好好學習。這門課其實並不難學。

演算法分析:對於絕大多數技術工作來說,這個是必要的。現在哪怕你是作硬體的,都會要求使用程序來實現硬體開發,你至少要知道很多種標準經典演算法。如果你要作系統管理員,至少你要知道一種排序演算法,因為你經常要對結果集進行排序。不過好像基本排序演算法已經都有函數庫了。這個是考驗智商的一門課。如果覺得過於燒腦,而且以後不打算搞系統級軟體開發的話,後面比較難的演算法可以大概了解就好了。

語言類課程嚴格的來說不算專業課,頂多算專業工具,但掌握一門語言還是非常重要的,因為它會幫你建立整個編程的基本概念。

面向對象編程語言,從經典本科科班學過來的人基本上很難上手面向對象軟體開發。大學的時候如果有機會要能接觸一下。就是不知道你們有沒有這門課。

計算機原理(也有叫組成原理的),硬體基礎課,如果將來作系統管理員,或者系統集成類的工作的話,這個是比較重要的。不過該課程後面的很多內容講的太難,沒必要學那麼深,著重把緒論和每一章的第一節學好,要知道每個組成部分是幹啥用的,為啥要它來實現這些功能。

操作系統:和組成原理差不多,著重把緒論和每一章的第一節學好。

網路:同上,著重把緒論和每一章的第一節學好。如果有精力的話可以看看CCNA相關培訓材料,網上搜得到。

資料庫:同上,著重把緒論和每一章的第一節學好。如果有精力的話可以找一些資料庫來自己寫一些程序。

如果你將來想搞晶元研發的話,應該好好學學數字電子技術和數字邏輯。沒這個想法的話就算了。

人工智慧導論:在我印象中人工智慧教材應該都是過時的,我估計他們也都懶得換了。大概了解吧。

計算機專業的課程大多是給那些畢業以後去研發晶元、計算機、操作系統、協議的那些人開的。然並卵,計算機專業畢業生99%都不從事這種工作。

====================================================

回答問題:有些人認為每門課學每章的第一節會不會學的太少。下面評論寫不下。

計算機專業的課程大多是給那些畢業以後去研發晶元、計算機、操作系統、協議的那些人開的。然並卵,計算機專業畢業生99%都不從事這種工作。

如果你不從事晶元研發、計算機研發、操作系統研發、通信協議研發這些工作的話,基本上你畢業後很快就會把你學過的東西還給老師了。這幾門核心專業課在理論上要給你講計算機發展史上出現的該領域的各種解決方案,分析其優缺點。而實際上很多東西都並不適合你的工作。隨便舉幾個例子。計算機組成原理會講大型機的組成原理,小型機組成原理,你碰的著打大型機嗎?真的在銀行工作的人都沒有多少能碰大型機。連我這個在18摸工作十幾年的人,而且曾是專門支持大型機周邊應用中間件的人,都沒碰過大型機。小型機你有可能碰得到,但真的很少,而你的工作中真的用到小型機特有的技術的更是少。課本還會給你講RISC結構和CISC結構,知道就好了,你還真的要去設計CPU嗎?等將來你真的去設計CPU的時候再說吧。再說網路,你知道有物理層、鏈路層、網路層、傳輸層、表示層、會話層、應用層就可以了,甚至表示層和會話層在今天的實際應用中已經完全被應用層取代了。課本可能還會介紹Token Ring,這是一個早些年18摸出的數據鏈路層協議,現在我們大多是用乙太網數據鏈路層協議。如果你真的能深入的了解歷史並鑽研其技術的話,你可能會發現很多人認為Token Ring比乙太網要好,為什麼今天Token Ring被淘汰了呢?市場作的不好而已。這時候你還覺得學習裡面的細節技術有什麼用嗎?

從招聘者角度再舉個例子:華為招聘搞交換機協議開發的人。這些人將來是需要有大量的系統級開發內容的。我畢業的時候就被面試過。面試的技術環節是什麼呢,給你一個大概10行左右的C語言程序,裡面該用指針的地方沒有寫指針操作符,讓你挑錯,你挑出來就過關了。人家都知道你一個剛畢業的大學生哪怕是研究生在真正的工作面前你學的那些東西都是拿不上桌面的。算了吧!

我承認對有些人是有那麼一點點用處的,例如那些註定畢業後要搞計算機本專業縱深領域開發的。對於這些人來說,這些課本的知識深度又遠遠不夠。如果你的目標是為了技術創業的話,你想在系統級軟硬體領域開發出一個超級顛覆性的東西,好吧,你可能就一個專業縱深讀幾十本書並充分了解市場的情況下可以繼續。

我覺得我話有點多了。總之你會發現絕大多數內容是高不成低不就。

計算機專業大學本科課程設置分析


大四狗來答一答。

實用性方面,我覺得可以從「適用於找工作」和「幫助理解生活中的計算機知識」兩個角度來看。你比較關心的應該是前者。

對於找工作來說,個人認為這幾門課比較重要:操作系統、數據結構、演算法。這三門課幾乎是軟體開發程序員所有面試、筆試必考的內容。我不太清楚你的數據結構課講的是啥內容讓你如此討厭,但是像什麼鏈表、棧、隊列、大小堆、樹、各種排序演算法這些還是相當重要的,這門課和演算法也有小部分的重合,是演算法學習的重要基石;演算法課更側重於如何提高程序的效率,一般會和特定的數據結構結合,熟悉數據結構也有助於理解以及編寫很多演算法的實現;至於操作系統,它可以幫你理解你的工作環境、軟體的運行環境等。當然,最重要的是,這些玩意兒去應聘軟體開發程序員大概率是要考的。

除此之外,還有計算機網路、資料庫這些課程,在面試和筆試時也可能會或多或少考到(計網TCP和UDP問的多一點)。各門課程的重要程度視你選擇的具體方向而定。

其實一般來說,互聯網公司招人是分前端、後端、ios或者安卓等方向,而不是籠統的一個軟體開發程序員,你可以根據自己的興趣了解得更詳細一點。如果是前端,那麼框架和計網可能更重要一點;如果是後端或者客戶端開發,那麼上述的東西都比較重要。純粹的軟體開發程序員我(根據同學秋招經驗)猜測應該是給一些公司開發一些內部使用的桌面工具之類的,那種也會對上述方面有要求。

至於開發語言,也是根據自己喜歡的具體方向來選。前端肯定是JS、HTML和CSS比較重要,但是可以和框架一起學;後端的話,C++,JAVA和Python等都有,選一個自己喜歡的好好學即可;android開發的話JAVA比較重要。但是課內的學習基本上都是不夠應聘用的,課外可能還得多花些功夫,並同時學一些重要的框架。

當然,我的上述回答是面向就業時的面試和筆試的。如一些答案所說,你在純做開發的工作過程中可能根本用不到底層的一些演算法啊、數據結構等,框架什麼的輪子早就造好了你直接調用就行了,但是上述的課程是你理解這些框架的基礎。而且最最重要的是......人家面試官要考你這些,不知道的話,好的工作機會可能都拿不到。而且如果會的東西太少,那程序員就也只是一口青春飯了呀。

以上是針對就業方面的,估計你也比較感興趣。如果你以後想深造,那麼離散數學、線性代數、概率論這些課程也同樣值得花一定的時間,具體視你未來研究方向而定。

至於單純從在生活中的實用來看,我覺得操作系統、計算機組成原理、計算機網路這三門課還是挺實用的,學完就能開始自己動手修電腦了(手動滑稽


數據結構

根據你的興趣,可能有用的課有:

1,計算機網路

2,web應用(不包括前端)

3,資料庫

4,軟體開發方法

不推薦:

1,數據結構(你只要學會泛型,就能解決一大半的問題,什麼數組指針通通不需要學)

2,演算法,只要你不刷題,就是屠龍技


說實話,如果是做碼農,那其實是沒有,培訓班的課程實用性比計算機專業課高太多。

如果要往深處做,這些課是有用的。

但初學者最重要的其實是入門,或者說是入開發這個行當。所以其實按照學校教學大綱學,學出來沒吊用,找不到研發崗的。


推薦閱讀:
查看原文 >>
相关文章